403Webshell
Server IP : 74.208.236.52  /  Your IP : 216.73.216.240
Web Server : Apache
System : Linux infong527 4.4.400-icpu-115 #2 SMP Mon Jul 6 08:15:05 UTC 2026 x86_64
User : u44043973 ( 5404757)
PHP Version : 8.4.24
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /kunden/kunden/usr/lib/python3/dist-packages/mercurial/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

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

6�h�&���SSKJr SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
rSSKJ
r
 SSKJr SSKJrJrJr SSKJrJrJrJrJrJrJrJrJrJrJ r J!r!J"r"J#r$ SSK%J&r' SS	K(J)r)J*r*J+r+J,r, Sq-\!R\r.\!R^r/\!R`r0\"Rbr1S
r2Sr3"SS
\Rh5r5Sr6Sr7Sr8Sr9SSSS.r:Sr;S!Sjr<Sr="SS5r>"SS\>5r?"SS\>5r@"SS\>5rA\?\@\AS .rBg)"�)�annotationsN�)�_)�MatcherT)�bin�hex�short)�cmdutil�encoding�error�exchange�
logcmdutil�match�merge�pathutil�phases�pycompat�scmutil�subrepoutil�util�vfs)�status)�dateutil�hashutil�procutil�urlutilc��[R"[R"U55n[R"U5nUR
(d4[R"[R"UR55nU$)zM
get a path or url and if it is a path expand it and return an absolute path
)	r�urllocalpathr�
expandpath�url�scheme�normpath�abspath�path)r$�expandedpath�us   �3/usr/lib/python3/dist-packages/mercurial/subrepo.py�_expandedabspathr(>sR���'�'�����(=�>�L����L�!�A��8�8��}�}�T�\�\�!�&�&�1�2���K�c�t�[[R"[U55R	55SS$)zEget a unique filename for the store hash cache of a remote repositoryr�)rr�sha1r(�digest)�
remotepaths r'�_getstorehashcachenamer/Is,���x�}�}�-�j�9�:�A�A�C�D�Q�r�J�Jr)c��\rSrSrSrSrSrg)�SubrepoAbort�NzEException class used to avoid handling a subrepo error more than oncec��URSS5UlURSS5Ul[RR
"U/UQ70UD6 g)N�subrepo�cause)�popr4r5r�Abort�__init__)�self�args�kws   r'r8�SubrepoAbort.__init__QsB���v�v�i��.����V�V�G�T�*��
�
�����T�/�D�/�B�/r))r5r4N)�__name__�
__module__�__qualname__�__firstlineno__�__doc__r8�__static_attributes__�r)r'r1r1Ns
��O�0r)r1c�^�U4SjnU$)Nc�>�T"U/UQ70UD6nU$![anUeSnAf[RaVn[U5nURS-[S5U--n[XdRU[R"5S9eSnAff=f)N� s(in subrepository "%s"))�hintr4r5)	r1rr7�
subrelpath�messagerrG�sys�exc_info)r9r:�kargs�res�exr4�errormsg�funcs       �r'�decoratedmethod�-annotatesubrepoerror.<locals>.decoratedmethodXs����
	��t�,�d�,�e�,�C��
