403Webshell
Server IP : 74.208.236.16  /  Your IP : 216.73.217.15
Web Server : Apache
System : Linux info 3.0 #1337 SMP Tue Jan 01 00:00:00 CEST 2000 all GNU/Linux
User : u102440577 ( 7172810)
PHP Version : 8.4.26
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /kunden/lib/python3/dist-packages/mercurial/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /kunden/lib/python3/dist-packages/mercurial/__pycache__/revset.cpython-313.pyc
�

6�hge�	��SSKJr SSKrSSKrSSKrSSKrSSKJr SSKJ	r	J
r
Jr SSKJ
r
JrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJ r J!r!J"r#J$r$ SSK%J&r&J'r'J(r( \RRr)\RTr*\RVr+\RXr,\RZr-\R\r.\R^r/\R`r0\!Rbr1\!Rdr2\!Rfr3\!Rhr4\
\4r5Sr6S	r7S
r8\74Sjr9Sr:S
r;Sr<Sr=Sr>Sr?Sr@SrASrBSrCSrDSrESrFSrGSrHSrISrJSrKSrLSrMS rNS!rOS"rPS#rQS$rRS%rSS&rT\R�rU\V"5rW\R�"5rY\Y"S'5S(5rZ\Y"S)5S*5r[\Y"S+S,S-S.9S/5r\\Y"S0S,S1S.9S25r]GSS4jr^\Y"S5S,S69S75r_\Y"S8S,S69S95r`S:raS;rb\Y"S<S,S=S.9S>5rc\Y"S?S,S69S@5rd\Y"SAS,S69SB5re\Y"SCS,S69SD5rf\Y"SES,S=S.9SF5rg\Y"SGS,S69SH5rh\Y"SIS,S69SJ5riSKrjSLrk\Y"SMS,S69SN5rl\Y"SOS,S=S.9SP5rm\Y"SQS,S69SR5rn\Y"SSS,S69ST5ro\Y"SUS,S69SV5rp\Y"SWS,S69SX5rq\Y"SYSZS[9S\5rr\Y"S]S,S69S^5rs\Y"S_S,S=S.9S`5rt\Y"SaS,S=S.9Sb5ruGSScjrv\Y"SdS,S69Se5rw\Y"SfS,S69Sg5rx\Y"ShS,S=S.9Si5ry\Y"SjSkS[9Sl5rz\Y"SmS,S69Sn5r{\Y"SoS,S,Sp9Sq5r|\Y"SrS3SZS.9Ss5r}\Y"StS,S69Su5r~\Y"SvS,S69Sw5r\Y"SxS,S69Sy5r�\Y"SzS,S,SS{9S|5r�GSS}jr�\Y"S~S,S69S5r�\Y"S�S,S69S�5r�\Y"S�S,S69S�5r�\Y"S�5S�5r�\Y"S�S,S69S�5r�\Y"S�S=S[9S�5r\Y"S�S,S69S�5r�\Y"S�S,S=S.9S�5r�\Y"S�S,S69S�5r�\Y"S�S,S,Sp9S�5r�\Y"S�S,S69S�5r�\Y"S�S,S=S.9S�5r�\Y"S�S,S,SS{9S�5r�\Y"S�S,S,Sp9S�5r�\Y"S�S,S69S�5r�\Y"S�S,S69S�5r�\Y"S�S,S69S�5r�\Y"S�S,S69S�5r�\Y"S�S,S-S.9S�5r�\Y"S�5S�5r�S�r�\Y"S�S,S69S�5r�\Y"S�S,S69S�5r�\Y"S�S,S69S�5r\Y"S�S,S69S�5r�\Y"S�S,S69S�5r�\Y"S�S3S=S.9S�5r�\Y"S�S,S69S�5r�\Y"S�S,S69S�5r�S�r�\Y"S�S,S69S�5r�S�r�\Y"S�S,S69S�5r�\Y"S�S,S69S�5r�\Y"S�S,S69S�5r�\Y"S�S,S69S�5r�\Y"S�S,S69S�5r"S�r�\Y"S�S,S,Sp9S�5r�\Y"S�S,S69S�5r�\Y"S�S,S69S�5r�\Y"S�S,S69S�5r�\Y"S�S3S69S�5r�\Y"S�S,S-S.9S�5r�\Y"S�S,S69S�5r�\Y"S�S,S69S�5r�\Y"S�S,S,Sp9S�5rX\Y"S�S,S69S�5r�\Y"S�S,S,SS{9S�5r�\Y"S�S,S69S�5r�S�r�\�*S-
r�\4S�jr�\ GRhS�S�S�S�S�\ GRj\�S�.r�S�r�\Y"S�S,S,S=S{9S�5r�\Y"S�5S�5r�S�r�\Y"S�S,S69S�5r�GSS�jr�\Y"S�S,S69S�5r�\Y"S�S,S69S�5r�\Y"S�S,S69S�5r�\Y"S�S,S69S�5r�\Y"S�S,S=S.9S�5r�\Y"S�S,SS.9S�5r�S�r�\Y"S�S,S,Sp9S�5r�S�r�\Y"S�S,S,SS{9GS5r�GSr�\Y"GSS,S,Sp9GS5r�0GS\@_GS\A_GS\B_GS\C_GS\E_GS	\<_GS
\<_GS\F_GS\G_GS
\J_GS\K_GS\H_GS\L_GS\P_GS\Q_GS\R_GS\S_\T\b\�\�\=\>GS.Er�\N\NGS.r�\O\OGS.r�GSr�GSGSjrGS GSjr�GSr�GSr�\�"SS\Y5 \UGR�5r�g(!�)�annotationsN�)�_)�bin�nullrev�wdirrev)�dagop�destutil�diffutil�encoding�error�grep�hbisect�match�obsolete�obsutil�pathutil�phases�pycompat�	registrar�repoview�
revsetlang�scmutil�smartset�stack�util)�dateutil�
stringutil�urlutilsanysdefine�followc��U(d[R"[S55e[US"X/USSQ7SU06$)Nsmissing argumentrr�order)r
�
ParseErrorr�methods��repo�subset�xr"s    �2/usr/lib/python3/dist-packages/mercurial/revset.py�getsetr*ps?������q�!4�5�6�6��1�Q�4�=��;��!�"��;�U�;�;�c��XR5nSH nX2;dM
XUR5s $ g![Ra M<f=f)N)�sourcestransplant_sources
rebase_source)�extra�revr
�RepoLookupError)r&�rr.�labels    r)�
_getrevsourcer3vsY���G�M�M�O�E�D���>�
��%�L�)�-�-�/�/�E����(�(�
��
�s�:�A�Ac�^�[[R"[RU55$�N)�sortedr�rapply�maybebytestr)�xss r)�_sortedbr:�s���(�/�/�(�"7�"7��<�=�=r+c��U(d[R"[S55e[R"[R
"X55nX!;dU[;a![U[5(a[U/5$[5$)Ns$empty string is not a valid revision)
r
r#rr�intrev�	revsymbol�_virtualrevs�
isinstance�fullreposet�basesetr%s    r)�	stringsetrB�sa������q�!H�I�J�J����w�(�(��1�2�A��{�a�<�'�J�v�{�,K�,K���s�|���9�r+c�&�U[:XaX-$X!-$)z1argument is already a smartset, use that directly)�followorderr%s    r)�rawsmartsetrE�s������z���z�r+c�<�[X5nU[:XaX-$XA-$)z2argument is a list of nodeid, resolve and use them)�_ordered_node_setrD)r&r'r(r"�nodess     r)�raw_node_setrI�s$���d�&�E�����~���~�r+c��U(d
[5$URRRn[UVs/sH
o2"U5PM sn5$s snfr5)rA�	changelog�indexr/)r&rH�to_revr1s    r)rGrG�sC����y��
�^�^�
!�
!�
%�
%�F��u�-�u�!�F�1�I�u�-�.�.��-s�Ac���[U[U5U5n[U[U5U5nU(aU(d
[5$[XUR	5UR5U5$r5)r*r@rA�
_makerangeset�first�last)r&r'r(�yr"�m�ns       r)�rangesetrU�sR���t�[��&��*�A��t�[��&��*�A��A��y����q�w�w�y�!�&�&�(�E�B�Br+c�X�Ube[XSURR5U5$�Nr)rOrK�tiprevr%s    r)�rangeallrY�s*���9��9���q�$�.�.�*?�*?�*A�5�I�Ir+c��[U[U5U5nU(d
[5$[XSUR	5U5$rW)r*r@rArOrQ)r&r'rRr"rTs     r)�rangeprer[�s7���t�[��&��*�A���y����q�!�&�&�(�E�:�:r+c��[U[U5U5nU(d
[5$[XUR	5UR
R
5U5$r5)r*r@rArOrPrKrX)r&r'r(r"rSs     r)�	rangepostr]�sI���t�[��&��*�A���y����a�g�g�i����!6�!6�!8�%��r+c�j�X#:Xa
[U/5nO�U[:Xa#[X[U55[U/5-nOcU[:Xa5[U/5[XRR5US-
5-nO$X#:a[XUS-5nO[XUS-
5nU[:XaXQ-$X-$�Nr)rAr�spanset�lenrKrX�defineorder)r&r'rSrTr"r1s      r)rOrO�s����v��Q�C�L��	
�g���D�S��Y�'�'�1�#�,�6��	
�g���Q�C�L�7�4���)>�)>�)@�!�a�%�H�H��	
���D�Q��U�#���D�Q��U�#������z���z�r+c	�v�[U5n[R"U[XU5[XU5SS9nX-$)NT)�includepath)r@r	�reachablerootsr*)r&r'r(rRr"r1r9s       r)�dagrangerf�s=���D��A�	�	�	��f�T�a� �&��!�"4�$�
�B��;�r+c	�^�U[:Xa[nO[n[U[XX$5X55$r5��anyorderrDr*�r&r'r(rRr"�yorders      r)�andsetrl�s*����������$��t�Q�6��B�Br+c	�^�U[:Xa[nO[n[U[XX55X$5$r5rhrjs      r)�andsmallysetrn�s*����������$��t�Q�7��B�Br+c�>�[XX$5[XU[5-
$r5�r*ri�r&r'r(rRr"s     r)�
differencesetrr�s���$��)�F�4��H�,M�M�Mr+c��U(de[U5S:Xa[XUSU5$[U5S-n[XUSUU5n[XX$SU5nXV-$)Nrr�)rar*�
_orsetlist)r&r'r9r"�p�a�bs       r)ruru�sa��
�I�2�
�2�w�!�|��d�B�q�E�5�1�1��B��1��A��4��B�Q���/�A��4��B���/�A��5�Lr+c��[U5nU(d
[5$U[:XaU[U[	U5U[
5-$[XXC5$r5)�getlistrArDrur@ri)r&r'r(r"r9s     r)�orsetr{sF��	���B�
��y������
�4��T�):�B��I�I�I��$��2�2r+c�*�U[XU[5-
$r5rpr%s    r)�notsetr}
s���F�4��H�5�5�5r+c���[U5nU[;a[U"XX%U5$[R5Vs/sHn[U5S:�dMUPM nn[R
"XW5es snfr_)�	getsymbol�	relations�keysrar
�UnknownIdentifier)r&r'r(rRr"�relr1�relnamess        r)�relationsetr�se���A�,�C�
�i����~�d�A�E�:�:�$�>�>�+�:�+�a�s�1�v��z��+�H�:�
�
!�
!�#�
0�0��;��A2�A2c��SnSnXs=:XaS:XaO OSnUS:a[US5*U*S-4nUS:�a[US5US-4nX#4$)a^Split range with bounds a and b into two ranges at 0 and return two
tuples of numbers for use as startdepth and stopdepth arguments of
revancestors and revdescendants.

>>> _splitrange(-10, -5)     # [-10:-5]
((5, 11), (None, None))
>>> _splitrange(5, 10)       # [5:10]
((None, None), (5, 11))
>>> _splitrange(-10, 10)     # [-10:10]
((0, 11), (0, 11))
>>> _splitrange(-10, 0)      # [-10:0]
((0, 11), (None, None))
>>> _splitrange(0, 10)       # [0:10]
((None, None), (0, 11))
>>> _splitrange(0, 0)        # [0:0]
((0, 1), (None, None))
>>> _splitrange(1, -1)       # [1:-1]
((None, None), (None, None))
�NNr)rrr)�min�max)rwrx�	ancdepths�
descdepthss    r)�_splitranger�s_��(�I��J��{��{��	��1�u��!�Q�i�Z�!��a��(�	��1�u��!�Q�i��Q��'�
�� � r+c� �Sn[XX#XT5$)N)�rangeallN)�generationssubrel)r&r'r(r�r"�zs      r)�generationsrelr�<s���A��T�1�1�<�<r+c��[U[S5[S5[RS-
*[RS-
7S9upg[	Xg5uup�up�Uc
U
c
[5$[
U[U5U5nU(d
[5$Ub:U
b7[R"XSX�5n
U
[R"XSX�5-
n
X-$Ub[R"XSX�5n
X-$U
b[R"XSX�5n
UW
-$)Ns0relation subscript must be an integer or a ranges*relation subscript bounds must be integersr)�deffirst�deflastF)
�getintrangerr	�maxlogdepthr�rAr*r@�revancestors�revdescendants)r&r'r(r�r�r"rwrx�ancstart�ancstop�	descstart�descstop�revs�ss              r)r�r�As���	�	�
=�>�	�
7�8��$�$�q�(�)��#�#�a�'�(��D�A�2=�Q�1B�.��X�.�)���I�-��y���$��D�)�1�-�D���y����	� 5����t�5�(�D��	�U�
!�
!�$�e�Y�
I�I���:��
�	����t�5�(�D���:��
�	�� � ��U�I�H���A�:�r+c���[U5nU[;a[U"XX&XE5$[R5Vs/sHn[U5S:�dMUPM nn[R
"Xh5es snfr_)r�subscriptrelationsr�rar
r�)	r&r'r(rRr�r"r�r1r�s	         r)�relsubscriptsetr�_sj���A�,�C�
� � �!�#�&�t�Q�Q�F�F�-�2�2�4�C�4�a��A���
��4�H�C�
�
!�
!�#�
0�0��Dr�c�@�[R"[S55e)Ns%can't use a subscript in this context�r
r#rrqs     r)�subscriptsetr�ks��
�
�
�1�E�F�
G�Gr+c�P�[R"[S5[S5S9e)Ns can't use a list in this contextssee 'hg help "revsets.x or y"')�hintr�)r&r'r9�optss    r)�listsetr�os'��
�
�
�	�
-�.�
�2�
3��r+c�@�[R"[S55e)Ns*can't use a key-value pair in this contextr�)r&r'�k�vr"s     r)�keyvaluepairr�vs��
�
�
�1�J�K�
L�Lr+c�2�[U5nU[;a-[Un[USS5(a	U"XX45$U"XU5$Sn[R5VV	s/sHup�U"U	5(dMUPM n
nn	[R
"XZ5es sn	nf)N�
_takeorderFc� �[USS5SL$)N�__doc__)�getattr)�fns r)�<lambda>�func.<locals>.<lambda>�s��g�b�)�T�2�$�>r+)r�symbolsr��itemsr
r�)r&r'rwrxr"�f�func�keepr�r��symss           r)r�r�zs����!��A��G�|��q�z���4��u�-�-���a�/�/��D�!�$�$�>�D�$�]�]�_�9�_�'�1��R��A�_�D�9�
�
!�
!�!�
*�*��:s�B�4Bs_destupdatec
��[USS5nU[[R"U40[R
"U5D6S/5-$)N�limitscleanr)�getargsdictrAr
�
destupdater�	strkwargs)r&r'r(�argss    r)�_destupdater��sL���q�(�H�-�D��G�	�	�	�T�	>�X�%7�%7��%=�	>�q�	A�B���r+s
_destmergec�z�SnUb[U[U5U5nU[[R"XS9/5-$)N)�	sourceset)r*r@rAr
�	destmerge)r&r'r(r�s    r)�
_destmerger��s?���I��}��4��T�!2�A�6�	��G�X�/�/��J�K�L�L�Lr+s
adds(pattern)T�)�safe�weightc�F�[U[S55n[XUS5$)z�Changesets that add a file matching pattern.

The pattern without explicit kind like ``glob:`` is expected to be
relative to the current directory and match against a file or a
directory.
sadds requires a pattern�added��	getstringr�checkstatus�r&r'r(�pats    r)�addsr��s%���A�q�3�4�
5�C��t�S�'�2�2r+sancestor(*changeset)g�?c	�2�[[U[U5U[S95nU[	U5nUHnURX5nM [R"U5nXQ;a[
U/5$[
5$![
a
 [
5s$f=f)z�A greatest common ancestor of the changesets.

Accepts 0 or more changesets.
Will return empty list when passed no args.
Greatest common ancestor of a single changeset is that changeset.
�r")
�iterr{r@ri�next�
StopIterationrA�ancestorrr<)r&r'r(�reviter�ancr1s      r)r�r��s����5��{�4�0�!�8�D�E�G���4��=�!�����l�l�4�7�#���	���s��A��{���s�|���9������y���s�A?�?B�BFc��[U[U5U5nU(d
[5$[R"XX4U5nX-$r5)r*r@rAr	r�)r&r'r(�followfirst�
startdepth�	stopdepth�headsr�s        r)�
_ancestorsr��s>��
�4��T�*�A�.�E���y��
���4���K�A��:�r+sancestors(set[, depth]))r�c�~�[USS5nSU;a[R"[S55eS=pESU;a-[	USS5nUS:a[R"S	5eUnS
U;aB[	US
[S55nUS:a[R"[S55eUS
-n[XUSXES9$)z�Changesets that are ancestors of changesets in set, including the
given changesets themselves.

If depth is specified, the result only includes changesets up to
the specified generation.
s	ancestors�set depth startdepth�sets#ancestors takes at least 1 argumentN�
startdepths'ancestors expects an integer startdepthr�negative startdepth�depths"ancestors expects an integer depth�negative depthr�r�r�)r�r
r#r�
getintegerr��r&r'r(r�r�r�rTs       r)�	ancestorsr��s����q�,�(?�@�D�
�T�����q�!G�H�I�I�!�!�J��������!K�
��
�q�5��"�"�#9�:�:��
��4���t�H�~�q�)N�'O�P���q�5��"�"�1�%6�#7�8�8���E�	���d�6�l�z��r+s_firstancestorsc��[XUSS9$�NT�r�)r��r&r'r(s   r)�_firstancestorsr��s���d�A�4�8�8r+c�h�[5n[U[U5U5H�n[U5HhnXR	5n[U5S:Xa M5[U5S:�a[R"[S55eUSR5nMj URU5 M� X-$)z9Changesets that are the Nth child of a changeset
in set.
rrs'revision in set has more than one child)�setr*r@�range�childrenrar
r0rr/�add)	r&r'r(rTr"�csr1�i�cs	         r)�
_childrenspecr�s���

��B�
�D�+�d�+�Q�
/���q��A��� � �"�A��1�v��{���1�v��z��+�+��@�A����!����
�A��
�F�F�1�I�0��;�r+c��[U[S55nUS:a[XX#*U5$[5nURn[U[
U5U5H;n[U5HnURU5SnM URU5 M= X-$![Ra$ XR5R5nMlf=f)z[``set~n``
Changesets that are the Nth ancestor (first parents only) of a changeset
in set.
s~ expects a numberr)r�rr�r�rKr*r@r��
parentrevsr
�WdirUnsupported�p1r/r�)	r&r'r(rTr"�ps�clr1r�s	         r)�ancestorspecr�s���
	�1�a�-�.�/�A��1�u��T�1�b�%�8�8�	��B�	
���B�
�D�+�d�+�Q�
/���q��A�
'��M�M�!�$�Q�'���
	���q�	�
0��;����(�(�
'��G�J�J�L�$�$�&��
'�s�(B�4C�Csauthor(string)�
c�x^^�[U[S55n[USS9upEmURUU4SjSU4S9$)zAlias for ``user(string)``.sauthor requires a stringF��
casesensitivec�6>�T"TUR55$r5��user)r(�matcherr&s ��r)r��author.<locals>.<lambda>0s���'�$�q�'�,�,�.�)r+s	<user %r>��condrepr�r�r�_substringmatcher�filter)r&r'r(rT�kind�patternrs`     @r)�authorr)sH���	�!�Q�2�3�4�A�.�q��F��D�7��=�=�)�\�1�4E���r+sbisect(string)c��[U[S55R5n[[R
"X55nX-$)a�Changesets marked in the specified bisect status:

- ``good``, ``bad``, ``skip``: csets explicitly marked as good/bad/skip
- ``goods``, ``bads``      : csets topologically good/bad
- ``range``              : csets taking part in the bisection
- ``pruned``             : csets that are goods, bads or skipped
- ``untested``           : csets whose fate is yet unknown
- ``ignored``            : csets ignored due to DAG topology
- ``current``            : the cset currently being bisected
sbisect requires a string)r�r�lowerr�r�get)r&r'r(�status�states     r)�bisectr4s:���q�!�7�8�
9�
?�
?�
A�F�����D�)�*�E��>�r+sbisectedc��[XU5$r5)rr�s   r)�bisectedrHs���$��"�"r+sbookmark([name])c�Z�[USS[S55nU(Ga@[US[S55n[R"U5upVn[5nUS:Xa�XF:XaURRU5nURRUS5n	U	(d"[R"[S5U-5eURX	R55 O�[5n
URR5H%up�U"U5(dMU
RU	5 M' U
H$n	URX	R55 M& O:URR5Vs1sHo�UR5iM nnU[1-nX-$s snf)zsThe named bookmark or all bookmarks.

Pattern matching is supported for `name`. See :hg:`help revisions.patterns`.
rrs"bookmark takes one or no argumentss)the argument to bookmark must be a string�literalNsbookmark '%s' does not exist)�getargsrr�r�
stringmatcherr��
_bookmarks�
expandnamerr
r0r�r/r��valuesr)
r&r'r(r��bmrrr�bms�bmrev�	matchrevs�namer1s
             r)�bookmarkr%Msd���1�a��A�C�D�E�D��
���G�
�:�;�
��
",�!9�!9�"�!=���w��e���:���}��/�/�4�4�W�=���O�O�'�'���6�E���+�+��5�6��@���
�G�G�D�K�O�O�%�&���I�#���4�4�6����4�=�=��M�M�%�(� 7�#���������)�*�#�'+�o�o�&<�&<�&>�?�&>��A�w�{�{�}�&>��?��G�9��C��<���@s�<F(sbranch(string or set)c�^^^^	^
^�TR5Rm	U	U4Sjm
[US5m[R"T5up4mUS:XatTR5R
U5(aURU
U4SjST4S9$TRS5(a"[R"[S5U-5eOURU
U4S	jST4S9$[T[T5U5n[5mUHnTR!T
"U55 M UR"mURUUU
4S
jU4SjS9$![Ra N|f=f)z�
All changesets belonging to the given branch or the branches of the given
changesets.

Pattern matching is supported for `string`. See
:hg:`help revisions.patterns`.
c�v>�T"U5S$![Ra TUR5s$f=frW)r
r��branch)r1�getbir&s ��r)�	getbranch�branch.<locals>.getbranch~s<���	$���8�A�;����$�$�	$���7�>�>�#�#�	$�s�
�'8�8r+rc� >�T"T"U55$r5��r1r*rs ��r)r��branch.<locals>.<lambda>�s���g�i��l�3r+�<branch %r>r	sliteral:sbranch '%s' does not existc� >�T"T"U55$r5r-r.s ��r)r�r/�s���'�)�A�,�/r+c�8>�T"U5=(d T"U5T;$r5r-)r1rxr�r*s ���r)r�r/�s���!�A�$�+�)�A�,�!�+�+r+c� >�S[T5-$)Nr0�r:)rxs�r)r�r/�s����(�1�+�5r+)�revbranchcache�
branchinfor�rr�	branchmap�	hasbranchr
�
startswithr
r0rr#r*r@r�r��__contains__)r&r'r(rrr�r1rxr�r)r*rs`      @@@@@r)r(r(ssW���
���!�,�,�E�$���a����
",�!9�!9�!�!<���w��:���~�~��)�)�'�2�2��}�}�3�,�a�0�%����|�|�K�(�(��+�+��3�4�w�>���)�
�=�=�/�>�1�:M�!��
�	�t�[��&��*�A���A�
��	���i��l���	���A��=�=�+�5�����7���
��
�s�E�E�Esphasedivergent()c�f�[USS[S55 [R"US5nX-$)z�Mutable changesets marked as successors of public changesets.

Only non-public and non-obsolete changesets can be `phasedivergent`.
(EXPERIMENTAL)
rs!phasedivergent takes no arguments�phasedivergent�rr�obsmod�getrevs)r&r'r(�phasedivergents    r)r@r@�s2���A�q�!�Q�;�<�=��^�^�D�*;�<�N��"�"r+sbundle()c��URRnX-$![a  [R"[S55ef=f)zEChangesets in the bundle.

Bundle must be specified by the -R option.s$no bundle provided - specify with -R)rK�
bundlerevs�AttributeErrorr
�Abortr)r&r'r(rBs    r)�bundlerE�sJ��F��^�^�.�.�
������F��k�k�!�C�D�E�E�F�s	��*Ac�^^^^^�[R"T5S:HmS/mUUUUU4SjnURUS[R"T5T4S9$)zmHelper for status-related revsets (adds, removes, modifies).
The field parameter says which kind is desired.
r�Nc�>^�T	UnTS(aT(a3[R"T	RT	R5T/US9TS'TSmSnTceTR	5(d0[TR
55S:XaTR
5SnUbX!R
5;agO)[U4SjUR
555(dg[T	RUR5R5UR55T5nUbX#;agg[U4SjU55(agg)Nr��ctxrFc3�4># �UH
nT"U5v� M g7fr5r-��.0r�rSs  �r)�	<genexpr>�/checkstatus.<locals>.matches.<locals>.<genexpr>�s����/�Y��q��t�t�Y���Tc3�4># �UH
nT"U5v� M g7fr5r-rKs  �r)rMrN�s����'��A�1�Q�4�4��rO)�matchmodr�root�getcwd�anypatsra�files�anyr�rr��node)
r(r��fnamerUrS�field�hasset�mcacher�r&s
    @�����r)�matches�checkstatus.<locals>.matches�s	�����G���a�y�F� ���t�y�y�$�+�+�-�#��A�N�F�1�I��1�I�����}��}��y�y�{�{�s�1�7�7�9�~��2��G�G�I�a�L�E����G�G�I�%��&��/�Q�W�W�Y�/�/�/������A�D�D�F�K�K�M�1�6�6�8�<�e�D�����~����'��'�'�'��(r+s<status.%s %r>r	)rQ�patkindr
r�sysbytes)r&r'r�rYr\rZr[s` `` @@r)r�r��s[����
�
�c�
"�f�
,�F��V�F���0�=�=��,�h�.?�.?��.F��L���r+c�B�U(d
[5$[5nURRnUR	5nUHNnXe::aM
U"U5upxXr;aURU5 U[:wdM6X�;dM=URU5 MP [U5$r5)rAr�rKr�r�r�r)	r&r'�	parentsetr��pr�minrevr1r��p2s	         r)�	_childrenre�s}����y��	��B�	
���	"�	"�B�
�]�]�_�F�
���;���A����
�?��F�F�1�I�
��=�R�_��F�F�1�I���2�;�r+s
children(set)c�N�[U[U5U5n[XU5nX-$)z&Child changesets of changesets in set.)r*r@re)r&r'r(r�r�s     r)r�r��s+��	�t�[��&��*�A�	�4��	#�B��;�r+sclosed()c�Z^�[USS[S55 URU4SjSS9$)zChangeset is closed.rsclosed takes no argumentsc�*>�TUR5$r5)�closesbranch�r1r&s �r)r��closed.<locals>.<lambda>s���$�q�'�&�&�(r+s<branch closed>r	)rrr
r�s`  r)�closedrl�s5����A�q�!�Q�3�4�5��=�=�(�3E���r+s_commonancestorheads(set)c��[U[U5U[S9nURR"[U56nU[
U5-$)Nr�)r*r@rirK�_commonancestorsheads�listrA)r&r'r(�	startrevs�ancss     r)�_commonancestorheadsrr
s@���t�[��.���B�I��>�>�/�/��i��A�D��G�D�M�!�!r+scommonancestors(set)c��[U[U5U[S9nU(d
[5$UH'nU[R
"U[U/55-nM) U$)z8Changesets that are ancestors of every changeset in set.r�)r*r@rirAr	r�)r&r'r(rpr1s     r)�commonancestorsrtsP���t�[��.���B�I���y��
���%�$�$�T�7�A�3�<�8�8����Mr+sconflictlocal()c�T�[USS[S55 SSKJn URR	U5nUR5(aRURRUR5(a(XRRUR51-$[5$)z�The local side of the merge, if currently in an unresolved merge.

"merge" here includes merge conflicts from e.g. 'hg rebase' or 'hg graft'.
rs conflictlocal takes no argumentsr��
mergestate)rr�rw�read�activerK�hasnode�localr/rA�r&r'r(�
mergestatemodrws     r)�
conflictlocalr"����A�q�!�Q�:�;�<�-��)�)�.�.�t�4�J������t�~�~�5�5�j�6F�6F�G�G����+�+�J�,<�,<�=�>�>�>��9�r+sconflictother()c�T�[USS[S55 SSKJn URR	U5nUR5(aRURRUR5(a(XRRUR51-$[5$)z�The other side of the merge, if currently in an unresolved merge.

"merge" here includes merge conflicts from e.g. 'hg rebase' or 'hg graft'.
rs conflictother takes no argumentsrrv)rrrxrwryrzrKr{�otherr/rAr}s     r)�
conflictotherr�2r�r+scontains(pattern)�d)r�c�b^^�[U[S55mUU4SjnURUST4S9$)a(The revision's manifest contains a file matching pattern (but might not
modify it). See :hg:`help patterns` for information about file patterns.

The pattern without explicit kind like ``glob:`` is expected to be
relative to the current directory and match against a file exactly
for efficiency.
scontains requires a patternc�j>�[R"T5(d<[R"TRTR5T5nUTU;aggTUn[R"TRTR5T/US9nUR5HnU"U5(dM g g)NTrHF)rQr^r�	canonpathrRrSr�manifest)r(�patsr�rSr�r�r&s     ��r)r\�contains.<locals>.matchesNs��������$�$��%�%�d�i�i������D�D��t�A�w������Q��A����t�y�y�$�+�+�-�#��A�F�A��Z�Z�\���Q�4�4��"�r+s
<contains %r>r	)r�rr
)r&r'r(r\r�s`   @r)�containsr�Bs7����A�q�7�8�
9�C���=�=��,<�c�+B�=�C�Cr+sconverted([id])c�^^^�Sm[USS[S55nU(a[US[S55mUU4SjmURU4SjST4S	9$)
z�Changesets converted from the given identifier in the old repository if
present, or all converted changesets if no identifier is specified.
Nrrs#converted takes one or no argumentssconverted requires a revisionc�>�TUR5RSS5nUSL=(a TSL=(d URT5$)Nsconvert_revision)r.rr9)r1�sourcer&r/s  ��r)�_matchvalue�converted.<locals>._matchvaluensD����a�����$�$�%8�$�?���T�!�M�s�d�{�'L�f�6G�6G��6L�Mr+c�>�T"U5$r5r-�r1r�s �r)r��converted.<locals>.<lambda>s�	���+�a�.r+s<converted %r>r	)rrr�r
)r&r'r(�lr�r/s`   @@r)�	convertedr�^sb����C���1�a��A�B�C�A����!��a� @�A�B��N��=�=� �,=�s�+C���r+sdate(interval)c�^^�[U[S55n[R"U5mUR	UU4SjSU4S9$)z5Changesets within the interval, see :hg:`help dates`.sdate requires a stringc�<>�T"TUR5S5$rW��date)r(�dmr&s ��r)r��date.<locals>.<lambda>~s���"�T�!�W�\�\�^�A�&�'r+s	<date %r>r	)r�rr�	matchdater
)r&r'r(�dsr�s`   @r)r�r�wsG���
�1�a�1�2�	3�B�	�	�	�B�	�B��=�=�'�<��2D���r+sdesc(string)c�x^^�[U[S55n[USS9upEmURUU4SjSU4S9$)z�Search commit message for string. The match is case-insensitive.

Pattern matching is supported for `string`. See
:hg:`help revisions.patterns`.
sdesc requires a stringFrc�6>�T"TUR55$r5��description)r1rr&s ��r)r��desc.<locals>.<lambda>�s���'�$�q�'�-�-�/�0r+s	<desc %r>r	r)r&r'r(r�rrrs`     @r)�descr��sH���
�1�a�1�2�	3�B�.�r��G��D�7��=�=�0�L�"�;M���r+c��[U[U5U5nU(d
[5$[R"XX4U5nX-$r5)r*r@rAr	r�)r&r'r(r�r�r��rootsr�s        r)�_descendantsr��s>��
�4��T�*�A�.�E���y��
���T�+�9�M�A��:�r+sdescendants(set[, depth])c�~�[USS5nSU;a[R"[S55eS=pESU;a-[	USS5nUS:a[R"S	5eUnS
U;aB[	US
[S55nUS:a[R"[S55eUS
-n[XUSXES9$)z�Changesets which are descendants of changesets in set, including the
given changesets themselves.

If depth is specified, the result only includes changesets up to
the specified generation.
sdescendantsr�r�s%descendants takes at least 1 argumentNr�s)descendants expects an integer startdepthrr�r�s$descendants expects an integer depthr�rr�)r�r
r#rr�r�r�s       r)�descendantsr��s����q�.�*A�B�D�
�T�����q�!I�J�K�K�!�!�J��������!M�
��
�q�5��"�"�#9�:�:��
��4�����N�A�E�F�
��
�q�5��"�"�1�%6�#7�8�8���E�	���d�6�l�z��r+s_firstdescendantsc��[XUSS9$r�)r�r�s   r)�_firstdescendantsr��s����a�T�:�:r+sdestination([set])c�p^�Ub[U[U5U5nO[U5n[5mUHcn[X5nSnUcMUc
[	5nURU5 XS;dUT;aTR
U5 MQUn[X5nUbMNMe URTRU4SjS9$)z�Changesets that were created by a graft, transplant or rebase operation,
with the given revisions specified as the source.  Omitting the optional set
is the same as passing all().
Nc� >�S[T5-$)Ns<destination %r>r4)�destss�r)r��destination.<locals>.<lambda>�s���,�x���>r+r	)	r*r@r�r3ro�append�updater
r:)r&r'r(�sourcesr1�src�lineager�s       @r)�destinationr��s����	�}���{�4�0�!�4���d�#���E�E����D�$�����o����&���N�N�1���~�������W�%���A���(�C�#�o�	�.�=�=�
���>���r+sdiffcontains(pattern)�nc�^^^	�[USS5nSU;a[R"[S55e[	US[S55n[
R"U[R5n[R"5mU4Sjm[R"URXSS9m	UU	4SjnURUS	U4S
9$)z�Search revision differences for when the pattern was added or removed.

The pattern may be a substring literal or a regular expression. See
:hg:`help revisions.patterns`.
sdiffcontainsspatterns&diffcontains takes at least 1 arguments&diffcontains requires a string patternc�>�T$r5r-)rI�fmatchs �r)�makefilematcher�%diffcontains.<locals>.makefilematcher
s����
r+T)�diffc�>�SnTR[U/5T5H/up#pE[[R"XE5S5(dM-SnM1 U$)NFT)�searchfilesrAr��grepmod�difflinestates)r/�foundr�rI�pstates�statesr��searchers      ��r)�testdiff�diffcontains.<locals>.testdiffsS�����(0�(<�(<��S�E�N�O�)
�$�B�W��G�*�*�7�;�T�B�B���	)
�
�r+s<diffcontains %r>r	)r�r
r#rr�r�substringregexp�re�MrQ�alwaysr��grepsearcher�uir
)
r&r'r(r�r�regexpr�r�r�r�s
       @@@r)�diffcontainsr��s�����q�/�:�6�D�������q�!J�K�L�L���Z��!�E�F��G��
'�
'�����
6�F��_�_�
�F���#�#�D�G�G�T��E�H���=�=��-A�7�,K�=�L�Lr+scontentdivergent()c�f�[USS[S55 [R"US5nX-$)z\
Final successors of changesets with an alternative set of final
successors. (EXPERIMENTAL)
rs#contentdivergent takes no arguments�contentdivergentr=)r&r'r(�contentdivergents    r)r�r� s3���A�q�!�Q�=�>�?��~�~�d�,?�@���$�$r+sexpectsize(set[, size]))r��	takeorderc��[USS5nSn[U5S-nSnSU;dSU;a[R"[	S55e[US[	S	5[	S
5UU5upVUS:dUS:a[R"[	S55e[
U[U5USUS9nXV:wa9[U5U:d[U5U:�a[	S
5UU[U54-nO-XV:Xa([U5U:wa[	S5U[U54-nU(a[R"U5eU[:XaX-$X�-$)aReturn the given revset if size matches the revset size.
Abort if the revset doesn't expect given size.
size can either be an integer range or an integer.

For example, ``expectsize(0:1, 3:5)`` will abort as revset size is 2 and
2 is not between 3 and 5 inclusive.s
expectsizesset sizerrr+ssizer�sinvalid set of argumentss6expectsize requires a size range or a positive integers"size range bounds must be integerss
negative sizer�s8revset size mismatch. expected between %d and %d, got %ds)revset size mismatch. expected %d, got %d)
r�rar
r#rr�r*r@r0rD)	r&r'r(r"r��minsize�maxsize�errr/s	         r)�
expectsizer�,sZ���q�-��5�D��G��$�i�!�m�G�

�C��d��f�D�0����q�!<�=�>�>�"��W�
�	�
C�D�	�
/�0�����G���{�g��k����q�!1�2�3�3�
��{�4�(�$�v�,�e�
D�C���s�3�x�'�1�S��X��5G��K�L�����H�P
�
��

�	��C��G� 3��<�=����H�A
�
����#�#�C�(�(�����|���|�r+sextdata(source)c��[USS5n[URS5[S55n[R
"X5nU[
U5-$)z:Changesets in the specified extdata source. (EXPERIMENTAL)sextdatar-s(extdata takes at least 1 string argument)r�r�rrr�
extdatasourcerA)r&r'r(r�r��datas      r)�extdatar�XsR���q�*�i�0�D�
������	�
5�6��F�
� � ��.�D��G�D�M�!�!r+s	extinct()c�f�[USS[S55 [R"US5nX-$)zBObsolete changesets with obsolete descendants only. (EXPERIMENTAL)rsextinct takes no argumentssextinctr=)r&r'r(�extinctss    r)�extinctr�fs1���A�q�!�Q�4�5�6��~�~�d�J�/�H���r+sextra(label, [value])c�T^^^^^�[USS5nSU;a[R"[S55e[	US[S55mSmSU;a2[	US[S55m[
R"T5unmmUUUU4S	jmURU4S
jSTT4S9$)
z�Changesets with the given label in the extra metadata, with the given
optional value.

Pattern matching is supported for `value`. See
:hg:`help revisions.patterns`.
sextraslabel valueslabelsextra takes at least 1 arguments(first argument to extra must be a stringNsvalues)second argument to extra must be a stringc�n>�TUR5nTU;=(a TSL=(d T"UT5$r5)r.)r1r.r2rr&�values  ����r)r��extra.<locals>._matchvalue�s3����Q��
�
�����~�J�5�D�=�#I�G�E�%�L�4I�Jr+c�>�T"U5$r5r-r�s �r)r��extra.<locals>.<lambda>�r�r+s<extra[%r] %r>r	)r�r
r#rr�rrr
)	r&r'r(r�rr�r2rr�s	`    @@@@r)r.r.os�����q�(�N�3�D��t�����q�!C�D�E�E���X���E�F�
�E�
�E��4�����N�A�J�K�
�� *�7�7��>���e�W�K�K��=�=� �,=�u�e�+L���r+sfilelog(pattern)c��^�[U[S55n[5nURn[R
"U5(d4[R"URUR5U5nU/nOB[R"URUR5U/USS9mU4SjUS5nUGHnURU5n0n	Sn
[U5H�nURU5nX�;aURX�5 M.URU5n
X�;aURU
5 MWU
cM\[!X�5S-nSn
UR#U5HknXeR%U5;dMXeR'U5;dM/XR)U5nUU	;a"UU:XaURU5 Un
 M�X�U'MkMm M� GM X-$![*R,a M�f=f)a�Changesets connected to the specified filelog.

For performance reasons, visits only revisions mentioned in the file-level
filelog, rather than filtering through all changesets (much faster, but
doesn't include deletes or duplicate changes). For a slower, more accurate
result, use ``file()``.

The pattern without explicit kind like ``glob:`` is expected to be
relative to the current directory and match against a file exactly
for efficiency.
sfilelog requires a patternNrHc3�F># �UHnT"U5(dMUv� M g7fr5r-rKs  �r)rM�filelog.<locals>.<genexpr>�s����/�J�q�!�A�$���J�s�!�	!rr)r�rr�rKrQr^rr�rRrSr�filerorWr��linkrevr�r��revision�	readfiles�filenoder
�ManifestLookupError)r&r'r(r�r�r�r�rU�fl�known�scanpos�frr��lr�startr1rTrSs                 @r)�filelogr��s�����A�q�6�7�
8�C���A�	
���B����C� � ����t�y�y�$�+�+�-��=������N�N�4�9�9�d�k�k�m�c�U��T�
�K��/�D��J�/��
��
�Y�Y�q�\�������r�(�B������B��{����e�i� �����B��B��x����b�	��$��B�(�1�,���������A��K�K��N�*�q�L�L��O�/C�%� $�� 0� 0�� 3�A� ��~�#$��7�$%�E�E�!�H�./�G�$)�/0�!�H�
 .�
(��	�F�:���	 %�8�8�%�$�%�s�2G�G�G5	�4G5	sfirst(set, [n]))r�r�r�c��[XX#5$)zAn alias for limit().)�limitr%s    r)rPrP�s����q�(�(r+c	�Z^�[X#S5nSnSU;a[U[U5US5nSU;a�[US[	S5U-5nUcS/n/nUHznX=mn	UcUSm[
R"URUR5U/U	SS9n
URU4SjTR5RU
555 M| [R"Xt5nX-$Uc[USR5/5n[R "XU5nX-$)	Ns
file startrev�startrev�files%s expected a pattern�.spath)rI�defaultc3�J># �UHnTUR5v� M g7fr5)�introfilectx)rLr�rIs  �r)rM�_follow.<locals>.<genexpr>�s#����O�8N�1��Q��,�,�.�.�8N��� #)r�r*r@r�rrQrrRrS�extendr��walkr	�filerevancestorsrAr/r�)
r&r'r(r$r�r�r��fctxsr1�mctxrSr�rIs
            @r)�_followr�s+����q� 0�1�D��D��d���d�K��-�t�K�/@�A���$���d�7�m�Q�'?�%@�4�%G�H���<��6�D����A��� �C�$��y��4�j������	�	�4�;�;�=�1�#�4���A�
�L�L�O�����8K�8K�A�8N�O�O��
�"�"�5�6���:��	�<��D��J�N�N�,�-�.�D����t�;�7���:�r+sfollow([file[, startrev]])c��[XUS5$)z�
An alias for ``::.`` (ancestors of the working directory's first parent).
If file pattern is specified, the histories of files matching given
pattern in the revision given by startrev are followed, including copies.
r �rr�s   r)�followr�s���4��I�.�.r+�_followfirstc��[XUSSS9$)Nr	Tr�rr�s   r)�_followfirstr�s��
�4��O��F�Fr+s?followlines(file, fromline:toline[, startrev=., descend=False])c	�<�[USS5n[US5S:wa[R"[	S55eSnSU;aW[U[
U5US5n[U5S:wa[R"[	S55eUR5n[US	[	S
55n[	S5n[R"XXg5n[R"[USS[	S
5[	S556up�XRU5nSnSU;a[US[	S55nU(a*[!S["R$"X�U
55SS9n
X-$[!S["R&"X�U
55SS9n
X-$)a�Changesets modifying `file` in line range ('fromline', 'toline').

Line range corresponds to 'file' content at 'startrev' and should hence be
consistent with file size. If startrev is not specified, working directory's
parent is used.

By default, ancestors of 'startrev' are returned. If 'descend' is True,
descendants of 'startrev' are returned though renames are (currently) not
followed in this direction.
sfollowlinessfile *lines startrev descendslinesrs!followlines requires a line ranger�r�s(followlines expects exactly one revisionr�sfollowlines requires a patterns$followlines expects exactly one filers,followlines expects a line number or a ranges"line range bounds must be integersFsdescends"descend argument must be a booleanc3�F# �UHupUR5v� M g7fr5�r/�rLr��
_lineranges   r)rM�followlines.<locals>.<genexpr>8�%���
�&�M�A������&���!T)�iterascc3�F# �UHupUR5v� M g7fr5rrs   r)rMrBrr)r�rar
r#rr*r@rQr�r�parsefollowlinespatternr�processlineranger��filectx�
getboolean�generatorsetr	�blockdescendants�blockancestors)r&r'r(r�r/r�r��msgrX�fromline�toline�fctx�descend�rss              r)�followlinesr#s����q�.�*I�J�D�
�4��>��a�����q�!E�F�G�G�
�C��d���d�K��-�t�K�/@�A���t�9��>��"�"��=�>��
��i�i�k��
�D��M�1�%F�#G�
H�C�
�3�
4�C��+�+�D�s�@�E��,�,�	���N�1��
�=�>�
�3�4�	

���H��9���U�#�D��G��T������
�3�4�
��
�
�
�%*�%;�%;��F�&�
��
��&�;���
�%*�%9�%9��F�&�
��
���;�r+snodefromfile(path)c���[U[S55n[5n[R"US5nUH4nUR5n[
X5nUcM#URU5 M6 SSS5 U[U5-$!,(df   N=f![aJn	[S5n
X�[R"U	R54-n
[R"U
5eSn	A	ff=f)z�Read a list of nodes from the file at `path`.

This applies `id(LINE)` to each line of the file.

This is useful when the amount of nodes you need to specify gets too large
for the command line.
s nodefromfile require a file path�rbNscannot open nodes file "%s": %s)r�rr�r�open�strip�_noder��OSErrorr�
strtolocal�strerrorr
rDrA)r&r'r(�path�
listed_revr��linerT�rn�excrSs           r)�nodefromfiler1Ms����Q��=�>�?�D���J�
�
�]�]�4��
&�!����J�J�L���4�^���>��N�N�2�&�	�'��G�J�'�'�'�'�
&����
�0�1��	�H�'�'����5�
6�6���k�k�!�n����s;�B�"B	�B	�3B�	
B�B�B�
C.�$AC)�)C.sall()c�L�[USS[S55 U[U5-$)z&All changesets, the same as ``0:tip``.rsall takes no arguments)rrr`r�s   r)�getallr3fs'���A�q�!�Q�0�1�2��G�D�M�!�!r+sgrep(regex)c�D^^�[R"[U[S555mUU4SjnURUSTR4S9$![Ra;n[R
"[S5[R"U5-5eSnAff=f)z�Like ``keyword(string)`` but accepts a regex. Use ``grep(r'...')``
to ensure special escape characters are handled correctly. Unlike
``keyword(string)``, the match is case-sensitive.
sgrep requires a stringsinvalid match pattern: %sNc�>�TUnUR5UR5UR5/-HnTRU5(dM g g�NTF)rUrr��search)r(r��e�grr&s   ��r)r\�grep.<locals>.matches|sG�����G������a�f�f�h��
�
��8�8�A��y�y��|�|��9�r+s	<grep %r>r	)
r��compiler�rr
r#r�forcebytestrr
r)r&r'r(r8r\r9s`    @r)rrns����
�
�Z�Z�	�!�Q�'@�%A�B�
C����=�=��L�"�*�*�+E�=�F�F���8�8�
����
�*�+�j�.E�.E�a�.H�H�
�	
��
�s�)A�B�$6B�Bs_matchfilesc	�^^	^
^^^
^^^�[USSS5n///smm
m
Summ	UH�n[US5nUSSUSSpvUS:XaTRU5 M1US:XaT
RU5 MJUS	:XaT
RU5 McUS
:Xa+Tb[R"S5eUS:Xa[
mM�UmM�US
:XaT	b[R"S5eUm	M�[R"SU-5e T	(dSm	[
STT
-T
-55mS/mTRRmU	U
UUU
UUUU4	SjnURUSTT
T
T	T4S9$)Nr���s*_matchfiles requires at least one argumentr�s%_matchfiles requires string argumentsrt�p:si:sx:sr:s)_matchfiles expected at most one revisionr+sd:s-_matchfiles expected at most one default modesinvalid _matchfiles prefix: %ssglobc3�T# �UHn[R"U5S:Hv� M  g7f)r�N)rQr^�rLrvs  r)rM�_matchfiles.<locals>.<genexpr>�s"���I�8H�1��!�!�!�$��.�8H�s�&(c
�2>	�U[:XaTUR5nOT"U5nT
S(a
T(aBT
c?T
cUOT
n[R"TRTR5TT	TTUTS9T
S'T
SnUHnU"U5(dM g g)Nr)�include�excluderIr�TF)rrUrQrrRrS)r(rUr1rSr�r�r0�getfilesrZ�incr[r�r&r/s     ���������r)r\�_matchfiles.<locals>.matches�s������<���G�M�M�O�E��Q�K�E��a�y�V����[��c�A� ����	�	����
������G���F�1�I�
�1�I���A���t�t���r+sC<matchfiles patterns=%r, include=%r exclude=%r, default=%r, rev=%r>r	)
rr�r�r
r#rrVrKr�r
)r&r'r(r��argr��prefixr�r\r�r0rFrZrGr[r�r/s`        @@@@@@@@r)�_matchfilesrK�s�����	��1�b�G�H�A���R�N�D�#�s��L�C�����c�C�D���"�1��q���u���U�?��K�K���
�u�_��J�J�u��
�u�_��J�J�u��
�u�_����&�&�@�����|�����
�u�_��"��&�&�D����G��"�"�#D�v�#M�N�N�3�4���
�I��s�
�S�8H�I�
I�F��V�F��~�~�'�'�H���0�=�=��
/������
���r+s
file(pattern)c�N�[U[S55n[XSSU-45$)z�Changesets affecting files matched by pattern.

For a faster but less accurate result, consider using ``filelog()``
instead.

This predicate uses ``glob:`` as the default kind of pattern.
sfile requires a pattern�stringr?)r�rrKr�s    r)�hasfilerN�s,���A�q�3�4�
5�C��t�i����%=�>�>r+shead()c�^�[USS[S55 [5nURmUR	5R5HnUR
U4SjU55 M  U[U5-$)z!Changeset is a named branch head.rshead takes no argumentsc3�F># �UHnTRU5v� M g7fr5r)rL�hr�s  �r)rM�head.<locals>.<genexpr>�s����(�R��"�&�&��)�)�R�s�!)rrr�rKr7�	iterheadsr�rA)r&r'r(�hs�lsr�s     @r)�headrV�sd����A�q�!�Q�1�2�3�	��B�	
���B��n�n��(�(�*��
�	�	�(�R�(�(�+��G�B�K��r+s
heads(set)c��U[:Xa[n[U[U5X#S9nSn[U;aPUSR5Vs/sHofR
5PM nn[U5nUR[5 URRU5nUb&URU5 UR[5 [U5nX-$s snf)z'Members of set with no children in set.r�N)rbrDr*r@r�parentsr/r��discardrK�headrevs�difference_updater�rA)r&r'r(r"�inputset�wdirparentsrvr�s        r)r�r��s���
������d�K��-�q�>�H��K��(��(,�T�
�(:�(:�(<�=�(<�1�u�u�w�(<��=��x�=������!��N�N�#�#�H�-�E���
����,�
�	�	�'���E�N�E��>���>s�Cshidden()c�f�[USS[S55 [R"US5nX-$)zHidden changesets.rshidden takes no argumentssvisible)rrr�
filterrevs)r&r'r(�
hiddenrevss    r)�hiddenras3���A�q�!�Q�3�4�5��$�$�T�:�6�J���r+skeyword(string)c�^^�[R"[U[S555mUU4SjnUR	UST4S9$)z�Search commit message, user name, and names of changed files for
string. The match is case-insensitive.

For a regular expression or case sensitive search of these fields, use
``grep(regex)``.
skeyword requires a stringc�>�TUn[U4SjUR5UR5UR5/-55$)Nc3�V># �UHnT[R"U5;v� M  g7fr5�rr)rL�t�kws  �r)rM�+keyword.<locals>.matches.<locals>.<genexpr>&s&����
�<��
�(�.�.��#�#�<�s�&))rVrUrr�)r1r�rgr&s  ��r)r\�keyword.<locals>.matches$sB�����G���
��W�W�Y�!�&�&�(�A�M�M�O�!<�<�
�
�	
r+s<keyword %r>r	)rrr�rr
)r&r'r(r\rgs`   @r)�keywordrjs?���
���	�!�Q�'C�%D�E�	F�B�
��=�=��O�R�+@�=�A�Ar+slimit(set[, n[, offset]])c��[USS5nSU;a[R"[S55e[	URS5[S5SS9nUS	:a[R"[S
55e[	URS5[S5S	S9nUS	:a[R"[S55e[
U[U5US5nURXfU-5nU[:Xa
US:�aX-$X�-$)
z>First n members of set, defaulting to 1, starting from offset.r�sset n offsetr�s%limit requires one to three arguments�nslimit expects a numberr)r�r�negative number to selectsoffsetsnegative offset)
r�r
r#rr�rr*r@�slicerD)	r&r'r(r"r��lim�ofs�osrUs	         r)r�r�.s����q�(�O�4�D�
�T�����q�!I�J�K�K�
�T�X�X�d�^�Q�'@�%A�1�
M�C�
�Q�w����q�!=�>�?�?�
������Q�8�9�1��C��Q�w����q�!3�4�5�5�	��k�$�'��f��	6�B�	���#�S�y�	!�B�����a���{��
�;�r+slast(set, [n])c��[USS[S55nSn[U5S:Xa[US[S55nUS:a[R
"[S55e[
U[U5US5nUR5 URSU5nU[:Xa
US:�aX-$UR5 Xq-$)z'Last n members of set, defaulting to 1.rrts"last requires one or two argumentsslast expects a numberrrm)rrrar�r
r#r*r@�reversernrD)r&r'r(r"r�rorqrUs        r)rQrQFs���	��1�a��@�A�B�A�
�C�
�1�v��{���1��q�!9�:�;��
�Q�w����q�!=�>�?�?�	��k�$�'��1��	.�B��J�J�L�	���!�S�	�B�����a���{���J�J�L�
�;�r+smax(set)c��[U[U5U5nUR5nXA;a
[U/SX4S9$[SX4S9$![a Nf=f)z.Changeset with highest revision number in set.s<max %r, %r>��datarepr)r*r@r�rA�
ValueError�r&r'r(rqrSs     r)�maxrevryZ�m��
��k�$�'��	+�B�
��F�F�H���;��A�3�/�6�)F�G�G���_�f�9�:�:��	�
�	
�
���!A�
A�Asmerge()c�z^^�[USS[S55 TRmUU4SjnURUSS9$)zChangeset is a merge changeset.rsmerge takes no argumentsc�>�TRU5S[:g$![Ra [	TUR55s$f=fr_)r�rr
r��boolrd)r1r�r&s ��r)�ismerge�merge.<locals>.ismergepsK���	&��=�=��#�A�&�'�1�1���$�$�	&���Q��
�
��%�%�	&�s��0A�As<merge>r	)rrrKr
)r&r'r(rr�s`   @r)�merger�is<����A�q�!�Q�2�3�4�	
���B�&��=�=��:�=�6�6r+s
branchpoint()c�d^^�[USS[S55 URnU(d
[5$[	U5mS/[U5T-
-mUR
TS-S9H3nURU5HnUT:�dMTUT-
==S-
ss'M M5 URUU4SjSS9$)z$Changesets with more than one child.rsbranchpoint takes no argumentsr)r�c�>�TUT-
S:�$r_r-)r1�baserev�parentscounts ��r)r��branchpoint.<locals>.<lambda>�s���,�q�7�{�+�a�/r+s
<branchpoint>r	)	rrrKrAr�rar�r�r
)r&r'r(r�r1rvr�r�s      @@r)�branchpointr�ys�����A�q�!�Q�8�9�:�	
���B���y���&�k�G��3�#�d�)�g�-�.�L�
�W�W�7�Q�;�W�
'�����q�!�A��G�|��Q��[�)�Q�.�)�"�(��=�=�/�:J���r+smin(set)c��[U[U5U5nUR5nXA;a
[U/SX4S9$[SX4S9$![a Nf=f)z-Changeset with lowest revision number in set.s<min %r, %r>ru)r*r@r�rArwrxs     r)rcrc�rzr{smodifies(pattern)c�F�[U[S55n[XUS5$)z�Changesets modifying files matched by pattern.

The pattern without explicit kind like ``glob:`` is expected to be
relative to the current directory and match against a file or a
directory.
smodifies requires a pattern�modifiedr�r�s    r)�modifiesr��s%���A�q�7�8�
9�C��t�S�*�5�5r+snamed(namespace)c	��^�[USS[S55n[US[S55n[R"U5upVn[5nUS:XaQUTR;a"[R"[S5U-5eURTRU5 OCTRR5H%up�U"U	5(dMURU5 M' [5n
UHWnURT5H?n	X�R;dMU
RU4SjURTU	555 MA MY U
[1-n
X-$)zxThe changesets in a given namespace.

Pattern matching is supported for `namespace`. See
:hg:`help revisions.patterns`.
rs#named requires a namespace argumentrs&the argument to named must be a stringrsnamespace '%s' does not existc3�J># �UHnTUR5v� M g7fr5r)rLrTr&s  �r)rM�named.<locals>.<genexpr>�s����I�4H�q�T�!�W�[�[�]�]�4H�r�)rrr�rrr��namesr
r0r�r��	listnames�
deprecatedr�rHr)r&r'r(r��nsrrr�
namespacesr$r�s`          r)�namedr��s0����1�a��A�D�E�F�D�	��Q��	�
3�4�
�B�
(�5�5�b�9��D�7���J��z���$�*�*�$��'�'��2�3�b�8��
�	���t�z�z�'�*�+��
�
�(�(�*�H�D��t�}�}����r�"�+�
�E�E����L�L��&�D��=�=�(����I�B�H�H�T�4�4H�I�I�'��

�g�Y��E��>�r+c���Sn[U5SURR-:Xa'URR	[U55nU$[R"X5nUbURR	U5nU$![Ra
 [nU$[R[4a SnU$f=f![a U$[Ra
 [nU$f=f)zprocess a node inputNrt)ra�
nodeconstants�nodelenrKr/rr
r�r�binascii�Error�LookupErrorr�resolvehexnodeidprefix)r&rTr/�pms    r)r(r(�s���	
�B�
�1�v��T�'�'�/�/�/�/�	����#�#�C��F�+�B��I�	��/�/��8�B��~��^�^�'�'��+��
�I���$�$�	��B��I�����,�	��B��I�	���	���I��$�$�	��B�
�I�	�s/�$B�4C�C�$C�C�
C0�C0�/C0s
id(string)c��[USS[S55n[US[S55n[X5nUc
[	5$[	U/5nXa-$)zBRevision non-ambiguously specified by the given hex string prefix.rsid requires one argumentrsid requires a string)rrr�r(rA)r&r'r(r�rTr/�results       r)�node_r��sY��	��1�a��6�7�8�A��!�A�$��1�2�3�A�	�t��B�	�z��y��
�b�T�]�F��?�r+snone()c�D�[USS[S55 [5$)zNo changesets.rsnone takes no arguments)rrrAr�s   r)�noner��s ���A�q�!�Q�1�2�3��9�r+s
obsolete()c�f�[USS[S55 [R"US5nX-$)z6Mutable changeset with a newer version. (EXPERIMENTAL)rsobsolete takes no argumentssobsoleter=)r&r'r(�	obsoletess    r)rr�s1���A�q�!�Q�5�6�7����t�[�1�I���r+sonly(set, [set])c���URn[USS[S55n[U[	U5US5n[U5S:Xa`U(d
[
5$[[R"XS55nUR5Vs/sHnXv;dM
Xu;dMUPM nnO[U[	U5US5n[URX�S95n	X-$s snf)z�Changesets that are ancestors of the first set that are not ancestors
of any other head in the repo. If a second set is specified, the result
is ancestors of the first set that are not ancestors of the second set
(i.e. ::<set1> - ::<set2>).
rrtsonly takes one or two argumentsrF)�commonr�)rKrrr*r@rarAr�r	r�rZ�findmissingrevs)
r&r'r(r�r�rDr�r/rE�resultss
          r)�onlyr�s���
���B��1�a��A�@�A�B�D��T�;�t�,�d�1�g�6�G�
�4�y�A�~���9���%�.�.�t�e�D�E���{�{�}�
�$���%�
�.1�n�
�$�	�
����{�4�0�$�q�'�:���"�$�$�G�$�C�D�G�����
s�	C!�C!�#C!s
origin([set])c�^�Ub[T[T5U5nO[T5nU4SjnUVs1sH
oT"U5iM nnUS1-nX-$s snf)aV
Changesets that were specified as a source for the grafts, transplants or
rebases that created the given revisions.  Omitting the optional set is the
same as passing all().  If a changeset created by these operations is itself
specified as a source for one of these operations, only the source changeset
for the first operation is selected.
Nc�P>�[TU5nUcg[TU5nUcU$UnMr5)r3)r/r��prevr&s   �r)�	_firstsrc�origin.<locals>._firstsrc2s:����D�#�&���;��� ��s�+�D��|��
��C�r+)r*r@)r&r'r(r�r�r1�os`      r)�originr�$s`���	�}��t�[��.��2���D�!��
� %�%�u�!��1��u�A�%��$��K�A��:���		&s�Asoutgoing([path])c�N�SSKJnJn [USS[	S55nU=(a [US[	S55=(d SnU(aU/nO/n[
5n[R"XRU5H�n	U	R/4n
URXU
/5up�U(a UV
s/sHo�RU
5PM nn
URU0U	5nURR5 URXUS9nSSS5 UR!5 UR#WR$5 M� UR&nUVs1sHnUR)U5iM nnUU-$s sn
f!,(df   Nt=f!UR!5 f=fs snf)	z�Changesets not found in the specified destination repository, or the
default push location.

If the location resolve to multiple repositories, the union of all
outgoing changeset will be used.
r)�	discovery�hgrs"outgoing takes one or no argumentss#outgoing requires a repository pathr+)�	onlyheadsN)rxr�r�rrr�r�r�get_push_pathsr�r(�
addbranchrevs�lookup�peer�silent�findcommonoutgoing�closer��missingrKr/)r&r'r(r�r�r��destr�r�r,�branchesr��checkoutr/r��outgoingr�r1r�s                   r)r�r�Esh���	��1�a��@�A�B�A�	
�H�i��!��a� F�G�H�O�C�	��������e�G��&�&�t�W�W�e�<���;�;��?���)�)�$�h��C����04�5���K�K��$��D�5�����b�$�'��	������!�$�7�7��4�8���"�

�K�K�M����x�'�'�(�=�
���B�#�$�G�q������G�A�$��A�:���6�"�!��

�K�K�M��	%s0�3E7�#F
�=E<�F
�F"�<
F
	�F
�
Fs	p1([set])c���Uc?XR5R5nUS:�aU[U/5-$[5$[5nURn[U[
U5U5H'nURURU5S5 M) U[1-nX-$![Ra3 URXR5R55 Mf=f)z<First parent of changesets in set, or the working directory.r)r�r/rAr�rKr*r@r�r�r
r�r)r&r'r(rvr�r�r1s       r)r�r�rs���	�y��G�J�J�L�������6��G�Q�C�L�(�(��y��	��B�	
���B�
�D�+�d�+�Q�
/��	'��F�F�2�=�=��#�A�&�'�0�
�7�)�O�B��;����$�$�	'��F�F�4�7�:�:�<�#�#�%�&�	'�s�3#B(�(AC/�.C/s	p2([set])c�6�UcEXR5nUSR5nUS:�aU[U/5-$[5$[	5nUR
n[
U[U5U5H'nURURU5S5 M) U[1-nX-$![a
 [5s$f=f![Ra< XR5n[U5S:XaURUS5 M�M�f=f)z=Second parent of changesets in set, or the working directory.rrrt)rXr/rA�
IndexErrorr�rKr*r@r�r�r
r�rar)r&r'r(r�rvr�r1rXs        r)rdrd�s	��	�y�
�W�_�_�
��	��1��	�	��A��A�v������,�,��9��

��B�	
���B�
�D�+�d�+�Q�
/��	#��F�F�2�=�=��#�A�&�'�0��7�)�O�B��;����	��9��	���$�$�	#��g�o�o�'�G��7�|�q� ����w�q�z�"�!�	#�s)�'B.�	B.�9#C�.C�C�A	D�Dc��[XU5$r5)r�r%s    r)�
parentpostr��s��
�d�A��r+sparents([set])c��Uc0XR5Vs1sHo3R5iM nnOZ[5nURnURnUR
n[
U[U5U5HnU"U"U55 M U[1-nX-$s snf![Ra# U"SXR555 M_f=f)zM
The set of all parents for all changesets in set, or the working directory.
c3�@# �UHoR5v� M g7fr5rrAs  r)rM�parents.<locals>.<genexpr>�s���6�$5�q�5�5�7�7�$5�s�)rXr/r�rKr�r�r*r@r
r�r)	r&r'r(rvr�r��upr�r1s	         r)rXrX�s���
	�y�#�w���0�
1�0�!�e�e�g�0��
1��
�U��
�^�^��
�Y�Y���]�]�
���k�$�/��3�A�
7��:�a�=�!�4�
�7�)�O�B��;���2���(�(�
7��6�D�G�O�O�$5�6�6�
7�s�B�<B!�!3C�Cc�:�URRXU5$)z,helper to select all rev in <targets> phases)�_phasecache�	getrevset)r&r'�targetss   r)�_phaser��s�����%�%�d�V�<�<r+s_internal()c�d�[USS[S55 [X/[RQ76$)Nrs_internal takes no arguments)rrr�r�all_internal_phasesr�s   r)�	_internalr��s,���A�q�!�Q�6�7�8��$�<��!;�!;�<�<r+s_phase(idx)c�T�[USSS5n[USS5n[XU5$)Nrs_phase requires one argumentrs_phase expects a number)rr�r�)r&r'r(r��targets     r)�phaser��s1����1�a�8�9�A�
��!��8�
9�F��$��'�'r+sdraft()c�h�[USS[S55 [Rn[	XU5$)zChangeset in draft phase.rsdraft takes no arguments)rrr�draftr��r&r'r(r�s    r)r�r��s.���A�q�!�Q�2�3�4�
�\�\�F��$��'�'r+ssecret()c�h�[USS[S55 [Rn[	XU5$)zChangeset in secret phase.rssecret takes no arguments)rrr�secretr�r�s    r)r�r��s.���A�q�!�Q�3�4�5�
�]�]�F��$��'�'r+s
stack([revs])c���Uc[R"U5nX-$[R"/5n[	U[U5U5Hn[R"X5nX5-nM X-$)z\Experimental revset for the stack of changesets or working directory
parent. (EXPERIMENTAL)
)�stackmod�getstackrrAr*r@)r&r'r(�stacksr��currentstacks      r)rr�so��
	�y��"�"�4�(���?���!�!�"�%���t�[��%6��:�H�#�,�,�T�<�L��*�F�;��?�r+c�\�[US5nUS;a[e[
5nURn[U[U5U5H}nUS:XaURU5 MUS:Xa&URURU5S5 MHURU5nUS[:waURUS5 M}M X-$![[4a  [R"[S55ef=f![Ra3 URXR5R55 M�f=f![RaL XR!5n[#U5S:Xa&URUSR55 GM]GMaf=f)zv``set^0``
The set.
``set^1`` (or ``set^``), ``set^2``
First or second parent, respectively, of all changesets in set.
r)rrrts^ expects a number 0, 1, or 2rrt)�intrw�	TypeErrorr
r#rr�rKr*r@r�r�r�r�r/rrXra)	r&r'r(rTr"r�r�r1rXs	         r)�
parentspecr��sy��D���!��I���I�����

��B�	
���B�
�D�+�d�+�Q�
/����6��F�F�1�I�
�!�V�
+����r�}�}�Q�'��*�+�
-��-�-��*���1�:��(��F�F�7�1�:�&�)�0�"�;���+
�z�"�D����q�!A�B�C�C�D���(�(�
+����t�w�z�z�|�'�'�)�*�
+���(�(�
-��'�/�/�+���w�<�1�$��F�F�7�1�:�>�>�+�,�,�%�
-�s1�C�,#D�2E�0C>�AE�E�AF+�*F+spresent(set)c�d�[XX#5$![Ra
 [5s$f=f)z�An empty set, if any revision in set isn't found; otherwise,
all revisions in set.

If any of specified revisions is not present in the local repository,
the query is normally aborted. But this predicate allows the query
to continue even in such cases.
)r*r
r0rAr%s    r)�presentr�s1����d�A�-�-��� � ���y������/�/�
_notpublicc�R�[USSS5 [X/[RQ76$)Nrs_notpublic takes no arguments)rr�r�not_public_phasesr�s   r)�
_notpublicr�#s'���A�q�!�5�6��$�:��!9�!9�:�:r+s"_phaseandancestors(phasename, set)c�^^
^^�[USSS5n[US5n[T[T5US5n[R
m
[RnT
T
US.nXG;a[R"SU-5eXtmTRRmUUU4Sjn[R"TXXS9n	US	:XaU	RU
UU4S
j5n	X-$)Nrts)_phaseandancestors requires two argumentsrr)r��draftssecrets%r is not a valid phasenamec�>�T"TU5T:$r5r-)r/�getphase�minimalphaser&s ���r)�cutfunc�#_phaseandancestors.<locals>.cutfunc?s�����c�"�\�1�1r+)r�r�c�>�T"TU5T:H$r5r-)r1r�r�r&s ���r)r��$_phaseandancestors.<locals>.<lambda>Es���X�d�A�%6�%�%?r+)rrr*r@rr�r�r
r#r�r�r	r�r
)
r&r'r(r��	phasenamer�r��phasenamemapr�r�r�r�r�s
`         @@@r)�_phaseandancestorsr�*s�����1�a��H�I�D��$�q�'�"�I��t�[��&��Q��0�A��L�L�E�
�]�]�F�����L�
�$����=�	�I�J�J��*�L����%�%�H�2����d�A�7�D��H���{�{�?�@���=�r+spublic()c�d�[USS[S55 [X[R5$)zChangeset in public phase.rspublic takes no arguments)rrr�r�publicr�s   r)r�r�Is)���A�q�!�Q�3�4�5��$��
�
�.�.r+sremote([id [,path]])c��SSKJn [USS[S55nSn[	U5S:�a[US[S55nUS:XaUSR
5nSn[	U5S:�a[US[S	55nU(dS
n[R"SURU5nURU0U5nURU5n	X�;a#X	R5n
X�;a[U
/5$[5$)z�Local revision that corresponds to the given identifier in a
remote repository, if present. Here, the '.' identifier is a
synonym for the current local branch.
r)r�rrts(remote takes zero, one, or two argumentsr�sremote requires a string idr+s!remote requires a repository pathsdefaultsremote)rxr�rrrar�r(r�get_unique_pull_path_objr�r�r�r/rA)r&r'r(r�r��qr�r,r�rTr1s           r)�remoter�Qs����	��1�a��F�G�H�A��A�
�1�v��z��a��d�A�<�=�>���D�y���J������D�
�1�v��z���1��q�!E�F�G������+�+�I�t�w�w��E�D��G�G�D�"�d�#�E�
���Q��A��y��G�K�K�M���;��A�3�<���9�r+sremoves(pattern)c�F�[U[S55n[XUS5$)z�Changesets which remove files matching pattern.

The pattern without explicit kind like ``glob:`` is expected to be
relative to the current directory and match against a file or a
directory.
sremoves requires a pattern�removedr�r�s    r)�removesr�us%���A�q�6�7�
8�C��t�S�)�4�4r+srev(number)c�d�[XU5$![Ra
 [5s$f=f)z+Revision with the given numeric identifier.)�_revr
r0rAr�s   r)r/r/�s1����D�!�$�$��� � ���y���r�s_rev(number)c��[USS[S55n[[US[S555nU[;aURRU5 U[U/5-$![[
4a  [R"[S55ef=f![a# [R"[S5U-5ef=f)Nrsrev requires one argumentrsrev requires a numbersrev expects a numbersunknown revision '%d')rrr�r�r�rwr
r#r>rKrWr�r0rA)r&r'r(r�s    r)r�r��s���	��1�a��7�8�9�A�;��	�!�A�$��":� ;�<�=��	���	I��N�N����"��G�Q�C�L� � ��
�z�"�;����q�!8�9�:�:�;���	I��'�'��*B�(C�a�(G�H�H�	I�s�!A/�B"�/0B�"-Csrevset(set)c��[XX#5$)z�Strictly interpret the content as a revset.

The content of this special predicate will be strictly interpreted as a
revset. For example, ``revset(id(0))`` will be interpreted as "id(0)"
without possible ambiguity with a "id(0)" bookmark or tag.
)r*r%s    r)�revsetpredicater�s���$��)�)r+smatching(revision [, field])c�J^^^
^^�[USS[S55n[T[T5US5mS/n[	U5S:�a&[US[S55R
5n/nUH:nUS:Xa	U/SQ-
nMUS:Xa	US	S/-
nM!US
:XaSnURU5 M< [U5nSU;aS
U;aURS5 /SQmU4Sjn[U5nURUS9 /m
U4SjU4SjU4SjU4SjU4SjU4SjU4SjU4SjU4SjU4SjS.
nUHKn	URU	S5n
U
c"[R"[S5U	-5eT
RU
5 MM U
4SjmU
UU4SjnURUS UT4S!9$)"a�Changesets in which a given set of fields match the set of fields in the
selected revision or set.

To match more than one field pass the list of fields to match separated
by spaces (e.g. ``author description``).

Valid fields are most regular revision fields and some special fields.

Regular revision fields are ``description``, ``author``, ``branch``,
``date``, ``files``, ``phase``, ``parents``, ``substate``, ``user``
and ``diff``.
Note that ``author`` and ``user`` are synonyms. ``diff`` refers to the
contents of the revision. Two revisions matching their ``diff`` will
also match their ``files``.

Special fields are ``summary`` and ``metadata``:
``summary`` matches the first line of the description.
``metadata`` is equivalent to matching ``description user date``
(i.e. it matches the main metadata fields).

``metadata`` is the default field which is used when no fields are
specified. You can match more than one field at a time.
rrtsmatching takes 1 or 2 argumentsrsmetadatas1matching requires a string as its second argument)�user�description�date�diff�files�authorr�summaryr)
�phase�parentsrr�branchr
rr�substaterc�^>�TRU5$![a [T5s$f=fr5)rLrwra)r��
fieldorders �r)�fieldkeyfunc�matching.<locals>.fieldkeyfunc�s2���	#��#�#�A�&�&���	#��z�?�"�	#�s��,�,)�keyc�*>�TUR5$r5rrjs �r)r��matching.<locals>.<lambda>	����4��7�<�<�>r+c�*>�TUR5$r5�r(rjs �r)r�r	s���T�!�W�^�^�-r+c�*>�TUR5$r5r�rjs �r)r�r	rr+c�*>�TUR5$r5r�rjs �r)r�r	s���$�q�'�"5�"5�"7r+c�*>�TUR5$r5)rUrjs �r)r�r	����D��G�M�M�Or+c�*>�TUR5$r5)rXrjs �r)r�r	s���d�1�g�o�o�/r+c�*>�TUR5$r5)r�rjs �r)r�r	rr+c�">�TUR$r5)�substaterjs �r)r�r		s���t�A�w�/�/r+c�L>�TUR5R5S$rW)r��
splitlinesrjs �r)r�r
	s ���d�1�g�1�1�3�>�>�@��Cr+c	�|>�[TUR[R"TRSS05S95$)NsgitT)r�)ror�r�diffalloptsr�rjs �r)r�r	s1���4���G�L�L�h�2�2�4�7�7�V�T�N�K�L�L�
r+)
rr
rrrrrrr
rNs,unexpected field name passed to matching: %sc�>>�TVs/sH
o"U5PM sn$s snfr5r-)r1r��
getfieldfuncss  �r)r�r	s���}�5�}�!��1��}�5��5s�c�>�TH<nT"U5nSn[T5HupEX$U"U5:wdMSnM U(dM< g gr6)�	enumerate)	r(r/r�rrTr�r&�getinfor�s	      ���r)r\�matching.<locals>.matches	sN����C��S�\�F��E�!�-�0����9��!��$�!�E�1��u���r+s<matching%r %r>r	)rrr*r@rar��splitr�r�rYro�sortrr
r#r
)r&r'r(r��	fieldlist�fieldsrYr�_funcs�info�getfieldr\rr&r)r�s`           @@@@r)�matchingr2�s����4	��1�a��=�>�?�A��$��D�)�1�Q�4�0�D��
�I�
�1�v��z��
�a�D�
�B�C�
��%�'�		��F����K���8�8�F�
�g�
�
�x��)�)�F��	�!����M�M�%� ����[�F��V���&� 8����z�"�
�J�#��&�\�F�
�K�K�L�K�!��M�)�-�)�7�+�/�+�/�C�
�
�F����:�:�d�D�)�����"�"��A�B����
�
	���X�&��6�G�	��=�=��,>���+M�=�N�Nr+sreverse(set)c�R�[XX#5nU[:XaUR5 U$)zReverse order of set.)r*rbrs)r&r'r(r"r�s     r)rsrs+	s&��	�t�Q�&�A����	�	�	���Hr+s
roots(set)c�^^^�[T[T5U5mTRRmUUU4SjnUTR	USS9-$)z2Changesets in set with no parent changeset in set.c��>�T"U5HnSU::dMUT;dM g g![Ra4 TSR5HnUR5T;dM g gf=f)NrFT�r
r�rXr/)r1rvrXr&r�s  ���r)r
�roots.<locals>.filter:	sn���	!��Q�Z����6�a�1�f� � ���	�$�$�	!��$�Z�'�'�)���5�5�7�a�<� �*��		!�s'�#�#�#�#�<A+�#A+�&A+�*A+s<roots>r	)r*r@rKr�r
)r&r'r(r
rXr�s`   @@r)r�r�4	sF���	�t�[��&��*�A��n�n�'�'�G�	��A�H�H�V�j�H�9�9�9r+i���c�6�UR[[5$r5)�randint�MININT�MAXINT)r��gens  r)�pick_randomr=L	s���;�;�v�v�&�&r+c�"�UR5$r5r�r�s r)r�r�S	s
�����r+c�"�UR5$r5r�r?s r)r�r�T	s
��q�}�}�r+c�"�UR5$r5rr?s r)r�r�U	s
��q�v�v�xr+c�"�UR5$r5rr?s r)r�r�V	s
�����r+c�(�UR5S$rWr�r?s r)r�r�W	s��q�v�v�x��{r+)�revr
sdescrr	rsnode�randomc��[USS5nSU;a[R"[S55eSnSU;a[	US[S55n/nUR5HznUnUR
S5nU(aUS	S
nU[;a<US:wa6[R"[S5[R"U5-5eURXF45 M| [U5S	:�a6[S
U55(a[R"[S55e0nSU;a?[SU55(a	USUS'O[R"[S55eSU;aU[SU55(aUSn[	U[S55n	X�S'O[R"[S55eUSX74$)z5Parse sort options into (set, [(key, reverse)], opts)ssorts%set keys topo.firstbranch random.seedr�s"sort requires one or two argumentsrDskeysssort spec must be a string�-rN�toposunknown sort key %rc3�0# �UHupUS:Hv� M g7f�rHNr-�rLr�rss   r)rM�_getsortargs.<locals>.<genexpr>x	s��� I��*�!��g�����s7topo sort order cannot be combined with other sort keys�topo.firstbranchc3�0# �UHupUS:Hv� M g7frJr-rKs   r)rMrL�	s���7�h�
��q�G�|�h�rMs>topo.firstbranch can only be used when using the topo sort key�random.seedc3�0# �UHupUS:Hv� M g7f)rENr-rKs   r)rMrL�	s���9��*�!�q�I�~��rMsrandom.seed must be a strings;random.seed can only be used when using the random sort key)
r�r
r#rr�r+r9�
_sortkeyfuncsr�bytestrr�rarV)
r(r�r��keyflagsr��fkrsr�r��seeds
          r)�_getsortargsrW]	s����	��0��D�
�T�����q�!F�G�H�H��D��$����g���*G�(H�I���H�
�Z�Z�\��
���,�,�t�$����!�"��A��M�!�a�7�l��"�"��(�)�H�,<�,<�R�,@�@��
�	�����%���8�}�q��S� I�� I�I�I����
�H�I�
�	
��D��d�"��7�h�7�7�7�(,�-@�(A�D�$�%��"�"��4���
�����9��9�9�9��^�$�A��Q��"A� B�C�D�#'�� ��"�"��6���
���<��'�'r+ssort(set[, [-]key... [, ...]])c�:^^�[U5upEn[TXU5nU(a
U[:waU$[U5S:Xa#USSS:XaUR	USSS9 U$USSS:Xa~SnTR
RmTn	[U;aUU4Sjn	SU;a[TXS5n[[R"XyU5S	S
9nUSS(aUR5 U$UV
s/sHn
TU
PM
 nn
[U5HXup�[UnUS:Xa5SU;a/USn[R"U5n
[ R""X�S
9nUR	X�S9 MZ [UVs/sHnUR%5PM sn5$s sn
fs snf)aSort set by keys. The default sort order is ascending, specify a key
as ``-key`` to sort in descending order.

The keys can be:

- ``rev`` for the revision number,
- ``branch`` for the branch name,
- ``desc`` for the commit message (description),
- ``user`` for user name (``author`` can be used as an alias),
- ``date`` for the commit date
- ``topo`` for a reverse topographical sort
- ``node`` the nodeid of the revision
- ``random`` randomly shuffle revisions

The ``topo`` sort order cannot be combined with other sort keys. This sort
takes one optional argument, ``topo.firstbranch``, which takes a revset that
specifies what topographical branches to prioritize in the sort.

The ``random`` sort takes one optional ``random.seed`` argument to control
the pseudo-randomness of the result.
rrrD)rsrHr-c�>�T"U5$![Ra: TSR5Vs/sHoR5PM Os snfsns$f=fr5r6)r1rvr�r&s  ��r)�parentsfunc�sort.<locals>.parentsfunc�	sR���C�%�a�=�(���,�,�C�-1�$�Z�-?�-?�-A�B�-A��E�E�G�-A��B�B�C�s��)A�A�
	A�ArNT)�istoporErP)r<)rrs)rWr*rbrar,rKr�rrAr	�toposortrs�reversedrR�random�Random�	functools�partialr/)r&r'r(r"r�rTr�r��firstbranchrZr1�ctxsr�rsr�rVr�r�s`                @r)r,r,�	s����2%�Q���A���$��5�)�D��u��+���
�8�}���h�q�k�!�n��6��	�	�(�1�+�a�.�	�)���	�!��Q��7�	"����^�^�.�.�
� ���d�?�
C��$�&� ��v�4G�/H�I�K���N�N�4�k�:��
���A�;�q�>��L�L�N���"�"�T��D��G�T�D�"��x�(�
���Q����	�>�n��4���'�D��
�
�d�#�A��$�$�T�1�D��	�	�d�	�,�
)��T�*�T��A�E�E�G�T�*�+�+��#��+s�1F�2Fssubrepo([pattern])c�^^^^�[USS[S55nSm[U5S:wa[US[S55m[R
"S/5mU4SjmUUUU4SjnUR
US	T4S
9$)z|Changesets that add, modify or remove the given subrepo.  If no subrepo
pattern is named, any subrepo changes are returned.
rrs"subrepo takes at most one argumentNssubrepo requires a patterns.hgsubstatec3�x># �[R"T5upnUHnU"U5(dMUv� M g7fr5)rr)r�r�rvrSr$r�s     �r)�
submatches�subrepo.<locals>.submatches�	s2�����*�*�3�/���a��D���w�w��
��s�*:�	:c�x>�TUnTRUR5R5UR5TS9nTc2UR=(d UR=(d UR
$UR(a)[
T"URR555$UR(a�[UR5RR55nURURR55 T"U5HKnUR5RRU5URRU5:wdMK g UR
(a7[
T"UR5RR555$g)N)rTF)rr�rWr�r�r�rVr r�r�r�r)	r(r�r��subsr,rSr�r&rgs	     ����r)r\�subrepo.<locals>.matches�	s�����G���K�K�������
�q�v�v�x�q�K�9���;��7�7�5�a�j�j�5�A�I�I�5��7�7��z�!�*�*�/�/�"3�4�5�5��:�:��q�t�t�v���+�+�-�.�D��K�K��
�
���)�*�"�4�(���4�4�6�?�?�&�&�t�,��
�
���t�0D�D��)�
�9�9��z�!�$�$�&�/�/�"6�"6�"8�9�:�:�r+s<subrepo %r>r	)rrrar�rQ�exactr
)r&r'r(r�r\rSr�rgs`    @@@r)�subreporm�	s{����1�a��A�C�D�E�D�
�C�
�4�y�A�~���Q���#@�!A�B������'�(�A����.�=�=��O�S�+A�=�B�Br+c�N^�UR5RnURRnURmU"U4SjU55Vs1sH
oT"U5iM nnURS5 [R"X`RR-
5$s snf)z�(repo, smartset, [node] -> [node]) -> smartset

Helper method to map a smartset to another smartset given a function only
talking about nodes. Handles converting between rev numbers and nodes, and
filtering.
c3�4># �UH
nT"U5v� M g7fr5r-)rLr1�tonodes  �r)rM�!_mapbynodefunc.<locals>.<genexpr>
s����!7�Q��&��)�)�Q�rON)	�
unfilteredrKrL�get_revrWrYrrA�filteredrevs)r&r�r�r��torevrTr�rps       @r)�_mapbynodefuncrv
s����
���	�	$�	$�B��H�H���E�
�W�W�F� !�!7�Q�!7� 7�
8� 7�1�e�A�h� 7�F�
8�
�N�N�4�����F�^�^�%@�%@�@�A�A��9s�B"ssuccessors(set)c�\^�[T[T5U5nU4Sjn[TX45nX-$)zJAll successors for set, including the given set themselves.
(EXPERIMENTAL)c�F>�[R"TRU5$r5)r�
allsuccessors�obsstore)rHr&s �r)r��successors.<locals>.<lambda> 
s���g�+�+�D�M�M�5�Ar+)r*r@rv)r&r'r(r�r��ds`     r)�
successorsr}
s1���	�t�[��&��*�A�A�A��t�Q�"�A��:�r+c�^�[R"TUS9unmnUS:Xa*U(d[R"T5mU4SjnOU4SjnUTU4$)Nrrc�6>�T[R"U5;$r5re�r�rs �r)r��#_substringmatcher.<locals>.<lambda>,
s����8�>�>�!�+<� <r+c�>�TU;$r5r-r�s �r)r�r�.
s	����1�r+)rrrr)rrrrs`   r)rr%
sQ���'�5�5��}���D�'�7��z����n�n�W�-�G�<�G�,�G���'�!�!r+stag([name])c��[USS[S55nURnU(a�[US[S55n[R
"U5upenUS:XabURRRUS5nUc"[R"[S5U-5eXR51n	X-$UR5V
Vs1sH%up�U"U
5(dMURU5iM' n	n
nX-$UR5V
Vs1sHup�U
S:wdM
URU5iM  n	n
nX-$s snn
fs snn
f)	z�The specified tag by name, or all tagged revisions if no name is given.

Pattern matching is supported for `name`. See
:hg:`help revisions.patterns`.
rrstag takes one or no argumentss$the argument to tag must be a stringrNstag '%s' does not existstip)
rrrKr�rr�
_tagscache�tagsrr
r0r/�tagslist)r&r'r(r�r�rrr�tnr�rfrTs            r)�tagr�2
s6���1�a��A�>�?�@�D�	
���B�����G�
�5�6�
��
",�!9�!9�'�!B���w��:�����%�%�)�)�'�4�8�B��z��+�+��0�1�G�;�������� �A�
�:��(,�}�}��E��t�q�'�!�*��������A�E�A��:��$(�=�=�?�B�?�4�1�a�6�k�Y�R�V�V�A�Y�?��B��:���F��Bs�E
�.E
�E�.Estaggedc��[XU5$r5)r�r�s   r)�taggedr�R
s���t�Q��r+sorphan()c�f�[USS[S55 [R"US5nX-$)z?Non-obsolete changesets with obsolete ancestors. (EXPERIMENTAL)rsorphan takes no arguments�orphanr=)r&r'r(�orphans    r)r�r�W
s0���A�q�!�Q�3�4�5�
�^�^�D�)�
,�F��?�r+s
unstable()c�2�[USSS5 [5nUR[R"US55 UR[R"US55 UR[R"US55 U[U5-$)z-Changesets with instabilities. (EXPERIMENTAL)rsunstable takes no argumentsr�r<r�)rr�r�r>r?rA)r&r'r(�	_unstables    r)�unstabler�`
sw���A�q�!�3�4���I�
���V�^�^�D�)�4�5�
���V�^�^�D�*;�<�=�
���V�^�^�D�*=�>�?��G�I�&�&�&r+suser(string)c��[XU5$)z�User name contains string. The match is case-insensitive.

Pattern matching is supported for `string`. See
:hg:`help revisions.patterns`.
)rr�s   r)rrl
s���$��"�"r+swdir()c��[USS[S55 [U;d[U[5(a[[/5$[5$)z!Working directory. (EXPERIMENTAL)rswdir takes no arguments)rrrr?r@rAr�s   r)�wdirr�v
sA���A�q�!�Q�1�2�3��&��J�v�{�;�;���y�!�!��9�r+c���[US5nU(d
[5$URn/n[5nUR	S5H|n[U5nSU-U:wdX�;a[eU/n	U	HPnX�;aM
X�;dU[;a&[U[5(aURU5 URU5 MR M~ [U5$![a [XU[5n	N�f=f)N�internal error�s%d)r�rArKr�r+r�rwrBrbr>r?r@r�r�)
r&r'r(r�r�rU�seenrfr1r�s
          r)�_orderedlistr��
s����!�&�'�A���y��
���B�	�B��5�D�
�W�W�U�^��	;��A��A���	�a��1�;� � ��3�D��A��y������$��v�{�3�3��	�	�!���H�H�Q�K���(�2�;����	;��T�1�k�:�D�	;�s�"C�C0�/C0s_listc�`�U[:XaU[U[U5U5-$[XU5$r5)rDr�r@r%s    r)�_listr��
s0�������T�;�t�+<�a�@�@�@��D�!�,�,r+c���[US5nU(d
[5$URS5Vs/sHn[U5PM nnUn[UVs/sHoDU;dM
UPM sn5$s snfs snf�Nr�r�)r�rAr+r�)r&r'r(r�r1rUs      r)�_orderedintlistr��
se���!�&�'�A���y���'�'�%�.�	)�.�Q�#�a�&�.�B�	)��A��r�,�r�!�!�V�A�r�,�-�-��
*��,s�A-�	A2� A2s_intlistc�`�U[:XaU[U[U5U5-$[XU5$r5)rDr�r@r%s    r)�_intlistr��
�0��������k�$�.?��C�C�C��t�Q�/�/r+c�"�[US5nU(d
[5$URnURS5Vs/sHoTR	[U55PM nnUn[UVs/sHoUU;dM
UPM sn5$s snfs snfr�)r�rArKr+r/r)r&r'r(r�r�r1rUs       r)�_orderedhexlistr��
st���!�&�'�A���y��	
���B�"#�'�'�%�.�	1�.�Q�&�&��Q��.�.�B�	1��A��r�,�r�!�!�V�A�r�,�-�-��
2��,s�#B�-	B�:Bs_hexlistc�`�U[:XaU[U[U5U5-$[XU5$r5)rDr�r@r%s    r)�_hexlistr��
r�r+sranger�srangepres	rangepostsdagrangerMssymbolsands	andsmally�orsnots
differencesrelationsrelsubscripts	subscript�listskeyvalue)sfuncsancestorsparents
parentpostssmartsetsnodeset)�gsgenerationsc�^�U4SjnU$)Nc�>�[R"TU5$![Ra [R"SU-5ef=f)Ns!ambiguous revision identifier: %s)r�isrevsymbolr
�AmbiguousPrefixLookupError�
InputError)�symbolr&s �r)r��lookupfn.<locals>.fn�
sK���	��&�&�t�V�4�4���/�/�	��"�"�4�v�=��
�	�s	��.Ar-)r&r�s` r)�lookupfnr��
s�����Ir+c��[X/US9$)z+Create a matcher for a single revision spec)r�)�matchany)r��specr�s   r)rrs���B��v�.�.r+c�^�U(dSSjnU$[U5(d[R"[S55e[	U5S:Xa[
R"UST5nOSS[U4SjU55-4n/nSnU(a,URURS	55 URnU(aURUR55 U(a[
R"XVUS
9n[
R"U5n[
R"U5n[
R"U5n[!U5$)aMCreate a matcher that will include any revisions matching one of the
given specs

If lookup function is not None, the parser will first attempt to handle
old-style ranges, which may contain operator characters.

If localalias is not None, it is a dict {name: definitionstring}. It takes
precedence over [revsetalias] config section.
Nc��[5$r5)rA)r&r's  r)�mfunc�matchany.<locals>.mfuncs
���9�r+sempty queryrrr�)r�c3�R># �UHn[R"UT5v� M g7fr5)r�parse)rLr�r�s  �r)rM�matchany.<locals>.<genexpr>s!����J�E�q�z�/�/��6�:�:�E�s�$'srevsetalias)�warnr5)�allr
r#rrarr��tupler�configitemsr�r��
expandaliases�
foldconcat�analyze�optimize�makematcher)r��specsr��
localaliasr��tree�aliasesr�s  `     r)r�r�s����	����u�:�:����q��0�1�1�
�5�z�Q������a��&�1��
���J�E�J�J�J�
��
�G��D�	����r�~�~�n�5�6��w�w������z�'�'�)�*���'�'��D�A��� � ��&�D����d�#�D����t�$�D��t��r+c�^�SU4SjjnU$)z)Create a matcher from an evaluatable treec�`>�UcUc[nO[nUc[U5n[XTU5$r5)rbrDr@r*)r&r'r"r�s   �r)r��makematcher.<locals>.mfunc3s5����=��~�#��#���>� ��&�F��d�D�%�0�0r+r�r-)r�r�s` r)r�r�0s���1��Lr+c��URR5H6up4U[U'UR(dM![RU5 M8 g)z2Load revset predicates from specified registrarobjN)�_tabler�r��_safe�safesymbolsr�)r��extname�registrarobjr$r�s     r)�
loadpredicater�@s;��"�)�)�/�/�1�
�����
��:�:�:��O�O�D�!�2r+)FNN)F)Tr5r�)��
__future__rr�rar_r��i18nrrWrrrrxr	r
rrr
rr�rrrQrr>rrrrrrrrrrr�r�utilsrrrrr�r�rrzr�rr�rArr`r@r>rirbrDr*r3r:rBrErIrGrUrYr[r]rOrfrlrnrrrur{r}r�r�r�r�r�r�r�r�r�r�r�r�r�	predicater�r�r�r�r�r�r�r�r�rrrr%r(r@rEr�rer�rlrrrtrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r.r�rPrrrr#r1r3rKrNrVr�rarjr�rQryr�r�rcr�r�r(r�r�r�r�r�r�rdr�rXr�r�r�r�r�r�r�r�r�r�r�r�r/r�r2rsr�r;r:r=r<�binnoderRrWr,rmrvr}rr�r�r�r�rr�r�r�r�r�r�r�r$r�r�r�r�r�r�r�
i18nfunctionsr-r+r)�<module>r�s�
��#���
�	����
������,��
� � �	�� � �	�
�
"�
"�
�
�
"�
"�
�
�
�
���$�$��
�
�
���$�$��
�
�
���$�$��
�
�
���"�"����!��P������
#.�<��>����/�C�J�
;���&�C�C�N��3�6�	1�!�>=�
�<	1�H��M�+�,�
�
��
�e���%�%�'�	��>������=��M��M���$�r�2�	3�3�	3��"��c�:��;��,DH���%�D�1��2��>��D�)�9�*�9��(�*��4��3��4����4�(��)��&�;�T�"�#�#�#���T�*�"�+�"�J�#�$�r�:�0�;�0�f��T�*�	#�+�	#��;�T�"�	�#�	�"�J�"��$�'��(���;�T�"�-��.���'�d�3�	"�4�	"��"��.��/����D�)��*����D�)��*�����,�D�-�D�6��D�)��*��0��4��3��4���?��b�1�
�2�
�"DH���'�d�3��4��B��d�+�;�,�;�� �t�B�7�,�8�,�^�#�C�0�&M�1�&M�R� �t�,�%�-�%��%�D�D�A�(�B�(�V��E�#�6�
"�7�
"��<�d�#��$���#�$�/��0��B��T�*�<�+�<�~��D�D��C�)�D�)�
�6�(�t�4�/�5�/��?��&�G�'�G��F�	
��B�	�B�J� �!�(�"�(�0�8�$��"� �"��>�"�%�G�&�G�.�>��%�W�&�W�t��$�r�2�
?�3�
?��9�4� � �!� ��=�t�t�4��5��(�;�T�"��#����D��4�B�5�B�(�'�d�d�1�M��N��.��4�4�8��9��&�;�T�"�;�#�;��:�D�!�7�"�7���$�'��(��(�;�T�"�;�#�;���d�2�6�	6�7�	6����"� �"�J�,�=�t�$��%���9�4� ��!���=�t�$��%����T�*��+��:��$�'��(��@��U�2�6�)�7�)�X�<�d�#��$��*�<�d�#��$��6���4�(��)��(=�
�>��%�=�&�=�
�>��%�(�&�(��:�D�!�(�"�(��;�T�"�(�#�(���$�'��(���D�?���6��7���=�t�$�;�%�;��0�t�<��=��<�;�T�"�/�#�/��"��/� �0� �F��T�"�5�	5�6�	5��>��%��&���?��&�!�'�!�$�>���5�*�6�*��*��6�~O�7�~O�B�?���a�@�
�A�
��=�t�$�:�%�:�&
��
��1����'�
�N�N�#�
&�
�!�
"�
�_�_��	�
�<(�~�%�D�D���=,��=,�@� �!�)C�"�)C�XB���D�)��*��
"��>��%��&��>�9�4� � �!� ��;�T�"��#���=�t�$�'�%�'��?��b�1�#�2�#��9�4��*��+���B�8�$�$�/�-�0�-�.��;�T�T�!�<�0�=�0�.��;�T�T�2�0�3�0���h���������)�	�
����y�
��y���F���,��
�5���F���=������_���,�� �W�!�"��#�$������/��6�"�
�	��%���	�/�
&�R
� "��d�D�)�$���� �
r+

Youez - 2016 - github.com/yon3zu
LinuXploit