ROOTPLOIT
Server: Apache
System: Linux info 3.0 #1337 SMP Tue Jan 01 00:00:00 CEST 2000 all GNU/Linux
User: ws67150586 (67150586)
PHP: 8.3.36
Disabled: NONE
Upload Files
File: //kunden/kunden/kunden/lib/python3/dist-packages/mercurial/__pycache__/obsutil.cpython-313.pyc
�

6�h����4�SSKJr SSKrSSKJr SSKJrJr SSKJ	r	J
r
JrJrJ
r
 SSKJr SrSr"S	S
5rS6SjrSrS
rS7SjrS7SjrSrSrSrSrSrSrSrSrSr Sr!Sr"\RF"S5\RF"S5\RF"S5\RF"S5/r$Sr%Sr&Sr'S r(S!r)S8S"jr*"S#S$\+5r,S9S%jr-S&r.S'r/S(r0S)r1S*r2S+r3S,r4\"S-5\"S.5\"S/5\"S05\"S15S2.r5S:S3jr6S4r7S5r8g);�)�annotationsN�)�_)�hex�short)�diffutil�encoding�error�phases�util)�dateutil�c�N�\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
Srg
)�marker�<zWrap obsolete marker raw datac�*�XlX lSUlg�N)�_repo�_data�_decodedmeta)�self�repo�datas   �3/usr/lib/python3/dist-packages/mercurial/obsutil.py�__init__�marker.__init__?s���
��
� ���c�,�[UR5$r)�hashr�rs r�__hash__�marker.__hash__Es���D�J�J��rc�f�[U5[U5:wagURUR:H$�NF)�typer�r�others  r�__eq__�
marker.__eq__Hs(����;�$�t�*�$���z�z�U�[�[�(�(rc� �URS$)z%Predecessor changeset node identifierr�rr s r�prednode�marker.prednodeM����z�z�!�}�rc� �URS$)z-List of successor changesets node identifiersrr+r s r�	succnodes�marker.succnodesQr.rc� �URS$)z2Parents of the predecessors (None if not recorded)�r+r s r�parentnodes�marker.parentnodesUr.rc�2�[URS5$)zDecoded metadata dictionary�)�dictrr s r�metadata�marker.metadataYs���D�J�J�q�M�"�"rc� �URS$)z#Creation date as (unixtime, offset)�r+r s r�date�marker.date]r.rc� �URS$)zThe flags field of the markerrr+r s r�flags�marker.flagsar.r)rrrN)�__name__�
__module__�__qualname__�__firstlineno__�__doc__rr!r(r,r0r4r9r=r@�__static_attributes__�rrrr<s2��'�!� �)�
���#��rrc#�# �Uc
URnO,U(a[X5nOURRUS9nUHn[X5v� M g7f)zwreturns markers known in a repository

If <nodes> is specified, only markers "relevant" to those nodes are are
returnedN)�nodes)�obsstore�exclusivemarkers�relevantmarkersr)rrJ�	exclusive�
rawmarkers�
markerdatas     r�
getmarkersrQfsN���

�}��]�]�
�	�%�d�2�
��]�]�2�2��2�?�
� �
��T�&�&�!�s�AAc��[USS9$)Nc�,�USSUS=(d S4-$)N���rHrH)�ms r�<lambda>�sortedmarkers.<locals>.<lambda>xs���3�B��1�R�5�;�B�.�)@r)�key)�sorted��markerss r�
sortedmarkersr\vs���'�@�A�Arc#�># �URRnU/n[U5nU(anUR5nUR	US5nUH<nUSnX�;aMURU5 X�;aUv� M+UR
U5 M> U(aMmgg7f)z�yield the list of next predecessors pointing on visible changectx nodes