���	��H���{�{�	� ��&�G��
�
�T�!�A�&@�$A�G�$K�K�
���w�w��s�|�|�~��
��
	�s��
B
��B
�AB�B
rC)rPrQs` r'�annotatesubrepoerrorrSWs����"�r)c��U(a[S5[U5X44-nO[S5[U5X44-nURUS5$)Ns� subrepository sources for %s differ
you can use (l)ocal source (%s) or (r)emote source (%s).
what do you want to do?$$ &Local $$ &Remotes� subrepository sources for %s differ (in checked out version)
you can use (l)ocal source (%s) or (r)emote source (%s).
what do you want to do?$$ &Local $$ &Remoter)rrH�promptchoice)�ui�sub�dirty�local�remote�msgs      r'�
_updatepromptr\ls^����
$�
�
��_�e�,�-���
$�
���_�e�,�
-���?�?�3��"�"r)c��UR5H�up4n[U5HupgUR5U:XdMXF	 O URU5R5S:waMWUHenUR5S:XdMUR	[S5UR
U5-5 URURX855 Mg M� g)Ns.hg�hgrcs5warning: removing potentially hostile 'hgrc' in '%s'
)	�walk�	enumerate�lower�basename�warnr�join�unlink�reljoin)	rVr�ignore�dirname�dirs�names�i�d�fs	         r'�	_sanitizerns��� #���
���u��d�O�D�A��w�w�y�F�"��G��$��<�<�� �&�&�(�F�2���A��w�w�y�G�#�����%���h�h�w�'�	(���
�
�3�;�;�w�2�3��!+r)c��URS5(d SU;d[R"U5U:wa"[R"[S5U-5e[R"UR5"U5 URRU5(a"[R"[S5U-5eg)N�~�$�+subrepo path contains illegal component: %ss$subrepo '%s' traverses symbolic link)�
startswithrrrr7rr�pathauditor�root�wvfs�islink)�repor$s  r'�_auditsubrepopathry�s������t����������0E��0M��k�k�
�<�=��D�
�	
�
������#�D�)��y�y�������k�k�!�C�D�t�K�L�L�r)TF)�hg�git�svnc��URSSS5(d'[R"[S5[S5S9e[RUS5nURSSU-U5(d*[R"[S	5U-[S5S9eU[;a"[R"[S
5U-5eg)N�subrepossallowedTssubrepos not enableds)see 'hg help config.subrepos' for details�rGFs
%s:alloweds%s subrepos not allowedsunknown subrepo type %s)�
configboolrr7r�SUBREPO_ALLOWED_DEFAULTS�get�types)rV�kind�defaults   r'�
_checktyper��s����=�=��j�$�7�7��k�k�
�%�&��?�@�
�	
�
'�*�*�4��7�G�
�=�=��m�d�&:�G�D�D��k�k�
�(�)�D�0��?�@�
�	
�
�5���k�k�!�6�7�$�>�?�?�r)c��SSKJn UqUR5n[XQ5 URUn[URUS5 U(aUSURU5US4n[US"XUSSU5$)z>return instance of the right subrepo class for subrepo in pathr��hg�rN)	�r�rxry�substater�rV�subrevr�)�ctxr$�	allowwdir�allowcreate�hrx�states       r'r4r4�s|���	
�B��8�8�:�D��d�!��L�L���E��t�w�w��a��!���q��3�:�:�d�+�U�1�X�6����q��?�3�e�B�Q�i��=�=r)c���SSKJn UqUR5n[XA5 URUn[URUS5 SnUSS:XaSn[US"X!USU4S5$)	z=return an empty subrepo in pctx for the extant subrepo in ctxrr�r�r)rzs(0000000000000000000000000000000000000000rT)r�r�rxryr�r�rVr�)r�r$�pctxr�rxr�r�s       r'�nullsubrepor��su���	
�B��8�8�:�D��d�!��L�L���E��t�w�w��a��!�
�F��Q�x�5������q��?�4��a��&�'9�4�@�@r)c�$�\rSrSrSrSrSrS(SjrS(SjrS)Sjr	S	r
S
rSrSr
S
rS*SjrSrSrSrSrSrS+SjrSrSrSrSrSrSrS,SjrSrS-S.SjjrSrSr S r!S!r"S"r#S#r$S*S$jr%\&S%5r'\&S&5r(S'r)g)/�abstractsubrepo��c�Z�UR5RUlXlX lg)z�Initialize abstractsubrepo part

``ctx`` is the context referring this subrepository in the
parent repository.

``path`` is the path to this subrepository as seen from
innermost repository.
N)rxrV�_ctx�_path)r9r�r$s   r'r8�abstractsubrepo.__init__�s���(�(�*�-�-����	��
r)c��g)z�Add the hgwebdir entries for this subrepo, and any of its subrepos.

``serverpath`` is the path component of the URL for this repo.

``webconf`` is the dictionary of hgwebdir entries.
NrC�r9�
serverpath�webconfs   r'�
addwebdirpath�abstractsubrepo.addwebdirpath�s��	
r)c��g)zo
returns true if the repository has not changed since it was last
cloned from or pushed to a given repository.
FrC�r9r$s  r'�
storeclean�abstractsubrepo.storeclean�s��
r)c��[e)z�returns true if the dirstate of the subrepo is dirty or does not
match current stored state. If ignoreupdate is true, only check
whether the subrepo has uncommitted changes in its dirstate.  If missing
is true, check for deleted files.
��NotImplementedError�r9�ignoreupdate�missings   r'rX�abstractsubrepo.dirtys
��"�!r)c�Z�URXS9(a[S5[U5-$g)z�return reason string if it is ``dirty()``

Returned string should have enough information for the message
of exception.

This returns None, otherwise.
�r�r�s)uncommitted changes in subrepository "%s"N)rXrrHr�s   r'�dirtyreason�abstractsubrepo.dirtyreasons6���:�:�<�:�A��A�B�Z��F��
�Br)Nc�Z�URUSS9nU(a[R"X2S9eg)z+raise Abort if subrepository is ``dirty()``Tr�rN)r�rr7)r9r�rGr�s    r'�
bailifchanged�abstractsubrepo.bailifchangeds.���&�&�L�$�&�O����+�+�k�5�5�r)c��[e)zhcurrent working directory base state, disregarding .hgsubstate
state and working directory modificationsr��r9s r'�	basestate�abstractsubrepo.basestates
��"�!r)c��g)z7check if path is a subrepository within this repositoryFrCr�s  r'�checknested�abstractsubrepo.checknested$s��r)c��[e)z�commit the current changes to the subrepo with the given
log message. Use given user and date if possible. Return the
new state of the subrepo.
r�)r9�text�user�dates    r'�commit�abstractsubrepo.commit(�
��
"�!r)c�"�[R$)z6returns phase of specified state in the subrepository.)r�public�r9r�s  r'�phase�abstractsubrepo.phase/s���}�}�r)c��[e)zDremove the subrepo

(should verify the dirstate is not dirty first)
r�r�s r'�remove�abstractsubrepo.remove3r�r)c��[e)zDrun whatever commands are needed to put the subrepo into
this state
r�)r9r��	overwrites   r'r��abstractsubrepo.get:s
��"�!r)c��[e)z/merge currently-saved state with the new state.r�r�s  r'r�abstractsubrepo.merge@���!�!r)c��[e)zXperform whatever action is analogous to 'hg push'

This may be a no-op on some systems.
r��r9�optss  r'�push�abstractsubrepo.pushDr�r)c��/$�NrC�r9rVr�prefix�uipathfn�explicitonlyr�s       r'�add�abstractsubrepo.addKs���	r)c�V�URRSU[S54-5 g)Ns%s: %ssaddremove is not supportedr�rVrcr)r9�matcherr�r�r�s     r'�	addremove�abstractsubrepo.addremoveNs%�������Y�&�!�,I�*J�!K�K�L�r)c��g�NrrC)r9r�fm�
fntemplater�r�s      r'�cat�abstractsubrepo.catR���r)c	�:�[R"///////5$r�)rr)r9�rev2r�s   r'r�abstractsubrepo.statusUs���~�~�b�"�b�"�b�"�b�9�9r)c��gr�rC)r9rV�diffopts�node2rr�r�s       r'�diff�abstractsubrepo.diffXs��r)c��gr�rC)r9rV�destr�s    r'�outgoing�abstractsubrepo.outgoing[r�r)c��gr�rC)r9rV�sourcer�s    r'�incoming�abstractsubrepo.incoming^r�r)c��[e)zreturn filename iteratorr�r�s r'�files�abstractsubrepo.filesar�r)c��[e)z9return file data, optionally passed through repo decodersr��r9�name�decodes   r'�filedata�abstractsubrepo.filedataer�r)c��g)zreturn file flagsr)rC)r9r�s  r'�	fileflags�abstractsubrepo.fileflagsis��r)c�*�[R"US9$)z,Resolve the fileset expression for this repo��badfn)�matchmod�never)r9�cwd�exprrs    r'�matchfileset�abstractsubrepo.matchfilesetms���~�~�E�*�*r)c��g)z)handle the files command for this subreporrC)r9rV�mr�r��fmt�subreposs       r'�
printfiles�abstractsubrepo.printfilesqs��r)c
�&�UR5Vs/sHoS"U5(dMUPM nn[U5n[U5nURR	[S5U-[S5US9n	U	R
S5 Sn
UHnnURU5nSU;=(a S=(d Sn
SU;nU
cU"5n
U
RX+-X�URX�55 U	R5 Mp U	R5 U$s snf)	N�archiving (%s)�files)�unit�totalr�xi�i��l)r��lenrHrV�makeprogressr�updater�addfiler�	increment�complete)r9�openerr�rrrmr�r�relpath�progress�archiverr��flags�mode�symlinks               r'�archive�abstractsubrepo.archiveus��� �J�J�L�5�L�q�E�!�H��L��5��E�
���T�"���7�7�'�'�
�� �7�*��8��E�(�
��	��������D��N�N�4�(�E��5�=�*�U�3�e�D��e�m�G���!�8������
�t�d�m�m�D�.I�
�
��� ��	�������'6s
�D�Dc��g)z^
walk recursively through the directory tree, finding all files
matched by the match function
NrC)r9rs  r'r_�abstractsubrepo.walk���r)c�
�//4$r�rC�r9rr�r��dryrun�interactives      r'�forget�abstractsubrepo.forget�s���B�x�r)c	�R�UR[S5UR-5 g)z�remove the matched files from the subrepository and the filesystem,
possibly by force and/or after the file has been removed from the
filesystem.  Return 0 on success, 1 on any warning.
s)warning: removefiles not implemented (%s)r)�appendrr��	r9r�r�r��after�forcerr0�warningss	         r'�removefiles�abstractsubrepo.removefiles�s'��	���
�:�;�d�j�j�H�	
�r)c�d�URR[S5USUS4-5 /$)Ns)%s: reverting %s subrepos is unsupported
rr�r��r9r��patsr�s    r'�revert�abstractsubrepo.revert�s7�������
�;�<���{�H�Q�K�(�
)�	
��	r)c��U$r�rC�r9�revids  r'�shortid�abstractsubrepo.shortid�s���r)c��g)z8
convert this repository from shared to normal storage.
NrCr�s r'�unshare�abstractsubrepo.unshare�r-r)c��g)averify the revision of this repository that is held in `_state` is
present and not hidden.  Return 0 on success or warning, 1 on any
error.  In the case of ``onpush``, warnings or errors will raise an
exception if the result of pushing would be a broken remote repository.
rrC)r9�onpushs  r'�verify�abstractsubrepo.verify�s��r)c��[R"URR5RRUR55$)z@return vfs to access the working directory of this subrepository)�vfsmodrr�rxrvrdr�r�s r'rv�abstractsubrepo.wvfs�s3���z�z�$�)�)�.�.�*�/�/�4�4�T�Z�Z�@�A�Ar)c��URR[URR	55UR
5$�zCreturn path to this subrepository as seen from outermost repository)rvrf�reporelpathr�rxr�r�s r'�_relpath�abstractsubrepo._relpath�s/���y�y� � ��T�Y�Y�^�^�-=�!>��
�
�K�Kr))r�r�rV�FF)FN�F��returnzistatus.Statusr��T�rr)*r=r>r?r@r8r�r�rXr�r�r�r�r�r�r�r�rr�r�r�r�rr�r�r�r�rrr
rr)r_r2r:r?rDrGrK�
propertycachervrSrBrCr)r'r�r��s����
��"��6�"�
�"��"�"�"�"����:�
���"�"��+���,���(���
��B��B��L��Lr)r�c�N^�\rSrSrU4Sjr\S5rSrSrSr	\
S5rSrS	r
S
r\S5r\S5r\S
5r\S5r\S.Sj5r\S5r\S/S0Sjj5r\S1Sj5rSrSr\S5r\S5r\S5rSr\S2Sj5r\S5r\S5r\S5r \S5r!\S5r"Sr#S r$\S!5r%\S3S"j5r&S#r'\S$5r(\S%5r)\S&5r*S'r+S(r,\S)5r-S2S*jr.\
S+5r/\
S,5r0S-r1U=r2$)4�	hgsubrepoi�c�>�[T
U]X5 X0lUR5nUR	[
R"U55nU=(a# URRSU-5(+n[RRU5n[RR[RR[
R"U555n	X�:wa"[R"[!S5U-5e["R%UR&XgS9Ul[RRUR(R*5[RRU5:wa.[R,"SX`R(R*4-5eXUR/5LaUR(R/5UlUR(R0UlSHFup�UR0R3X�5nU(dM)UR0R5X�US5 MH UR0R5SSS	S5 UR7XSS
U5 g)Ns%s/.hgrr��creates9failed to reject unsafe subrepo path: %s (expanded to %s)))�uiscommitsubrepos�subreporas_usedassubreposTruer)�superr8�_staterx�wjoinr�	localpathrv�exists�osr$�normcase�realpathrrr7rr��
repository�baseui�_reporu�ProgrammingError�
unfilteredrV�config�	setconfig�	_initrepo)r9r�r$r�r��rrur`�	norm_root�	real_root�s�k�v�	__class__s             �r'r8�hgsubrepo.__init__�s����
����#����H�H�J���w�w�t�~�~�d�+�,���D�Q�V�V�]�]�9�t�3C�%D�!D���G�G�$�$�T�*�	��G�G�$�$�R�W�W�%5�%5�d�o�o�d�6K�%L�M�	��!��+�+��@�A�D�H��
��]�]�1�8�8�T�]�A��
�
�7�7���D�J�J�O�O�,����0@�0@��0F�F��(�(�-�04�j�j�o�o�/F�G��
�
��������.�.�0�D�J��*�*�-�-���0�D�A������A�!�A��q����!�!�!��:�6�1�
	
�����%�!2�G�Z�H����q��(�F�+r)c�Z�[R"UR[U5U5 gr�)r
r�rmrHr�s   r'r��hgsubrepo.addwebdirpath�s�����d�j�j�*�T�*:�G�Dr)c��URR5 URU5sSSS5 $!,(df   g=fr�)rm�lock�_storecleanr�s  r'r��hgsubrepo.storeclean�s*��
�Z�Z�_�_�
��#�#�D�)��
�
�s	�6�
Ac��SnURU5nURU5HnU[US5:wdMSn O U(a[US5SLnU$)NTF)�_calcstorehash�_readstorehashcache�next)r9r$�clean�	itercache�filehashs     r'r�hgsubrepo._storeclean�s`�����'�'��-�	��0�0��6�H��4�	�4�0�0����7����D�)�T�1�E��r)c#�# �SnS[U5-v� URRnUHGn[[R
"UR
U55R55nSXE4-v� MI g7f)z�calculate a unique "store hash"

This method is used to to detect when there are changes that may
require a push to a given remote path.)s	bookmarkssstore/phaserootssstore/00changelog.is# %s
�%s = %s
N)r(rmrrrr,�tryreadr-)r9r.�filelistr�relnamer�s      r'r��hgsubrepo._calcstorehashsh���O���*�:�6�6�6��j�j�n�n���G��8�=�=����W�)=�>�E�E�G�H�H��'�!4�4�4� �s�A7A9c�t�[R"URRRS55$)Nscache/storehash)rNrrmrdr�s r'�_cachestorehashvfs�hgsubrepo._cachestorehashvfss%���z�z�$�*�*�.�.�-�-�.@�A�B�Br)c�P�[U5nURRUS5$)z7read the store hash cache for a given remote repository�r)r/r��tryreadlines)r9r.�	cachefiles   r'r��hgsubrepo._readstorehashcaches%��*�:�6�	��&�&�3�3�I�t�D�Dr)c���[U5nURR5 [UR	U55nUR
nUR
X#SSS9 SSS5 g!,(df   g=f)z�cache the current store hash

Each remote repo requires its own store hash cache, because a subrepo
store may be "clean" versus a given remote repo, but not versus another
swbT)r'�
notindexedN)r/rmr~�listr�r��
writelines)r9r.r��	storehashrs     r'�_cachestorehash�hgsubrepo._cachestorehashsZ��+�:�6�	�
�Z�Z�_�_�
��T�0�0��<�=�I��)�)�C��N�N�9�e��N�M��
�
�s�8A'�'
A5c��URR5cURS$URSnURU$)zBfetch the context for this subrepo revision, possibly a workingctxNr)r��revrmrd)r9r�s  r'�_getctx�hgsubrepo._getctx$s<���9�9�=�=�?�"��:�:�d�#�#��+�+�a�.�C��:�:�c�?�"r)c�^^�UTRlUTRlU(a�S/mUU4Sjn[TRSS9n[TRSSS9nU"SU5 XV:wa	U"SU5 TRRRS[R"S	RT555 gg)
Ns[paths]
c�z>�U(a3TRSX4-5 TRRSXS5 gg)Nr�spathsrb)r5rVrq)�key�value�linesr9s  ��r'�
addpathconfig�*hgsubrepo._initrepo.<locals>.addpathconfig4s4�����L�L����!<�=��G�G�%�%�h��J�G�r)F)�abortTsdefaultsdefault-pushr^r))	rm�
_subparent�
_subsource�
_abssourcer�writer�tonativeeolrd)r9�
parentrepor�r`r��defpath�defpushpathr�s`      @r'rr�hgsubrepo._initrepo,s���� *��
�
�� &��
�
���!�N�E�
H�
!����5�9�G�$�T�Z�Z��U�C�K��*�g�.��%��o�{�;��J�J�N�N� � ��$�*:�*:�3�8�8�E�?�*K�L�r)c
�^�URR5 URRRUR5 [R
"UURUUUU40UD6sSSS5 sSSS5 $!,(df   O=fSSS5 g!,(df   g=fr�)rm�wlock�dirstate�changing_filesr
r�r�s       r'r��
hgsubrepo.addAs{���Z�Z�
�
�
����!4�!4�!C�!C�D�J�J�!O��;�;���
�
�����
���"P�!O�
�
�!O�!O��
�
�
�s#�0B�&B�1	B�
B	�B�
B,c	��[R"U5nSUS'URR5 URRR	UR5 [
R"URUUUU5sSSS5 sSSS5 $!,(df   O=fSSS5 g!,(df   g=f)NTr~)�copyrmr�r�r�rr�)r9rr�r�r�s     r'r��hgsubrepo.addremoveRs���
�y�y���� ��[��
�Z�Z�
�
�
����!4�!4�!C�!C�D�J�J�!O��$�$��
�
������"P�!O�
�
�!O�!O��
�
�
�s#�0B7�&$B�
	B7�
B+	�'B7�7
Cc	��URSnURUn[R"URURXqX#U40UD6$r�)rdrmr
r�rV)r9rr�r�r�r�r�r�s        r'r��
hgsubrepo.catfsH���k�k�!�n���j�j��o���{�{��G�G�T�Z�Z��R�V�
�GK�
�	
r)c
�v�URSnURUnURUnURR"XE40UD6$![RaXnUR
R
[S5U[U54-5 [R"///////5sSnA$SnAff=f)Nr�*warning: error "%s" in subrepository "%s"
)
rdrmrr�RepoLookupErrorrVrcrrHr)r9r�r��rev1�ctx1�ctx2�insts       r'r�hgsubrepo.statusns���
	>��;�;�q�>�D��:�:�d�#�D��:�:�d�#�D��:�:�$�$�T�8�4�8�8���$�$�	>��G�G�L�L��@�A���D�)�*�+�
��>�>�"�b�"�b�"�b�"�=�=��	>�s�A	A�B8� A
B3�-B8�3B8c�~�[URS5nUb[U5n[R"UURUURUURUU4USS.UD6 g![
Ra<nURR[S5U[U54-5 SnAgSnAff=f)NrT)r��listsubreposr�)rrdr�diffordiffstatrmrr�rVrcrrH)	r9rVr�r�rr�r��node1r�s	         r'r��hgsubrepo.diff|s���	�����A��'�E�� ��E�
���%�%���
�
���
�
�5�!��
�
�5�!��

��!�

��

���$�$�	��G�G�L�L��@�A���D�)�*�+�
�
��	�s�A)A,�,B<�2B7�7B<c�R�URURS-5 UR5Vs/sHoS"U5(dMUPM nnURSnURUn[R
"URUR
5[R"URU54/5 [RXX#5n	URH@n
[X�S5n[R"X�5nX*-S-n
X�RXX�5-
n	MB U	$s snf)N)rzrT�/)�_getrdr�rmr�
prefetchfilesr��
matchfilesr�r)r�r4r	�
subdirmatcher)r9r"r�rrrmr�r�r�r�subpathrv�submatch�	subprefixs              r'r)�hgsubrepo.archive�s����	�	�$�+�+��(�)� �J�J�L�5�L�q�E�!�H��L��5��k�k�!�n���j�j��o������J�J�#�'�'�)�W�%7�%7��
�
�E�%J�K�L�	
� �'�'��f�D���|�|�G���d�+�A��-�-�g�=�H��(�4�/�I��Y�Y�v�(�C�C�E�	$�
���6s�D$�D$c���URSnUS:XaU(dgURSnX4R5R5:waU(dgUR	US9$)Nrr)T)r�)rdrm�p1rrX)r9r�r�rs�ws     r'rX�hgsubrepo.dirty�sQ���K�K��N����8�L���J�J�t�������
�
���\���w�w�w�w�'�'r)c�<�URSR5$�N�.)rmrr�s r'r��hgsubrepo.basestate�s���z�z�$��#�#�%�%r)c�j�URRURRU55$r�)rm�_checknestedrer�s  r'r��hgsubrepo.checknested�s&���z�z�&�&�t�z�z�'7�'7��'=�>�>r)c�L�URS5(dURSR5$URR	S[U5-5 URR
XU5nU(dURSR5$[U5$)NTr�scommitting subrepo %s
)rXrmrrV�debugrHr�)r9r�r�r��ns     r'r��hgsubrepo.commit�s����z�z�$����:�:�d�#�'�'�)�)����
�
�0�:�d�3C�C�D��J�J���d�$�/����:�:�d�#�'�'�)�)��1�v�
r)c�N�URU=(d SR5$r�)rmr�r�s  r'r��hgsubrepo.phase�s���z�z�%�-�4�(�.�.�0�0r)c���URR[S5[U5-5 [RURURRS5 g)N�removing subrepo %s
F)rV�noterrHr�r�rm�nullidr�s r'r��hgsubrepo.remove�sB��	
�����Q�/�0�:�d�3C�C�D�
������T�Z�Z�.�.��6r)c	��^^�Uup#nTRRnUTRR5;a/[TR5S:wdUR	5(dgUTRl[
TR5mUU4Sjn[TR5S:XGaNTRRR5 UR	5(a�[RT5(a�TRR[S5[T5T4-5 U"5n[RTRRR UTRR"SSS9nUR%5 UR'5TlGO/UR	5(aYTRR)SS5n	U	(a[*R,"U	5n	U	TRR)SS	5S
.n
O0n
TRR[S5[T5[.R0"T54-5 U"5n[R3TRRR 0UTRR"SU
S9up�UR%5 UR'5TlTR5XRSS
9 TR7T5 gTRR[S5[T5[.R0"T54-5 TR9T5n
U"5n[:R<"TRU5 UR%5 U
(aTR7T5 g!UR%5 f=f!UR%5 f=f!UR%5 f=f)NrTc�F>�[RTR0T5$r�)r��peerrm)r9�srcurls��r'�<lambda>� hgsubrepo._get.<locals>.<lambda>�s���"�'�'�$�*�*�b�&�9r)ssharing subrepo %s from %s
F)r�	bookmarkssshare�pools
poolnaming)r�smode�cloning subrepo %s from %s
)r�	shareoptsr_�pulling subrepo %s from %s
)rmr�ror�sharedr�r�r�rmtreer��islocalrVrrrH�sharerlru�closerYrprrr�hidepassword�clonerrr�r�r
�pull)r9r�r��revisionr�r��getpeerr�r��poolr��other�cloned�cleansubr�s`             @r'r��hgsubrepo._get�s���!&���$��Z�Z�*�*�
��t�z�z�,�,�.�.��4�:�:��!�#�:�+<�+<�+>�+>�� &��
�
���D�J�J�'��:���t�z�z�?�a���J�J�N�N�!�!�#�� � �"�"�r�z�z�&�'9�'9�������5�6�!�$�'��0�1���y��	!��X�X��
�
�-�-�4�4���
�
���$�"'�&��F��J�J�L�#�\�\�^��
��$�$�&�&��7�7�>�>�(�G�<�D��#���t�4��"&�!%������-�!H�!�I�
!#�I�������5�6�!�$�'��)=�)=�f�)E�F�G���y��
!�$&�H�H��
�
�-�-�4�4����
�
���$�"+�
%-�%�M�E��J�J�L�#�\�\�^��
��N�N�:�d�N�;�� � ��(��
�G�G�N�N��1�2��d�#�W�%9�%9�&�%A�B�C�
����v�.�H��9�D�
��
�
�d�j�j�$�/��
�
����$�$�V�,���e�J�J�L��@�J�J�L���
�
��s&�?A	N)�-AN>�!O�)N;�>O�O%c���URU5nUupEnURnURRSUR-5 U(aaUR5nX�n	U	R
5(a8URR[S5USSUR4-5 UnU(a[R"Xu5 g[R"Xu5 g)Nsgetting subrepo %s
s,revision %s in subrepository "%s" is hidden
rr+)r�rmrVr�r�ro�hiddenrcrr�clean_updater)
r9r�r��inrepor�r�r�rx�urepor�s
          r'r��
hgsubrepo.get)s������5�!��!&���$��z�z�����
�
�-��
�
�:�;���O�O�%�E��/�C��z�z�|�|����
�
��F�G���"�~�t�z�z�2�3��������t�~�.��L�L���(r)c�^^^^^�TRT5 TRSmTRTSmTRT5mUUUUU4SjnTRSnTR5(aCTT:wa5[	TR
TUR5TT5(aU"5 ggU"5 gU"5 g)Nr�rc�>�TT:XamTR5TR5:XaKTRRS[T5-5 [RTRTS5 gTT:Xa(TRRS[T5-5 gTRRS[T5-5 [RTSS9 g)Nsupdating subrepository "%s"
rsskipping subrepository "%s"
smerging subrepository "%s"
F)�remind)�branchrVr�rHr�rrmr)�anc�cur�dstr9r�s�����r'�	mergefunc�"hgsubrepo.merge.<locals>.mergefuncDs�����c�z�c�j�j�l�c�j�j�l�:����
�
�4�z�$�7G�G���	�	�$�*�*�e�A�h�/�������
�
�4�z�$�7G�G�����
�
�3�j��6F�F������U��+r))r�rm�ancestorrXr\rV)r9r�r�wctxrrrs``  @@@r'r�hgsubrepo.merge=s�����	�	�%���j�j�����j�j��q��"���l�l�3���	,�	,� �z�z�$����:�:�<�<��c�z� ����$��
�
��c�3�G�G��K�H����Kr)c��URS5nURS5nURS5nURSnURn[U5H)nUR	U5RU5S:XdM) g [
URS5nU(d]URU5(aGURR[S5[U5[R"U54-5 gURR[S	5[U5[R"U54-5 [RURSU0U5n	[ R
"URX�US
9n
U	R#5 UR%U5 U
R&$!U	R#5 f=f)N�forces
new_branchssshr�rFTs4no changes made to subrepo %s since last push to %s
spushing subrepo %s to %s
)�	newbranch)r�rmr��sortedrWr�r�r�rVrrrHrr�r�r�r
r�r��cgresult)r9r�r8r�ssh�c�subsrv�dsturlrrMs           r'r��hgsubrepo.push^sl������"���H�H�]�+�	��h�h�v���
�J�J�t����z�z�����A��u�u�Q�x�}�}�T�"�a�'����D�J�J��-������v�&�&�������N�O�!�$�'��)=�)=�f�)E�F�G��������
�+�,��$���!5�!5�f�!=�>�
?�	
�����
�
�V�S�M�6�:��	��-�-��
�
�E�I�N�C��K�K�M�	
���V�$��|�|���	
�K�K�M�s�+ F8�8G
c��SU;dSU;a:[R"U5nURSS5 URSS5 [R"UR5n[
R
XRX#US9$�Nsrevsbranch)r�)r�r6r�repo_rel_or_abs_sourcermr�r�)r9rVr�r�r�s     r'r��hgsubrepo.outgoing�sf���T�>�Y�$�.��9�9�T�?�D��H�H�V�T�"��H�H�Y��%��4�4�T�Z�Z�@���{�{�2�z�z�4�w�{�G�Gr)c��SU;dSU;a:[R"U5nURSS5 URSS5 [R"UR5n[
R
XRX#US9$r!)r�r6rr"rmr�r�)r9rVr�r�r�s     r'r��hgsubrepo.incoming�sf���T�>�Y�$�.��9�9�T�?�D��H�H�V�T�"��H�H�Y��%��4�4�T�Z�Z�@���{�{�2�z�z�6��{�I�Ir)c�z�URSnURUnUR5R5$r�)rdrm�manifest�keys)r9r�r�s   r'r��hgsubrepo.files�s1���k�k�!�n���j�j��o���|�|�~�"�"�$�$r)c��URSnURUUR5nU(aURRX5nU$r�)rdrm�data�
wwritedata)r9r�rr�r+s     r'r�hgsubrepo.filedata�sF���k�k�!�n���z�z�#��t�$�)�)�+����:�:�(�(��4�D��r)c�`�URSnURUnURU5$r�)rdrmr&)r9r�r�r�s    r'r�hgsubrepo.fileflags�s*���k�k�!�n���j�j��o���y�y���r)c	���URR5cURSnOURSnURUn[R
"XX#XEU5$r�)r�r�rmrdr
r�)	r9rVrr�r�rrr�r�s	         r'r�hgsubrepo.printfiles�sQ���9�9�=�=�?�"��*�*�T�"�C��+�+�a�.�C��*�*�S�/�C��}�}�R�a�2�H�E�Er)c
��URR5cURSnOURSnURUnUR	XUS9/nUR
HKnUR
U5nUR	XUS9n	[R"XyUS9n
URU
5 MM [%U5S:XaUS$[R&"U5$![RaN URR[S5URR![#U5U5-5 M�f=f)Nrrs#skipping missing subrepository: %s
r)r�r�rmrdr
r�rWr	�prefixdirmatcherr5r�LookupErrorrVrrrvrfrRr�unionmatcher)r9rrrr�r��matchersr�rW�sm�pms           r'r
�hgsubrepo.matchfileset�s���9�9�=�=�?�"��*�*�T�"�C��+�+�a�.�C��*�*�S�/�C��$�$�S�e�$�<�=���|�|�G��'�'�'�"�C�
��%�%�c�u�%�=���.�.�w�%�H������#�
$��x�=�A���A�;���$�$�X�.�.���$�$�
�������=�>��i�i�'�'��D�(9�7�C�D��
�s�<6C � AE�Ec�B�URSnURU5$r�)rmr_)r9rr�s   r'r_�hgsubrepo.walk�s���j�j�����x�x���r)c
�p�URR5 URRRUR5 [R
"URURUUUSUUS9sSSS5 sSSS5 $!,(df   O=fSSS5 g!,(df   g=f)NT)r0r1)rmr�r�r�r
r2rVr/s      r'r2�hgsubrepo.forget�s{���Z�Z�
�
�
����!4�!4�!C�!C�D�J�J�!O��>�>�����
�
������'�	�"P�!O�
�
�!O�!O��
�
�
�s#�0B'�/B
�:	B'�
B	�B'�'
B5c	
�v�URR5 URRRUR5 [R
"URURUUUUUUU5	sSSS5 sSSS5 $!,(df   O=fSSS5 g!,(df   g=fr�)rmr�r�r�r
r�rVr6s	         r'r:�hgsubrepo.removefiles�s~�� �Z�Z�
�
�
����!4�!4�!C�!C�D�J�J�!O��>�>�����
�
��������
�"P�!O�
�
�!O�!O��
�
�
�s#�0B*�2B�=	B*�
B	�B*�*
B8c�0�URR[S5US-5 URS5(d/UR	5nSUS'USUS'UR
"U0UD6 URS5(dURUSS	9 gg)
N�reverting subrepo %s
r�	no_backupr�rr��dry_runT�r�)rVrrr�r��
filerevertr=s    r'r?�hgsubrepo.revert�s���	
�����q�2�3�h�q�k�A�B��x�x��$�$��9�9�;�D��D��L�"�1�+�D��K��O�O�T�*�T�*��x�x�	�"�"��H�H�X��H�.�#r)c��URUSnURS5(aS/nO/nURR5 URRR	UR5 [
R"URURU/UQ70UD6 SSS5 SSS5 g!,(df   N=f!,(df   g=f)Nr��allsset:modified())rmr�r�r�r�r
r?rV)r9r>r�r�s    r'rE�hgsubrepo.filereverts����j�j��e��%���8�8�E�?�?�%�&�D��D�
�Z�Z�
�
�
����!4�!4�!C�!C�D�J�J�!O��N�N�4�7�7�D�J�J��C�d�C�d�C�"P�
�
�!O�!O��
�
�s$�	0C�91B;�*C�;
C		�C�
Cc��USS$)Nr+rCrBs  r'rD�hgsubrepo.shortid s���S�b�z�r)c��SSKJn UqURR5(a1URR[
S5UR-5 [RURUR5 g)Nrr�sunsharing subrepo '%s'
)	r�r�rmr�rVrrrSrG)r9r�s  r'rG�hgsubrepo.unshare#sV��	�
��
�:�:������G�G�N�N�1�8�9�D�M�M�I�J�
�
�
�4�7�7�D�J�J�'r)c��URSnURR5UnUR5(a�[	S5UR
[
URR554-nU(a[R"U5eURRRSU-5 g![Ra� [	S5UR
[
URR554-nU(a[R"U5eURRRSU-5 gf=f)Nrs%subrepo '%s' is hidden in revision %ss%s
rs%subrepo '%s' not found in revision %s)rdrmrorrrSr	r��noderr7rVrcr�)r9rJr�r�r[s     r'rK�hgsubrepo.verify6s��	��+�+�a�.�C��*�*�'�'�)�#�.�C��z�z�|�|��@�A��M�M��$�)�)�.�.�*�+�E���
��+�+�c�*�*��J�J�M�M�&�&�w��}�5����$�$�	��<�=��
�
��d�i�i�n�n�&�'�A��C�
��k�k�#�&�&��
�
�
�
�"�"�7�S�=�1��	�s�CC�BE�Ec�.�URR$)z.return own wvfs for efficiency and consistency)rmrvr�s r'rv�hgsubrepo.wvfsUs���z�z���r)c�,�[UR5$rQ)rRrmr�s r'rS�hgsubrepo._relpathZs���4�:�:�&�&r))rmrdrVrWrYrZrUrVr�)3r=r>r?r@r8rSr�r�rr�r[r�r�r�r�rrr�r�r�rr�r)rXr�r�r�r�r�r�r�rr�r�r�r�rrrr
r_r2r:r?rErDrGrKrvrSrB�
__classcell__�rys@r'r]r]�s���� ,�D�E��E�*��5��C��C�E�

N�#��M��M�(���� ����&�
��
��>��>�����0���� �(��(�&�?��	��	��1��1��7��7�Y�v�)��)�&����@� �� �D�H��H��J��J��%��%�
��
�F��F��/��/�2�����"����8�/��/�*D���(��(�$�>�����'��'r)r]c��^�\rSrSrU4SjrSSjr\S5rSrSr	Sr
Sr\SS	j5r
S
r\S5r\S5r\SS
j5r\S5rSr\S5rSrSrU=r$)�
svnsubrepoiac��>�[TU]X5 X0l[R"S5UlUR
(d,[R"[S5UR-5eg)Nr|s+'svn' executable not found for subrepo '%s')
rcr8rdr�findexe�_exerr7rr��r9r�r$r�r�rys     �r'r8�svnsubrepo.__init__bsV���
����#����$�$�V�,��	��y�y��+�+��@�A�D�J�J�N��
�r)c
��UR/n0nURR5(d-[RUS'USS;aURS5 [
[S5(a[[S5US'URU5 UbZURRURR5RURU5nURU5 [[ R"5nUR%S5nU(aX�S'US	S	US
'[R&"[(R*"[,R.U54S[,R0[R[R[,R2"U5S.UD6n	[5[6R8U	R;55up�UR=5nU(dbU	R>(a,[@RB"U=(d S
U	R>-5eU(aURREUS-5 X�4$)N�stdinr)�update�checkout�commits--non-interactive�CREATE_NO_WINDOW�
creationflags�LC_ALLsLANG�CsLC_MESSAGES���)�bufsize�	close_fds�stdout�stderr�envsexited with code %d�
)#r[rVr1�
subprocess�PIPEr5�hasattr�getattr�extendrvrfr�rx�origrootr��dictr�environr��Popenr�rapplyr�tonativestr�closefds�tonativeenv�mapr�
fromnativeeol�communicate�strip�
returncoderr7rc)r9�commands�filename�failok�cmd�extrakwr$rl�lc_all�prjrks            r'�_svncommand�svnsubrepo._svncommandks����y�y�k�����w�w�"�"�$�$� *���G�G��
��{�A�A��
�
�/�0��:�1�2�2�(/�z�;M�'N�G�O�$��
�
�8�����9�9�$�$��	�	��� �)�)�4�:�:�x��D�
�J�J�t���8�#�#�$������#���!��L��I��"��N������O�O�H�0�0�#�6�
���'�'��?�?��?�?��$�$�S�)�

��
���T�/�/�����A����������|�|��k�k��C�4�q�|�|�C���������V�e�^�,��~�r)c��URSS/SS9up[R"SU5nU(d[R"[S55e[
URS55[
URS554$)N�	--version�--quiet)r�s
^(\d+)\.(\d+)s cannot retrieve svn tool versionrr�)r��re�searchrr7r�int�group)r9�output�errrs    r'�_svnversion�svnsubrepo._svnversion�sq���&�&�
�:�&��'�
���
�I�I�'��0����+�+�a� C�D�E�E��A�G�G�A�J���Q�W�W�Q�Z��1�1r)c�B�URRS5(+$)N�.svn�rvrgr�s r'�_svnmissing�svnsubrepo._svnmissing�����9�9�#�#�G�,�,�,r)c��URSS/5up[RRR	U5nURS5nSupVU(a}[R"USRS55=(d SnUSRS5nU(a1[R"USRS55=(d SnXV4$)	Nsinfo�--xml�entry)�0r�rr�r�r�)	r��xml�dom�minidom�parseString�getElementsByTagNamer�bytestr�getAttribute)r9r�r��doc�entries�lastrevr��commitss        r'�_wcrevs�svnsubrepo._wcrevs�s����&�&���':�;����g�g�o�o�)�)�&�1���*�*�7�3��!�����"�"�7�1�:�#:�#:�:�#F�G�O�4�C��a�j�5�5�h�?�G���$�$�W�Q�Z�%<�%<�Z�%H�I�����~�r)c�(�UR5S$)Nr)r�r�s r'�_wcrev�svnsubrepo._wcrev�s���|�|�~�a� � r)c���URSS/5up///pTn[RRR	U5nURS5H�nURS5nU(dMUSR
S5n	USR
S5n
UR
S5RS	5nU	S
:XaURU5 OU	S:XaURU5 U	S;dU
S
;dM�URU5 M� UHJnUHAnX�:Xd)URU[R-5(dM1SS[U54s s $ ML [U5S[U54$)z�Return (changes, extchanges, missing) where changes is True
if the working directory was changed, extchanges is
True if any of these changes concern an external entry and missing
is True if any change is a missing entry.
�statusr�r�z	wc-statusr�item�propsr$�utf8�externalr�)r��normal�unversionedr�)r��noner�TF)
r�r�r�r�r�r�r��encoder5rsr�ossep�bool)
r9r�r��	externals�changesr�r��ervr�r�r$�exts
             r'�
_wcchanged�svnsubrepo._wcchanged�sR���&�&�	�8�'<�=���&(�"�b�G�	��g�g�o�o�)�)�&�1���)�)�'�2�A��&�&�{�3�A����Q�4�$�$�V�,�D��a�D�%�%�g�.�E��>�>�&�)�0�0��8�D��z�!�� � ��&���"����t�$����
�4�4����t�$�#3�$�D� ���;�$�/�/�#����2F�"G�"G���t�G�}�4�4�!���G�}�e�T�'�]�2�2r)c��UR5(aURSS:g$UR5nUS=(d U=(a USnU(d)URSUR5;dU(agg)Nrr)rr�FT)r�rdr�r�)r9r�r��	wcchanged�changeds     r'rX�svnsubrepo.dirty�sh��������;�;�q�>�S�(�(��O�O�%�	��A�,�<�7�#;�y��|����{�{�1�~�����/�<��r)c��UR5upX:wa(URSSURSU4-/5 U$U$![Ra U$f=f)N�list�%s@%sr)r�r�rdrr7)r9r�r�s   r'r��svnsubrepo.basestate�sl���|�|�~����>�

�� � ��h�$�+�+�a�.�'�)B�B�C�����
���;�;�
���
�
�s�&A�A�Ac���UR5upEnU(dUR5$U(a[R"[	S55eU(a[R"[	S55eURSSU/5upxURRU5 [R"SU5n	U	(d[UR5(d[R"[	S55e[R"UR5S5eU	R5Sn	URRURS	S
U	/5S5 U	$)Nscannot commit svn externalss!cannot commit missing svn entriesrb�-msCommitted revision ([0-9]+).sfailed to commit svn changesrgrr`�-r)
r�r�rr7rr�rVrr�r�r~�
splitlines�groups)
r9r�r�r�r��
extchangedr��
commitinfor��newrevs
          r'r��svnsubrepo.commit�s��(,���'8�$��W���>�>�#�#���+�+�a� >�?�@�@���+�+�a� D�E�F�F��*�*�I�u�d�+C�D��
������z�"����:�J�G����#�#�%�%�
�k�k�!�$C�"D�E�E��+�+�j�3�3�5�b�9�:�:������#�������t�'�'��E�6�(B�C�A�F�G��
r)c���UR5(a2URR[S5UR-5 gURR[S5UR-5 URRSS9 URR5RnURURUR55 g![a gf=f)N�-not removing repo %s because it has changes.
r�T)�forcibly)
rXrVrcrr�r�rvr�r�rx�
removedirsrh�OSError)r9�pwvfss  r'r��svnsubrepo.removes����:�:�<�<��G�G�L�L��C�D��*�*��
�
������Q�/�0�4�:�:�=�>��	�	���$��'�	��I�I�N�N�$�)�)�E����U�]�]�4�:�:�6�7���	��	�s�AC"�"
C/�.C/c��U(aURSS/5 S/nURS:�aURS5 URSUSUS4-5 [R"US5 URUS	S
9upE[URURS5 [R"SU5(dnS
U;a8UR5SSS:Xa!UR5 URUSS9 g[R"U=(d UR5S5eURR!U5 g)Nsrevert�--recursivera)r��--forcer�rrT)r�r�sChecked out revision [0-9]+.s-is already a working copy for a different URLr�rUFrDrg)r�r�r5r�checksafesshrnrVrvr�r�r�r�r�rr7r�r)r9r�r�r:rr�s      r'r��svnsubrepo.get(s������i��8�9��}�����v�%��K�K�
�#�	
���H��a��%��(�3�3�4�	���U�1�X�&��&�&�t�D�&�9����$�'�'�4�9�9�g�.��y�y�8�&�A�A�?�3�F����!�"�1�%��7����
�����%��0���+�+�v�}��8�8�:�2�>�?�?������v�r)c���URSnUSnUR5nX4:waNX$:H=(d UR5Sn[URXXC5(aURUS5 ggg)NrrF)rdr�r�r\rVr�)r9r��old�new�wcrevrXs      r'r�svnsubrepo.mergeCsk���k�k�!�n���A�h�����
���<��L�8�D�O�O�$5�a�$8�E��T�W�W�d�5�>�>������&�?�r)c��g)NTrCr�s  r'r��svnsubrepo.pushMs��r)c��UR/SQ5Sn[RRR	U5n/nURS5H�n[R"URS55nUS:waM0SRSURS5SR55nURURS	55 M� U$)
N)r�r�r�rr�r�sfiler�c3�r# �UH-nURUR:XdMURv� M/ g7fr�)�nodeType�	TEXT_NODEr+)�.0rs  r'�	<genexpr>�#svnsubrepo.files.<locals>.<genexpr>Zs-����E�A��:�:����,�����E�s�7�7r�r�)
r�r�r�r�r�r�rr�r�rd�
childNodesr5r�)r9r�r��pathsr�r�r�s       r'r��svnsubrepo.filesQs����!�!�"E�F�q�I���g�g�o�o�)�)�&�1�����)�)�'�2�A��#�#�A�N�N�6�$:�;�D��w����7�7���/�/��7��:�E�E���D�

�L�L����V�,�-�3��r)c�.�URS/U5S$)Nscatr)r�r�s   r'r�svnsubrepo.filedatabs�������$�/��2�2r))r[rd)r)FrUrV)r=r>r?r@r8r�r[r�r�r�r�r�rSrXr�r�r�r�rr�r�rrBrUrVs@r'rXrXas�����0�d�2��2�-��$!�3�B����� ����6���� ����4�'��'������ 3�3r)rXc�^�\rSrSrU4SjrSr\S5r\S5rS$Sjr	S$Sjr
S%SjrS	rS
r
SrSrS
rSrSrSrSrSrSrSr\S&Sj5rSr\S'Sj5r\S5r\S5r\S5r\S5r\S5r S(S)Sjjr!\S5r"\S*Sj5r#\S 5r$\S!5r%S"r&S#r'U=r($)+�
gitsubrepoifc��>�[TU]X5 X0lUR5R	U5UlUR5UlUR5 gr�)rcr8rdrxre�_abspathr��
_ensuregitr\s     �r'r8�gitsubrepo.__init__gsD���
����#������
�(�(��.��
��(�(�*������r)c	�f�SUlURS/5upURU5nUS	:Xa%URR![S
55 gUS:Xa[R"[S55eUS
:Xa%URR![S55 gg![Ga{n[S5n[S5nUR[R
:waB[R"X@R[R"UR54-5e[R(a�SUlURS/5upSnAGNE![a�nUR[R
:Xa+[R"[S5UR-US9e[R"UUR[R"UR54-5eSnAff=f[R"[S5UR-US9eSnAff=f)Nr{r�s(error executing git for subrepo '%s': %ss'check git is installed and in your PATHsgit.cmds1couldn't find 'git' or 'git.cmd' for subrepo '%s'rs"couldn't find git for subrepo '%s'�unknownscannot retrieve git version
�aborts,git subrepo requires at least 1.6.0 or later�warnings-git subrepo requires at least 1.6.0 or later
)�_gitexecutable�	_gitnodirr�r�errno�ENOENTrr7r�r�
strtolocal�strerrorr�	iswindows�
_checkversionrVrc)r9�outr�r��genericerror�notfoundhint�e2�
versionstatuss        r'r��gitsubrepo._ensuregitns���!	�"(�D���~�~�|�n�5�H�C�@�*�*�3�/�
��J�&��G�G�L�L��;�<�=�
�h�
&��+�+��A�B��
��j�
(��G�G�L�L��L�M�N�)��M�	��H�I�L��G�H�L��w�w�%�,�,�&��k�k� �J�J��0C�0C�A�J�J�0O�#P�P����#�#��*4�D�'�#�~�~�|�n�=�H�C������x�x�5�<�<�/�#�k�k��!5��#�j�j�	)�
".�
��$�k�k�(�#�z�z�8�+>�+>�r�{�{�+K�L�M������ �k�k��;�<�t�z�z�I�%����7	�s7�B*�*H0�5BH+�E"�"
G=�,BG8�8G=�=.H+�+H0c��[R"SU5nU(aM[URS55[URS55[URS554$[R"SU5nU(a5[URS55[URS55S4$g)Ns ^git version (\d+)\.(\d+)\.(\d+)rr��s^git version (\d+)\.(\d+)rrg)r�r�r�r�)rrs  r'�_gitversion�gitsubrepo._gitversion�s����I�I�:�C�@��������
�O�S������_�c�!�'�'�!�*�o�F�F��I�I�3�S�9��������
�O�S������_�a�8�8�r)c�X�[RU5nUS:XagUS:agUS:agg)a�ensure git version is new enough

>>> _checkversion = gitsubrepo._checkversion
>>> _checkversion(b'git version 1.6.0')
'ok'
>>> _checkversion(b'git version 1.8.5')
'ok'
>>> _checkversion(b'git version 1.4.0')
'abort'
>>> _checkversion(b'git version 1.5.0')
'warning'
>>> _checkversion(b'git version 1.9-rc0')
'ok'
>>> _checkversion(b'git version 1.9.0.265.g81cdec2')
'ok'
>>> _checkversion(b'git version 1.9.0.GIT')
'ok'
>>> _checkversion(b'git version 12345')
'unknown'
>>> _checkversion(b'no')
'unknown'
rgr�)rr�rr�)r�rr�sok)r�r)r�versions  r'r�gitsubrepo._checkversion�s9��0�(�(��-���b�=���Y���
�y�
 ��r)c�(�URXUS9S$)N)rl�streamr��_gitdir�r9r�rlrs    r'�_gitcommand�gitsubrepo._gitcommand�s���|�|�H�f�|�=�a�@�@r)c�6�URXX0RS9$)N)rlrr)r�r�rs    r'r�gitsubrepo._gitdir�s!���~�~��f�-�-��
�	
r)c
��URRSURSRU54-5 Uc[R
R
5nSUS'SU;aSUS'SnURR(a%[R"[RS5nURR(a+[U5(aUS	S
:XaURSS5 0n[[ S
5(a[#[ S
5US'[ R$"[R&"[(R*UR,/U-54S[R&"[(R*U5[(R."U5[(R0[ R2US.UD6nU(aUR4S4$UR4R75R95nUR;5 UR<S	:wa`UR<S:waPUS	n	U	S;a
X�R<4$[>R@"[CS5X�R<UR4-5eX�R<4$)z�Calls the git command

The methods tries to call the git command. versions prior to 1.6.0
are not supported and very probably fail.
s%s: git %s
rFNrfresGIT_ALLOW_PROTOCOLsfile:git:http:https:ssh�wr�diffrs--colorrcrdrg)rhrrlrirjrk)�cat-file�symbolic-refsgit %s error %d in %s)"rVr�rSrdrrur��quietr�openrh�devnull�
_colormoder�insertrprnrqrvrwrrxr�rzryrorj�readr~�waitrrr7r)
r9r�rlrr�errpiper�r��retdata�commands
          r'r��gitsubrepo._gitnodir�s��	
���
�
�o�����	�	�(�8K�(L�L�M��;��"�"�'�'�)�C���I�� ��+�)C�C�%�&����7�7�=�=��m�m�B�J�J��5�G��7�7���#�h�-�-�H�Q�K�7�4J�
�O�O�A�z�*����:�1�2�2�(/�z�;M�'N�G�O�$�����O�O��$�$�t�':�':�&;�h�&F�
�
������ 4� 4�c�:��$�$�S�)��'�'��?�?��
��
����8�8�T�>�!��(�(�-�-�/�'�'�)��	�����<�<�1������!2��q�k�G��8�8����,�,��+�+��*�+��L�L�$�-�-�8�9��
�
���$�$r)c�B�URRS5(+$)N�.gitr�r�s r'�_gitmissing�gitsubrepo._gitmissingr�r)c�(�URSS/5$)Ns	rev-parse�HEAD�rr�s r'�	_gitstate�gitsubrepo._gitstates������w� 7�8�8r)c�B�UR/SQ5upU(aSnU$)N)rr/r�r)r9�currentr�s   r'�_gitcurrentbranch�gitsubrepo._gitcurrentbranchs ���|�|�$J�K�����G��r)c��URSSSU/5nURS5SnURS5[S5-nX4S$)Nsremote�shows-nrmrsURL: )r�split�indexr)r9rZr�linerks     r'�
_gitremote�gitsubrepo._gitremotesN�����	�7�E�6�B�C���y�y����"���J�J�x� �3�x�=�0���B�x�r)c�8�URSSU/5up#US:H$)Nrs-err)r9r�r�codes    r'�_githavelocally�gitsubrepo._githavelocally!s#���L�L�+�u�h�!?�@�	���q�y�r)c�0�URSX/5nX1:H$)N�
merge-baser0)r9�r1�r2�bases    r'�_gitisancestor�gitsubrepo._gitisancestor%s������� 7�8���z�r)c�.�UR/SQ5S:H$)N)�configs--bool�	core.bare�truer0r�s r'�
_gitisbare�gitsubrepo._gitisbare)s����� D�E��P�Pr)c�*�UR/SQ5 g)z�This must be run before git diff-index.
diff-index only looks at changes to file stat;
this command looks at file contents and updates the stat.)supdate-index�-qs	--refreshNr0r�s r'�_gitupdatestat�gitsubrepo._gitupdatestat,s��	
���?�@r)c��0n0nUR/SQ5nURS5H�nURS5upVURS5(dURS5(dMDURS5(aURS5(aMrXQU'UR	U/5RU5 M� X4$)zSreturns 2 things:
a map from git branch to revision
a map from revision to branches)sfor-each-refs--formats%(objectname) %(refname)rmrFsrefs/heads/�
refs/remotes/s/HEAD)rr9rs�endswith�
setdefaultr5)r9�
branch2rev�
rev2branchrr;r��refs       r'�
_gitbranchmap�gitsubrepo._gitbranchmap2s����
��
����G�
���I�I�e�$�D� �J�J�t�,�M�H��>�>�.�1�1�#�.�.� �;�;���~�~�.�/�/�C�L�L��4J�4J��&�s�O��!�!�(�B�/�6�6�s�;�%��%�%r)c	��0nUH�nURS5(aMURSS5SnURSSU-/5nU(dMOURSSU-/5nUUSXVRSS5S4-'M� U$)z4return map of remote branch to local tracking branchrTr�r�rJsbranch.%s.remotesbranch.%s.mergesrefs/remotes/%s/%s)rsr9r)r9�branches�tracking�b�bnamerZrYs       r'�_gittracking�gitsubrepo._gittrackingHs������A��|�|�,�-�-���G�G�D�!�$�Q�'�E��%�%�y�2E��2M�&N�O�F��v��&�&�	�3E��3M�'N�O����)�V�Y�Y�t�Q�5G��5J�,K�K����r)c�t�SU;a"URS5nUS:waSUSU;aU$Xl[U5$)Ns://�:rgr�)�findr�r�)r9r��colons   r'r��gitsubrepo._abssourceXsA������K�K��%�E���{�t�6�&�5�>�9��
� ���$��r)c�x�UR5(aw[R"U5 URU5nURR[
S5URU4-5 URSXR/5 URU5(agURR[
S5URURS54-5 URS/5 URU5(d-[R"[
S5X R4-5eg)Nr�scloner��originsfetchs1revision %s does not exist in subrepository "%s"
)r,rr�r�rVrrrSr�r�r@r<rrr7)r9r�r�s   r'�_fetch�gitsubrepo._fetchas�������� � ��(��_�_�V�,�F��G�G�N�N��1�2�d�m�m�V�5L�L�
�
�N�N�H�f�m�m�<�=�����)�)�������
�-�.��}�}�d�o�o�i�8�9�
:�	
�
	