This function respect the repoview filtering, filtered revision will be
considered missing.
rHrN)rK�predecessors�set�pop�get�add�append)	r�nodeid�
precursors�stack�seen�current�
currentpreccs�prec�
precnodeids	         r�closestpredecessorsrl{s�������+�+�J�
�H�E��u�:�D�
��)�)�+��"���w��3�
�!�D��a��J��!���H�H�Z� ��!� � ����Z�(�"�	�%�s�BB�Bc#�H# �[U5n[U5nURRnU(akUR5nUv� U"US5H@nUSU-(aMUSnX�;dMUR	U5 UR	U5 MB U(aMjgg7f)z�Yield node for every precursors of <nodes>.

Some precursors may be unknown locally.

This is a linear yield unsuited to detecting folded changesets. It includes
initial nodes too.rHrrN)r_r^rar`rb)	rKrJ�ignoreflags�	remainingrgrjrh�mark�sucs	         r�allpredecessorsrr�s�����E�
�I��y�>�D�� � �$�$�D�
��-�-�/���
���"�%�D��A�w��$���q�'�C�������
��
�
�c�"�&��)�s�A+B"�1-B"� B"c#�P# �[U5n[U5nU(a�UR5nUv� URRUS5HGnUSU-(aMUSH,nXt;dM
UR	U5 UR	U5 M. MI U(aM�gg7f)z�Yield node for every successor of <nodes>.

Some successors may be unknown locally.

This is a linear yield unsuited to detecting split changesets. It includes
initial nodes too.rHrrN)r_r`�
successorsrarb)rKrJrnrorgrhrprqs        r�
allsuccessorsru�s�����E�
�I��y�>�D�
��-�-�/���
��'�'�+�+�G�R�8�D��A�w��$���A�w���?��H�H�S�M��M�M�#�&��	9��)�s�A+B&�11B&�$B&c�H�UVs1sHoS(dMUiM sn$s snf)z"return a set with no prune markersrrH�r[rUs  r�
_filterprunesrx�s���'�w�!�A�$�A�w�'�'��'s�
�c	�b�UR5nURRRnURR
nURRnURRn[5n[U5nUVs/sH'n[URUS55(aM%UPM) n	nU	R5 [U	5n
U	(GaKU	R5n[URUS55nURUS5H n
U
S(aMURU
5 M" URUS5H n
U
S(aMURU
5 M" UH�n
X�;aM
U
S(d	U
SU:XaURU
5 U
SnX�;aM:U"U5nU(aX�;aMP[URU55nUR!U5(dM�U
RU5 U	RU5 M� U	(aGMKU$s snf)atset of markers relevant to "nodes" but no other locally-known nodes

This function compute the set of markers "exclusive" to a locally-known
node. This means we walk the markers starting from <nodes> until we reach a
locally-known precursors outside of <nodes>. Element of <nodes> with
locally-known successors outside of <nodes> are ignored (since their
precursors markers are also relevant to these successors).

For example:

    # (A0 rewritten as A1)
    #
    # A0 <-1- A1 # Marker "1" is exclusive to A1

    or

    # (A0 rewritten as AX; AX rewritten as A1; AX is unknown locally)
    #
    # <-1- A0 <-2- AX <-3- A1 # Marker "2,3" are exclusive to A1

    or

    # (A0 has unknown precursors, A0 rewritten as A1 and A2 (divergence))
    #
    #          <-2- A1 # Marker "2" is exclusive to A0,A1
    #        /
    # <-1- A0
    #                #         <-3- A2 # Marker "3" is exclusive to A0,A2
    #
    # in addition:
    #
    #  Markers "2,3" are exclusive to A1,A2
    #  Markers "1,2,3" are exclusive to A0,A1,A2

    See test/test-obsolete-bundle-strip.t for more examples.

An example usage is strip. When stripping a changeset, we also want to
strip the markers exclusive to this changeset. Otherwise we would have
"dangling"" obsolescence markers from its precursors: Obsolescence markers
marking a node as obsolete without any successors available locally.

As for relevant markers, the prune markers for children will be followed.
Of course, they will only be followed if the pruned children is
locally-known. Since the prune markers are relevant to the pruned node.
However, while prune markers are considered relevant to the parent of the
pruned changesets, prune markers for locally-known changeset (with no
successors) are considered exclusive to the pruned nodes. This allows
to strip the prune markers (with the rest of the exclusive chain) alongside
the pruned changesets.
rHrr)�
unfiltered�	changelog�index�has_noderKr^rt�childrenr_rxra�sortr`�listrcrb�issubset)rrJ�unfir}�precursorsmarkers�successormarkers�childrenmarkers�exclmarkers�nrf�	seennodesrhr[rprj�known�precmarkerss                 rrLrL�s���l�?�?��D��~�~�#�#�,�,�H��
�
�2�2���}�}�/�/���m�m�,�,�O��%�K���J�E��P��1�]�3C�3G�3G��2�3N�%O�Q��E�P�	�J�J�L��E�
�I�
��)�)�+���(�,�,�W�b�9�:��$�(�(��"�5�D���7�7����t�$�6�$�'�'���4�D���7�7����t�$�5��D��"��
�A�w�$�q�'�W�,�����%���7�D�� ���T�N�E���*��
(�(8�(<�(<�T�(B�C�K��#�#�K�0�0��
�
�d�#����T�"�?��%�\���e
Qs�$H,�4H,c�^�UR5n[URSU55nUR(a�URRR
mSn[
U5U:wa�[
U5nUVs1sHoDR5iM nnUVs/sH)oDR5(dMUR5PM+ nnUR[URU55 U4SjU5n[URSU55n[
U5U:waM�UVs1sHoDR5iM sn$s snfs snfs snf)a>return all nodes in the "foreground" of other node

The foreground of a revision is anything reachable using parent -> children
or precursor -> successor relation. It is very similar to "descendant" but
augmented with obsolescence information.

Beware that possible obsolescence cycle may result if complex situation.
s%ln::rTc3�F># �UHnT"U5(dMUv� M g7frrH)�.0r�r}s  �r�	<genexpr>�foreground.<locals>.<genexpr>[s����5��1��!��Q�Q��s�!�	!)rzr_rKr{r|r}�len�node�mutable�updateru)	rrJ�
foreground�plen�c�succsr�r�r}s	        @rr�r�Es����?�?��D��T�X�X�h��.�/�J��}�}��>�>�'�'�0�0�����*�o��%��z�?�D�'1�2�z�!�V�V�X�z�E�2�)3�C��A�y�y�{�x�q�v�v�x��G�C��L�L��t�}�}�g�>�?�5��5�E��T�X�X�h��6�7�J�
�*�o��%�)�)�j��F�F�H�j�)�)��3��C��*s�>E�E�9E�0Esef1�r<�� �@s^branch$s^.*-source$s^.*_source$s^source$c�J^�USm[U4Sj[55(+$)znCheck that the key of a meta item (extrakey, extravalue) does not
match at least one of the blacklist pattern
rc3�D># �UHoRT5v� M g7fr)�match)r��pattern�metakeys  �rr��%metanotblacklisted.<locals>.<genexpr>�s����G��g�=�=��)�)��s� )�any�
METABLACKLIST)�metaitemr�s @r�metanotblacklistedr��s"����q�k�G��G��G�G�G�Grc���/nUR5HZnURS5(dURS5(aM1URS5(aSnURU5 M\ U$)z/Drop all information but the username and patchs# User�#s@@s@@
)�
splitlines�
startswithrc)�hunk�	cleanhunk�lines   r�
_prepare_hunkr��s_���I����!���?�?�9�%�%�T�_�_�T�-B�-B����u�%�%������T�"�	"�
�rc�:�[US5nUcU$[U5$)zreturn a cleaned up linesN)�nextr�)�iterdiff�liness  r�
_getdifflinesr��s#����4� �E��}������rc��[R"UR5RSSS.5nURR5UR
5nURUS9nURR5UR
5nURUS9nSupxSXx4;a%[U5n[U5nXx:wagSXx4;aM%g)ztreturn True if both ctx introduce the "same diff"

This is a first and basic implementation, with many shortcoming.
Tr)sgitsunified)�opts)rrNF)	r�diffalloptsr�uirrz�rev�diffr�)	�leftctx�rightctx�diffopts�leftunfi�leftdiff�	rightunfi�	rightdiff�left�rights	         r�_cmpdiffr��s���
�#�#��������1�%��H��}�}�'�'�)�'�+�+�-�8�H��}�}�(�}�+�H����)�)�+�H�L�L�N�;�I����H��-�I��K�D�
�t�m�
#��X�&���i�(���=���t�m�
#�rc��SnUGHsnUR5UR5:wa	U[-nUR5UR5:wa	U[-nUR	5UR	5:wa	U[
-nUR
5UR
5:wa	U[-nUR5UR5:wa	U[-nUR5R5n[[[U55nUR5R5n[[[U55nXW:wa	U[-n[!X5(aGMjU["-nGMv U$)z]From an obs-marker relation, compute what changed between the
predecessor and the successor.
r)�description�DESCCHANGED�user�USERCHANGEDr=�DATECHANGED�branch�
BRANCHCHANGED�parents�
PARENTCHANGED�extra�itemsrY�filterr��METACHANGEDr��DIFFCHANGED)�sourcert�effects�	changectx�changeextra�ctxmeta�sourceextra�srcmetas        r�
geteffectflagr��s?���G��	�� � �"�f�&8�&8�&:�:��{�"�G��>�>��v�{�{�}�,��{�"�G��>�>��v�{�{�}�,��{�"�G���������0��}�$�G�����&�.�.�"2�2��}�$�G� �o�o�'�-�-�/���� 2�K�@�A���l�l�n�*�*�,���� 2�K�@�A�����{�"�G���*�*��{�"�G�C �F�Nrc��USLUSL:XaSn[R"U5eUR5RRR
nURRnURRRn[RnUcURnUSnUSn	[5n
[5nUHnUSn
U"U
5nUb
X�;dX�:�aMU
RU5 U"X5U:XaM>[U"U
5=(d /5R!U5(dMnURU5 M� U$)z�return the set of pre-existing revisions obsoleted by a transaction

Either the transaction or changes item of the transaction (for hooks)
must be provided, but not both.
Ns.exactly one of tr and changes must be provideds
obsmarkerssorigrepolenr)r
�ProgrammingErrorrzr{r|�get_rev�_phasecache�phaserKrtrar�public�changesr_rbr�)r�trr��e�torevr��succsmarkersr��addedmarkers�origrepolen�seenrevs�	obsoletedrpr�r�s               r�getobsoletedr��s$��	�d�
��4��(�=���$�$�Q�'�'��O�O��'�'�-�-�5�5�E����"�"�E��=�=�+�+�/�/�L�
�]�]�F����*�*���=�)�L��.�)�K��u�H���I����A�w���D�k���;�#�/�S�-?�����S�����v�%���|�D�!�'�R�(�1�1�,�?�?��M�M�#����rc�\^�\rSrSrSrU4SjrSr\RS5r	Sr
SrU=r$)�_succsi
zAsmall class to represent a successors with some metadata about itc�D>�[TU]"U0UD6 [5Ulgr)�superrr_r[)r�args�kwargs�	__class__s   �rr�_succs.__init__
s���
���$�)�&�)��u��rc�Z�[U5nURR5UlU$r)r�r[�copy)r�news  rr��_succs.copys$���T�l���l�l�'�'�)����
rc��[U5$r)r_r s r�_set�_succs._sets���4�y�rc�L�URRUR5$r)r�r�r&s  r�canmerge�_succs.canmerges���y�y�!�!�%�*�*�-�-rrZ)
rBrCrDrErFrr�r�
propertycacher�r�rG�
__classcell__)r�s@rr�r�
s4���K���

������.�.rr�c��URRnU/n[U5nUc0nU(GaVUSnXt;=(d U=(a Xq:g=(a Xp;nXs;a!URUR	55 GO�U(aXp;a[U45/X7'GO�/X7'GO�[
XG5HFn	U	SH7n
X�;dM
X�;a/X:'MURU
5 URU
5  O ME GO� /n[
XG5H�n	[5nURRU	5 U/n
U	SH�n
/nU
HvnX:HknUR5nURRUR5 UHnUU;dMURU5 M URU5 Mm Mx U(dM�Un
M� URU
5 M� /n/n[SU5[SS9nUHlnUHAnURU5(dMURRUR5  MH URU5 URU5 Mn UR!5 UX7'U(aGMVX1$)a		Return set of all latest successors of initial nodes

The successors set of a changeset A are the group of revisions that succeed
A. It succeeds A as a consistent whole, each revision being only a partial
replacement. By default, the successors set contains non-obsolete
changesets only, walking the obsolescence graph until reaching a leaf. If
'closest' is set to True, closest successors-sets are return (the
obsolescence walk stops on known changesets).

This function returns the full list of successor sets which is why it
returns a list of tuples and not just a single tuple. Each tuple is a valid
successors set. Note that (A,) may be a valid successors set for changeset A
(see below).

In most cases, a changeset A will have a single element (e.g. the changeset
A is replaced by A') in its successors set. Though, it is also common for a
changeset A to have no elements in its successor set (e.g. the changeset
has been pruned). Therefore, the returned list of successors sets will be
[(A',)] or [], respectively.

When a changeset A is split into A' and B', however, it will result in a
successors set containing more than a single element, i.e. [(A',B')].
Divergent changesets will result in multiple successors sets, i.e. [(A',),
(A'')].

If a changeset A is not obsolete, then it will conceptually have no
successors set. To distinguish this from a pruned changeset, the successor
set will contain itself only, i.e. [(A,)].

Finally, final successors unknown locally are considered to be pruned
(pruned: obsoleted without any successors). (Final: successors not affected
by markers).

The 'closest' mode respect the repoview filtering. For example, without
filter it will stop at the first locally known changeset, with 'visible'
filter it will stop on visible changesets).

The optional `cache` parameter is a dictionary that may contains
precomputed successors sets. It is meant to reuse the computation of a
previous call to `successorssets` when multiple calls are made at the same
time. The cache dictionary is updated in place. The caller is responsible
for its life span. Code that makes multiple calls to `successorssets`
*should* use this cache mechanism or risk a performance hit.

Since results are different depending of the 'closest' most, the same cache
cannot be reused for both mode.
rTrc3�6# �UHo(dMUv� M g7frrH)r��ss  rr��!successorssets.<locals>.<genexpr>�s���/�	�1�Q�Q�Q�	�s�
�	T)rX�reverse)rKrtr_�remover`r�r\rcrbr[r�r��extendrYr�r�r)r�initialnode�closest�cache�succmarkers�	toproceed�
stackedsetrh�case2conditionrprq�	succssets�base�markss�
productresult�prefix�suffix�newss�partrg�final�
candidates�cand�	seensuccss                        r�successorssetsrst��b�-�-�*�*�K��
�I��Y��J��}���8�$�B�-��"�4�
��B��.�B�7�?�	������i�m�m�o�.�
���"(�'��"4�!5���"$���B&�k�&:�;����7�C��'��,�)+�E�J�&�,�,�S�1�&�N�N�3�/�!�#���!<�H�	�)�+�*>�?�D�!�8�D��L�L�$�$�T�*�"�V�F�#�A�w��(*�
�&,�F�*/�*��(.���
�� %�
�
� 4� 4�V�^�^� D�,2�D�(,�5�'8�(-���T�(:�	-3�
!.� 4� 4�U� ;�+5�'-�)�=�%2�F� '��$�$�V�,�)@�,����#�/�	�/�S�$��
�'�D�%)�	��=�=��3�3�%�-�-�4�4�T�\�\�B�!�&*�
���T�*����D�)�'��
�
��!&���_�)�`��rc�h�UR5(dg[XR5SS9nU/:Xa[5/nURR
n/nUH�nU(aUR
U5 MSnURUR5S5HGnUS(aMSn[5nURRU5 UR
U5 MI U(aM�UR
[55 M� /nUH nUR
XURS.5 M" U$)zfcompute the raw data needed for computing obsfate
Returns a list of dict, one dict per successors set
NT)rFrHr)s
successorssmarkers)
�obsoleterr�r�rKrtrcrar[rb)	r�ctx�ssets�succsmap�fullsuccessorsets�sset�foundanyrp�valuess	         r�successorsandmarkersr"s���<�<�>�>���4����T�:�E�
��{���
���}�}�'�'�H�������$�$�T�*��H� ���S�X�X�Z��4���A�w�w�#�H�!�8�D��L�L�$�$�T�*�%�,�,�T�2�5��8�!�(�(���2�-�0�F�!���
�
�d���E�F�"��Mrc�n�[U5S:Xag[U5S:�agUSn[U5S:Xagg)aYCompute a changeset obsolescence fate based on its successorssets.
Successors can be the tipmost ones or the immediate ones. This function
return values are not meant to be shown directly to users, it is meant to
be used by internal functions only.
Returns one fate from the following values:
- pruned
- diverged
- superseded
- superseded_split
r�prunedr�diverged�
superseded�superseded_split�r�)rrts  r�_getobsfater)7sB���>��a���	�^�	�q�	 ��$�A�&�
��z�?�a�� �&rc�F�U(dSnU$[U5S:XaSnU$SnU$)z`Return the verb summarizing the successorset and potentially using
information from the markers
r$rs	rewrittenssplitr()�successorsetr[�verbs   r�obsfateverbr-Rs:�����
�K�	

�\�	�a�	����K����Krc�6�UVs/sHoSPM	 sn$s snf)z/returns the list of dates for a list of markersr<rHrws  r�markersdatesr/_s��!�"�'�Q�a�D�'�"�"��"s�c���UVs/sHn[US5PM nnUVs1sH4nURS5(dM[R"US5iM6 nn[	U5$s snfs snf)z9Returns a sorted list of markers users without duplicatesr7suser)r8rar	�tolocalrY)r[rU�markersmeta�meta�userss     r�markersusersr5dss��'.�/�w�!�4��!��:�w�K�/� �
��D��8�8�G��	(�����g��'��
�
��%�=���0��
s�A+�A0�A0c���UVs/sHn[US5PM nnUVs1sH+o3RS5(dMURS5iM- nn[U5$s snfs snf)z>Returns a sorted list of markers operations without duplicatesr7s	operation)r8rarY)r[rUr2r3�
operationss     r�markersoperationsr8psf��'.�/�w�!�4��!��:�w�K�/�+6��+6�4�(�(�<�:P�������;����*����0��s�A"�A'�A'c���URnURnU(+=(a U(+n/nUR[X#55 [	U5n	U	(a#URSSRU	5-5 U(a<UV
s/sHo�"X5PM nn
URSSRU5-5 [
U5nU(d%URSS9n
[U5S:XaX�;aSnU(dU(a*U(a#URSSRU5-5 [U5nU(a�U(a�[U5n[U5nUU:Xa,[R"US	5nURS
U-5 OD[R"US	5n[R"US	5nURSUU4-5 SRU5$s sn
f)
zgBuild a obsfate string for a single successorset using all obsfate
related function defined in obsutil
s	 using %s�, s as %sT)�acceptemptyrNs by %ss%Y-%m-%d %H:%M %1%2s (at %s)s (between %s and %s)r)�quiet�verbosercr-r8�joinr5�usernamer�r/�min�maxr
�datestr)r�rrtr[�	formatctxr<r=�normalr�r7�succ�
fmtsuccessorsr4�currentuser�dates�min_date�max_date�fmtmin_date�fmtmax_dates                   r�obsfateprinterrMzs���
�H�H�E��j�j�G��[�
&��Y�F�
�D�	�K�K��J�0�1�#�7�+�J�����L�5�:�:�j�#9�9�:��;E�F�:�4��4�:�.�:�
�F����I��
�
�=� 9�9�:�
��!�E���k�k�d�k�3���u�:��?�{�3��E��6�u����I��
�
�5� 1�1�2�
��!�E����u�:���u�:���x��"�*�*�8�5K�L�K��K�K��k�1�2�"�*�*�8�5K�L�K�"�*�*�8�5K�L�K��K�K�/�;��2L�L�M��8�8�D�>���=Gs�
G'shidden revision '%s' is pruneds!hidden revision '%s' has divergeds)hidden revision '%s' was rewritten as: %ss%hidden revision '%s' was split as: %ss1hidden revision '%s' was split as: %s and %d more)r$r%r&r'�superseded_split_severalc�&�[XR55n[U5nUS:Xa[SU-$US:Xa[SU-$US:Xa[	USS5n[SX4-$US:Xa�/nUSHnUR[	U55 M [
U5S::aSRU5n[SX4-$SRUSS5n	[
U5S-
n
XU
4n[S	U-$[R"S
U-5e)zDreturn a human-friendly string on why a obsolete changeset is hiddenr$r%r&rr'rr:NrNzunhandled fate: %r)
rr�r)�filteredmsgtablerrcr�r>r
r�)r�changeidrrt�fate�single_successorr��node_id�fmtsuccs�firstsuccessors�remainingnumberr�s            r�_getfilteredreasonrX�s+����h�h�j�1�J��z�"�D��y���	�*�X�5�5�	
��	���,�x�7�7�	
��	� ��A��q�!1�2���
�.�(�1M�M�M�	
�$�	$���!�!�}�G��L�L��w��(�%��u�:��?��z�z�%�(�H�#�$7�8�H�;O�O�O�#�j�j��r���3�O�!�%�j�1�n�O���?�D�#�$?�@�4�G�G��$�$�%9�D�%@�A�Arc�x�0n0n[URUR5/5HanXAR5:XaM[XU5nUH7nUR5U;aM[	U5U;aM*XC[	U5'M9 Mc UR5VVs/sH	upxXxS.PM snn$s snnf)z2Compute sets of commits divergent with a given one)�divergentnodes�commonpredecessor)rrrKr�r�tupler�)	rrrr
r��	nsuccsets�nsuccset�divset�bs	         r�
divergentsetsra�s����E�
�D�
�T�]�]�S�X�X�Z�L�
9�����
�?��"�4�E�2�	�!�H��x�x�z�X�%���X��$�&��$%��x��!�"�:������%�I�F�#�<�%����s�"B6c
�,�/nUR5(asUR5H_nSnUR5(aSnOUR5(aSnUcM9URSSU-UR	5S.5 Ma UR5(a�[
URUR5/[S9nUVs/sH'ofU;dM
XR5(aM#XPM) nnUH&nURSSUR	5S.5 M( UR5(aM[X5n	U	H<n
U
SVs/sHo�UPM	 nnURS	US
[	U
S5S.5 M> U$s snfs snf)
Nsorphansobsoletes	%s parent)�instability�reason�node)rnsphase-divergentsimmutable predecessorrZscontent-divergentspredecessorr[)rcrZrdre)
�orphanr�rrcr�phasedivergentrrrKr��	bumpedfixr��contentdivergentra)
rr�result�parent�kindr^�p�	immutable�predecessor�dsets�dsetr��divnodess
             r�whyunstablers�s��
�F�
�z�z�|�|��k�k�m�F��D��}�}��� �����"�"�"�����
�
�(1�#/�$�#6�!'������$������&��M�M�C�H�H�J�<�Y�
��*�
�)��$�Y�G�t�w���?P�G�D�G�\�	�
�%�K��M�M�$6�7�(�_�_�.��
�%�������d�(���D�)-�.?�)@�A�)@�A�Q��)@�H�A��M�M�$8�'/�-� ��&:�!;�<�	�
���M��/
��Bs�	F�F�2F�Fr$)r)NN)FN)�return�bytes)9�
__future__r�re�i18nrr�rr�rr	r
rr�utilsr
rh�usingsha256rrQr\rlrrrurxrLr��EFFECTFLAGFIELDr�r�r�r�r�r�r��compiler�r�r�r�r�r�r�r�r�rr"r)r-r/r5r8rMrPrXrarsrHrr�<module>r~sm��#�	������@
�	���'�'�T
'� B�
)�:#�0'�,(�
w�t*�T���������
������
��J�J�{���J�J�~���J�J�~���J�J�{��	�
�H�� ��>)�X�@.�T�.�*e�P-�`'�6
�#�
	��2�l�2�3��7�8��A�B��C�D�!"�<�"���B�>�.,r