���(��$��#�#�H�-�-��+�+��G�H��]�]�+�,��
�.r)c�"�UR5(aURSS:g$UR5(agU(d"URSUR5:wagUR	5 UR/SQ5up4US:H$)Nrr)T��
diff-indexr�r/)r,rdrMr1rQr)r9r�r�rr?s     r'rX�gitsubrepo.dirtyysw��������;�;�q�>�S�(�(��?�?��������A��$�.�.�2B� B�������L�L�!E�F�	���q�y�r)c�"�UR5$r�)r1r�s r'r��gitsubrepo.basestate�s���~�~��r)c�N^^^^�UunmnT(dTR5 gTRUT5 TR5(a<TR/SQ5 TR	5T:XaTR/SQ5 gOBTR	5T:Xa.T(a&TRSS/5 TR/SQ5 gTR5upVUU4SjmUUU4SjnTU;aU"5 gUTnSn	UH7n
U
S:XaT"S/5  gU	(aMU
R
S5(aM5U
n	M9 U	(a
T"U	/5 gTRUR55nUS	nX�;aUHn
X�;dM
U
n O X�;a URS
S5Sn
T"SX�/5 gTRX[UU5(aWX�TR5:waT"X�/5 TRS
SU/5 [TRTRS5 gU"5 g)N)rJrKsfalse)�resets--hardr/rsr/c��>�S/nT(a$TRSS/5 URS5 TRX-5 [TRTRS5 g)Nrarsr/�-fr+)rr5rnrVrv)r:r�r�r9s  ��r'�checkout� gitsubrepo.get.<locals>.checkout�sR����-�C��� � �(�G�!4�5��
�
�5�!����S�Z�(��d�g�g�t�y�y�'�2r)c��>�TRR[S5TR-5 TRR[S55 T"ST/5 g)Ns1checking out detached HEAD in subrepository "%s"
s5check out a git branch if you intend to make changes
rP)rVrcrrS)rvr�r9s���r'�rawcheckout�#gitsubrepo.get.<locals>.rawcheckout�sR����G�G�L�L��G�H��-�-� �
�
�G�G�L�L��K�L�
�
�e�X�&�'r)srefs/heads/masterrTrr�r
s-b�merges--ffr+)r�rjrMrr1rZrsrar(r9rGr5rnrVrv)r9r�r�r�r�rWrXryr]�firstlocalbranchr_r^rZrYrvr�s` `           @@r'r��gitsubrepo.get�s
���!&����$���K�K�M�����F�H�%��?�?������@�A��~�~��8�+�� � �!?�@��,��^�^�
��
)��� � �(�G�!4�5�� � �!?�@��!%�!3�!3�!5��
�		3�		(��:�%��M���h�'�����A��(�(��.�/�0��#�#�A�L�L�9I�,J�,J�#$� �
���&�'�(���$�$�Z�_�_�%6�7���!����!����=��F���
�!��L�L��q�)�!�,�E��e�U�+�,�
�
 �
 ��V�,<�!=�v�
F�
F���4�#9�#9�#;�;��(�*�+�,����h���8�9��d�g�g�t�y�y�'�2�
�Mr)c�h�UR5(a,[R"[S5UR-5eSSSU/n[
RR5nU(aUSU/-
nU(a[R"US5US'URXES9 UR5$)	N�subrepo %s is missingrbs-ar�s--authors%Y-%m-%dT%H:%M:%S %1%2sGIT_AUTHOR_DATE)rl)r,rr7rrSrrur�r�datestrrr1)r9r�r�r�r�rls      r'r��gitsubrepo.commit�s���������+�+�a� 8�9�D�M�M�I�J�J��%���-�����#�#�%����K��&�&�C��'/�&6�&6��/�'�C�"�#�	
�����&��~�~��r)c	�^^^^	�Tunm	nTRUT	5 TRST	TRS/5mTR5 TR	/SQ5upEUU	UU4SjnTR5(a{TR
5T	:wafTR
5TRS:H=(d US:gn[TRTUTRSSST	SS5(aU"5 gggU"5 g)NrCrrmc��>�TT:XaTRT5 O'TTRS:waTRSST/5 [TRTR
S5 g)Nrr{s--no-commitr+)r�rdrrnrVrv)rFr�r9r�s����r'r�#gitsubrepo.merge.<locals>.mergefunc�sO����x�����������Q��'�� � �(�N�H�!E�F��d�g�g�t�y�y�'�2r)r�)	rjrrdrQrrXr1r\rV)
r9r�r�r�rr?rrXrFr�s
``      @@r'r�gitsubrepo.merge�s����!&����$����F�H�%������$�+�+�a�.� I�J�������L�L�!E�F�	��	3�	3��:�:�<�<��~�~��8�+����(�D�K�K��N�:�G�d�a�i�� ��G�G�T�5�$�+�+�a�.��!�*<�h�r��l����K��,�
�Kr)c��URS5nURS(dgUR5(a,[R"[S5UR-5eUR5up4URSU;a0X@RSHnURS5(dM g UR5HCupVURS5(dMURURSU5(dMC g S/nU(aURS5 UR5nU(a�URURSU5(d2URR[S5UR-5 g	URR[S
5UR!SS5SUR4-5 UR#US
U/-5n	U	SS:H$URR[S5URURS4-5 g	)NrrTrsrefs/remotes/origin/spushr�s7unrelated git branch checked out in subrepository "%s"
Fs(pushing branch %s of subrepository "%s"
r�r�rirsDno branch checked out in subrepository "%s"
cannot push revision %s
)r�rdr,rr7rrSrZrs�itemsrGr5r5rVrcrr9r)
r9r�r8rWrXr_r�r�r4�rets
          r'r��gitsubrepo.pushs�������"���{�{�1�~��������+�+�a� 8�9�D�M�M�I�J�J�!%�!3�!3�!5��
��;�;�q�>�Z�'����A��/���<�<� 7�8�8��0�&�+�+�-�K�A��|�|�3�4�4��&�&�t�{�{�1�~�x�@�@��.�
�i����J�J�z�"��(�(�*����&�&�t�{�{�1�~�w�?�?�������3���m�m�	$����G�G�N�N��>�?��=�=��q�)�!�,�d�m�m�<�=�
��,�,�s�i��%9�9�:�C��q�6�Q�;���G�G�L�L��1���=�=�$�+�+�a�.�1�	2�
�r)c��UR5(a/$URSSSS9n[5nURURUR
UR4Hn	URU	5 M URn
U
RUR55 /n[[U
55Vs/sHo�"U5(dMUPM n
nU
H�nURU5n
S/nU
(aURS5 UR(dU
(d#UR[S5U"U5-5 X�;aU
(aURU5 M�UR!S5(aM�UR#X�/-5 M� UH&nUR%[S5U"U5-5 M( U$s snf)NT)�unknownr�saddrus
adding %s
rCs%s already tracked!
)r,r�set�modified�added�deletedr�rr�rrr�r�exactr5�verboserr�rrc)r9rVrr�r�r�r�rv�tracked�lr��rejectedrmr�r(s               r'r��gitsubrepo.addBsb��������I��K�K��d�$�K�7���%���*�*�a�g�g�q�y�y�!�'�'�:�A��N�N�1��;��	�	��
���U�[�[�]�#���"�3�u�:�.�;�.�q�%��(��.��;��A��K�K��N�E��h�G�����u�%��z�z���	�	�!�N�+�h�q�k�9�:��|���O�O�A�&���8�8�I�&�&�� � ��3��/���A��G�G�A�.�/�(�1�+�=�>�����'<s�<G�Gc�4�UR5(agUR5(a2URR[	S5UR
-5 gURR
[	S5UR
-5 UR/SQ5 URR5HYupUS:XaM
U[R:XaURRU5 M>URRU5 M[ g)Nr�r�)rJrKrLr+)r,rXrVrcrrSr�rrv�readdir�stat�S_IFDIRr�re)r9rmr�s   r'r��gitsubrepo.removeis����������:�:�<�<��G�G�L�L��C�D��-�-� �
�
�	
�����Q�/�0�4�=�=�@�A����;�<��y�y�(�(�*�G�A��G�|���t�|�|�#��	�	� � ��#��	�	� � ��#�
+r)c��SnURupgU(dU$URXg5 URSU/SS9n[R"USS9n	[U5n
URR[S5U
-[S5S	9nSnURS5 U	GHn
U
R5(aM[R"U
R5nU"U5(dMJU
R5(a
U
RnORU	R!U
5nU(aUR#5nO)URR%[S
5U-5 M�UcU"5nUR'X.-U
R(U
R5U5 US-
nUR+5 GM UR-5 U$)NrsarchiveT)rzr|)�fileobjr'rr)rsskipping "%s" (unknown type)r)rdrjr�tarfiler rHrVrrr�isdirr�fsencoder��issym�linkname�extractfiler$rcrr'r r!)r9r"r�rrrr�r��	tarstream�tarr#r$r%�infor`r+rms                 r'r)�gitsubrepo.archivesx�����;�;�����L����F�%�
�$�$�j�(�%;�D�$�I�	��l�l�9�4�8���T�"���7�7�'�'�
�� �7�*��8��(�
����������D��z�z�|�|���%�%�d�i�i�0�E���<�<���z�z�|�|��}�}���O�O�D�)����6�6�8�D��G�G�L�L��#B�!C�e�!K�L����!�8�����V�^�T�Y�Y��
�
��d�K��Q�J�E���� �'�(	�����r)c	��URSnUR5(agUR5(dgUR5HlnURSSXg4-/5n[R
"URX0RRXG5S9n	U	RU5 SSS5 Mn g!,(df   M�=f)Nrr8s%s:%s)�pathnamer)
rd�anypatsr�rr
�makefileobjr�rvrfr�)
r9rr�r�r�r�r�rmr��fps
          r'r��gitsubrepo.cat�s����k�k�!�n���=�=�?�?���{�{�}�}������A��%�%�w��C�8�0C�&D�E�F��$�$��	�	�:�	�	�0A�0A�&�0L������� �������s�B=�=
C	c	��URSnUR5(dU(d[R"///////5$///penUR	5 U(aSSSX1/nOSSU/nURU5nUR
S5Htn	U	RS5n
U
S:XaMX�S-
U
X�S-Sp�US	:XaURU5 MBUS
:XaURU5 M[US:XdMcURU5 Mv ////4up�nn/SQnURS
5(aUS/-
nURS5(aUS/-
nURU5n[5nURU5 URU5 URU5 UR
S5H�n	U	(dMU	SSnU	RS5S:�aU	SSR
S5unnOU	SSnSnURU5 U(aURU5 US:XaURU5 M�US:XdM�URU5 M� URS5(aCURS/5nUR
S5HnUU;dMURU5 M [R"XEXmX�U5$)Nrs	diff-tree�--no-renamesr�rnrm�	rg�M�A�D)r�s--porcelains-zr�s--untracked-files=all�ignoreds	--ignored�rr�r
s??s!!r�sls-files)
rdr,rrrQrr9rer5r�r�rr�)r9r�r�r�r�r��removedr(rr;�tabrrmr�r�r�r��changedfiles�st�	filename1�	filename2s                     r'r�gitsubrepo.status�s����{�{�1�~�������T��>�>�"�b�"�b�"�b�"�=�=�#%�r�2��������#�_�e�T�H�G�$�o�t�<�G����w�'���I�I�e�$�D��)�)�E�"�C��b�y���1�W�s�+�T��'�)�_�A���~�����"��4�����Q���4�����q�!�%�,.�r�2�r�>�(��'�5�4���8�8�I����0�1�1�G��8�8�I�����~�%�G����w�'���u�����H�%����E�"����G�$��I�I�e�$�D����a���B��y�y���1�$�'+�A�B�x�~�~�e�'<�$�	�9� ���H�	� �	����Y�'��� � ��+��U�{����y�)��u�����y�)�%%�(�8�8�G����"�"�K�=�1�C��Y�Y�u�%���L�(��L�L��O�&��~�~��W�w��
�	
r)c�J�URSnSS/nUS(aURS5 OURSUR-5 UR(aUR	SU-SU-/5 OUR	S	U-S
U-/5 UR
(aURS5 UR(aURS5 URURS
/55S:�a"UR(aURS5 URU5 U(aURU5 Sn	UR5(aX�RU5S--
n	O�URU5n
U
RU
RU
R4VVs/sHnUHnUPM M n
nnU
H-nU"U5(dMX�RUSU/-5S--
n	M/ U	R5(aUR!U	5 ggs snnf)Nrrr�r�s--stats-U%ds--src-prefix=%s/s--dst-prefix=%s/s--src-prefix=a/%s/s--dst-prefix=b/%s/s--ignore-all-spaces--ignore-space-changer�)r��s--ignore-blank-linesr)rms--)rdr5�context�noprefixrr�ignorews�ignorewsamountrr�ignoreblanklines�alwaysrr�r�r�r~r�)r9rVr�r�rr�r�r�r�r�r��sublistrmr�s              r'r��gitsubrepo.diff�s������A�����(����<��J�J�y�!�
�J�J�w��!1�!1�1�2�����J�J�$�v�-�/B�V�/K�L�
�
�J�J�&��/�1F��1O�P�
�����J�J�,�-��"�"��J�J�/�0����T�-�-�|�n�=�>�)�K��)�)��J�J�.�/��
�
�5����J�J�u�����<�<�>�>��&�&�s�+�e�3�3�F����U�#�B�!#���R�X�X�r�z�z�B��B�G� �A�� ��B�
��
����8�8��.�.�s�e�Q�Z�/?�@�5�H�H�F���<�<�>�>��H�H�V����s�+Hc��URR[S5US-5 URS5(d�URS5nURnUH�n[
RRURU5n[R"URURU5nURR[S5U[
RRU54-5 [R"UR RU5U5 M� URS5(dURUSS9 /$)NrArrBs#saving current version of %s as %s
rCTrD)rVrrr�r�rhr$rdr�r�
backuppathr�r�r#r�renamerv)	r9r�r>r�rrjr��
parentname�baknames	         r'r?�gitsubrepo.revert1s�������q�2�3�h�q�k�A�B��x�x��$�$��[�[��&�F��O�O�E��� �W�W�\�\�$�*�*�d�;�
�!�,�,��G�G�T�_�_�j���������=�>��R�W�W�_�_�W�5�6�7�����D�I�I�N�N�4�0�'�:���x�x�	�"�"��H�H�X��H�.��	r)c��USS$)Nr�rCrBs  r'rD�gitsubrepo.shortidHs���R�a�y�r))r�r�rdr�r�)NF)NFNrUrVrYrZrW))r=r>r?r@r8r��staticmethodrrrrr�r,r1r5r<r@rGrMrQrZrar�rjrSrXr�r�r�rr�r�r�r)r�rr�r?rDrBrUrVs@r'r�r�fs�����+O�Z�	��	��!��!�FA�
�
:%�x-�9�����Q�A�&�,�  ��0���� ��V��V�p� �� �$����0�0��0�d�$��$�L�$��$�*'�R����$�A
��A
�F�/��/�b����,�r)r�)rzr|r{)FT)C�
__future__rr�r�rhr�r�rnrJr��xml.dom.minidomr��i18nr�interfaces.typesrrOrrr	r�r
rrr
rrr	rrrrrrrrrN�
interfacesr�istatus�utilsrrrrr�rRrHr�r[r(r/r7r1rSr\rnryr�r�r4r�r�r]rXr�r�rCr)r'�<module>r�s/��#���	�	���
�������
���� ���
���%�%��
�
#�
#�
�
�
#�
#�
��"�"�
��K�
0�5�;�;�0��*#�&4�(	M������@�(>�(A�0aL�aL�HT
'��T
'�nB3��B3�Jc��c�N���	�r)

Youez - 2016 - github.com/yon3zu
LinuXploit