Ë ‹™¤¢ù‡›Ããó–—ddlZddlZddlmZddlmZmZddlmZd„Z d„Z d„Z d „Z d „Z d „Zejd „«Zd „Zd„Zd„Zy)éNé)Ú_)ÚhexÚshort)Úerrorc󘇇—‰j«Š‰jЉj}|dD�chc]}‰j|«’Œ}}ˆˆfd„}d}||d|d«\}}|sd}||d|d«\}}‰j |«} |swt |d«dk(r:t |d«dk(r)|d|dk7rt jtd««‚t jtd «|t| «fz«‚i} tj|g«} g} | ro| j«} || gk(rT| j| «|| «D]8}|d k7sŒ || vr| |j| «Œ"| g| |<| j|«Œ:| rŒo| j«t | «}| D�cgc]}||vsŒ||k7sŒ|‘Œ}}|dk(s|s"| D�cgc]}‰j |«‘Œc}d |fS|d z}d }d }t«}| D�]} | |vr"|j!| j#| g««Œ*|| xs| g}d || <t |«}||z }t%||«}||kDr| |vr |}| }||k(rnµ||kr&| |vr"|j!| j#| g««Œ”g}| j#| g«D]6}||rt't|||z««||<Œ&|j|«Œ8|sŒä|j)d «}|D] }||gz||<Œ |j|«|||<�Œ|€J‚‰j |«}|g||fScc}wcc}wcc}w)a¥find the next node (if any) for testing during a bisect search. returns a (nodes, number, good) tuple. 'nodes' is the final result of the bisect if 'number' is 0. Otherwise 'number' indicates the remaining possible candidates for the search and 'nodes' contains the next bisect target. 'good' is True if bisect is searching for a first good changeset, False if searching for a first bad one. óskipcóà•—t|D�cgc]}‰j|«‘Œc}«}tjd„«}‰j d|||«D]}g||<Œ ||€|dfS||fScc}w)Ncó—y)N©r óú5usr/lib/python3.12/site-packages/mercurial/hbisect.pyÚz0bisect..buildancestors..)s€°Dr s(%ln::%d) - (::%ln))ÚminÚrevÚ collectionsÚ defaultdictÚrevs)ÚbadÚgoodÚnÚbadrevÚ ancestorsrÚ changelogÚrepos €€rÚbuildancestorszbisect..buildancestors's~ø€Ü±Ó4±¨1�i—m‘m AÕ&°Ñ4Ó5ˆÜ×+Ñ+©LÓ9ˆ Ø—9‘9Ð3°T¸6À4ÖHˆC؈I�cŠNðIà �VÑ Ð $ؘ4�<Ð Ø�yÐ Ð ùò 5s‹A+FóbadógoodTrs+starting revisions are not directly relateds)inconsistent state, %d:%s is good and badéÿÿÿÿréN)Ú unfilteredrÚ parentrevsrÚnodeÚlenrÚAbortrrrÚdequeÚpopleftÚappendÚsortÚsetÚupdateÚgetrÚlistÚpop)rÚstateÚ clparentsrÚskiprrrrrÚchildrenÚvisitÚ candidatesrÚprevÚtotÚcÚ unskippedÚperfectÚbest_revÚbest_lenÚpoisonÚaÚxÚyÚvalueÚ unvisitedÚfirstÚ best_noders` @rÚbisectrDs•ù€ð �?‰?Ó €DØ—‘€IØ×$Ñ$€IØ&+¨G¢nÓ 5¡n ˆI�M‰M˜!Õ  n€DÐ 5õ!ð €DÙ& u¨V¡}°e¸G±nÓEÑ€FˆI٠؈Ù*¨5°©>¸5À¹=ÓIш� Ø �.‰.˜Ó €CÙ ä ��f‘ Ó  !Ò #Ü�E˜'‘NÓ# qÒ(Ø�f‘   w¡Ò/ä—+‘+œaÐ NÓOÓPÐ PÜ�k‰kÜ Ð:Ó ;Ø”u˜S“zÐ"ñ #ó ð ð €HÜ × Ñ ˜v˜hÓ '€EØ€JÙ Ø�m‰m‹oˆØ �S‰>˜RÒ Ø × Ñ ˜cÔ "Ù! #ž�ؘ2“:ؘxÑ'Ø  ™×-Ñ-¨cÕ2à*-¨˜ ™ØŸ ™  TÕ*ð 'ò ð‡O�OÔô ˆj‹/€CÙ&ÓL™J�q¨1°Dª=¸qÀF»{’˜J€IÐLØ ˆa‚x‘yÙ,6Ó7©J q�—‘ Õ"¨JÑ7¸¸DÐAÐAØ�Q‰h€Gð€HØ€HÜ ‹U€FÜˆØ �&‰=à �M‰M˜(Ÿ,™, s¨BÓ/Ô 0Ø à �c‰NÒ #˜s˜eˆØˆ �#‰ä �‹FˆØ �!‰GˆÜ�A�q“ ˆØ �8Ò  ¨4¡ØˆH؈HؘÒÙà ˆwŠ;˜3 d™?à �M‰M˜(Ÿ,™, s¨BÓ/Ô 0Ø àˆ Ø—‘˜c 2Ö&ˆAؘŠ|Ü#¤C¨ °!© °qÑ(8Ó$9Ó:� ˜!’ à× Ñ  Õ#ð 'ò Ø—M‘M !Ó$ˆEÛ�Ø  A 3™w� ˜!’ ðà �H‰H�UŒOØ ˆI�eÓ ðKðN Ð ÐÐ Ø—‘˜xÓ(€Ià ˆK˜˜dÐ #Ð#ùòI 6ùòbMùâ7s²L=Æ0 MÆ:MÇMÇMcó—||dj«}t|«dkDr\|r|d}n|d}t|D�chc]}|j«’Œc}t|«z«}|dk(r|dj |d«Sycc}w)Nrrrr)Úparentsr$r#r*Úancestor)rr/ÚnodesrrFÚsideÚiÚnums rÚ extendrangerLŒs‹€ð�5˜‘8‰n×$Ñ$Ó&€GÜ ˆ7ƒ|�aÒ٠ؘ‘=‰Dà˜‘>ˆDÜ¡WÓ-¡W �1—6‘6•8 WÑ-´°D³ Ñ9Ó:ˆØ �!Š8ؘ1‘:×&Ñ& w¨q¡zÓ2Ð 2Ø ùò.s»Bcó0—ggggdœ}|jjd«D]p}|ddj«\}}|j«j |«}||vr!t j td«|z«‚||j|«Œr|S)N)ócurrentrrr ó bisect.statersunknown bisect kind %s) ÚvfsÚ tryreadlinesÚsplitr!Úlookuprr%rr()rr/ÚlÚkindr#s rÚ load_staterV›s�€Ø b°"¸rÑ B€EØ �X‰X× "Ñ " ?Ö 3ˆØ�s˜�V—\‘\“^‰ ˆˆdØ�‰Ó ×'Ñ'¨Ó-ˆØ �uÑ Ü—+‘+œaÐ 9Ó:¸TÑAÓBÐ BØ ˆd‰ ×ј4Õ ð 4ð €Lr c ó—|jddd¬«}|j«5t|«D]+}||D]!}|jd|t |«fz«Œ#Œ-|j «ddd«y#1swYyxYw)NrOówT)Ú atomictemps%s %s )rPÚwlockÚsortedÚwriterÚclose)rr/ÚfrUr#s rÚ save_stater_¦sj€Ø �‰� $°4ˆÓ8€AØ �‰�ܘ5–MˆDؘdœ �Ø—‘˜  d¬C°«IÐ%6Ñ6Õ7ñ$ð"ð �‰Œ ÷ �‰ús ¥A A8Á8Bcór—|jjd«r|jjd«yy)z+remove any bisect state from the repositoryrON)rPÚexistsÚunlink)rs rÚ resetstaterc¯s'€à ‡x�x‡��Ô'Ø �‰�‰˜Õ(ð(r cóš—|dr|dry|dstjtd««‚tjtd««‚)z`check we have both 'good' and 'bad' to define a range Raise StateError exception otherwise.rrTs'cannot bisect (no known good revisions)s&cannot bisect (no known bad revisions))rÚ StateErrorr)r/s rÚ checkstaterfµsI€ð ˆW‚~˜% š-ØØ �Š>Ü×ÑœqÐ!KÓLÓMÐMä×ÑœqÐ!JÓKÓLÐLr c#óhK— d–—|g|d<t||«y#|g|d<t||«wxYw­w)NrN)r_)rr/r#s rÚ restore_staterhÁs=èø€ð Û à!˜FˆˆjÑÜ�4˜Õøð"˜FˆˆjÑÜ�4˜Õüs‚2„ˆ2›/¯2cóT—t|«}|dvr1t|j«jj||«Sd}|j d«}t |«dk(rd}d}nd}d}d }d |||fz}d ||fz} d } d } d| | |fz} |dk(r|j |«S|dk(r|j |«S|dk(r|j | «S|dk(r|j | «S|dk(r|j |«S|dk(r|j |«Stjtd««‚)a Return a list of revision(s) that match the given 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 )rrr rNs9( bisect(bad)::bisect(good) | bisect(good)::bisect(bad) )sbisect(good)::bisect(bad)rsbisect(good)::s ::bisect(bad)s::bisect(good)s bisect(bad)::s bisect(skip)s( (%s) | (%s) | (%s) )s( (%s) - (%s) )s::bisect(bad) - ::bisect(good)s::bisect(good) - ::bisect(bad)s( ( (%s) | (%s) ) - (%s) )srangesprunedóuntestedóignoredógoodsóbadssinvalid bisect state) rVÚmapr!rrrr$rÚ ParseErrorr) rÚstatusr/ÚrangeÚ_tÚgoodsÚbadsÚskipsÚprunedÚuntestedÚibaÚigaÚignoreds rr,r,ÊsX€ô �tÓ €EØ Ð7Ñ7Ü�4—?‘?Ó$×.Ñ.×2Ñ2°E¸&±MÓBÐBðMˆà �Y‰YÐ3Ó 4ˆä ˆr‹7�aŠ<à%ˆEØ#‰Dð&ˆEØ#ˆDð ˆØ*¨e°T¸5Ð-AÑAˆð&¨°¨Ñ7ˆð 0ˆØ/ˆØ/°3¸¸UÐ2CÑCˆà �XÒ Ø—9‘9˜UÓ#Ð #Ø �yÒ Ø—9‘9˜VÓ$Ð $Ø �{Ò "Ø—9‘9˜XÓ&Ð &Ø �zÒ !Ø—9‘9˜WÓ%Ð %Ø �xÒ Ø—9‘9˜UÓ#Ð #Ø �wÒ Ø—9‘9˜T“?Ð "ä×"Ñ"¤1Ð%<Ó#=Ó>Ð >r có´—|jj|«}|t|d«vr td«S|t|d«vr td«S|t|d«vr td«S|t|d«vs|t|d«vr td«S|t|d«vr td«S|t|d«vr td «S|t|d «vr td «Sy) Nrrr sskippedrjrNrkrlsgood (implicit)rmsbad (implicit))rrr,r)rr#rs rÚlabelr|sÞ€Ø �.‰.× Ñ ˜TÓ "€Cð Œc�$˜Ó Ñ ä�‹zÐØ Œc�$˜ÓÑä�‹yÐØ Œc�$˜Ó Ñ ä�‹}ÐØ Œc�$˜ Ó$Ñ$¨¬s°4¸Ó/DÑ(Dä�‹~ÐØ Œc�$˜ Ó#Ñ#ä�‹}Ðð Œc�$˜Ó!Ñ!äÐ#Ó$Ð$Ø Œc�$˜Ó Ñ äÐ"Ó#Ð#à r cóü—|j«}t|«dk(r||r|jtd««n|jtd««|j ||d«t ||||«}|�p|jtd«|z«nR|r|jtd««n|jtd««|D]}|j ||«Œ|j «y)NrsThe first good revision is: sThe first bad revision is: rsƒNot all ancestors of this changeset have been checked. Use bisect --extend to continue the bisection from the common ancestor, %s. sCDue to skipped revisions, the first good revision could be any of: sBDue to skipped revisions, the first bad revision could be any of: )r!r$r\rÚshowrLr])Úuirr/Ú displayerrHrÚ extendnoders rÚ printresultr‚-sí€Ø �?‰?Ó €DÜ ˆ5ƒz�Q‚á Ø �H‰H”QÐ7Ó8Õ 9à �H‰H”QÐ6Ó7Ô 8Ø�‰�t˜E !™H‘~Ô&Ü   u¨e°TÓ:ˆ Ø Ð !Ø �H‰HÜðBóð ñ õ ñ Ø �H‰HÜð8óõ ð �H‰HÜð7óô ó ˆAØ �N‰N˜4 ™7Õ #ðà ‡O�OÕr )rÚ contextlibÚi18nrr#rrÚrrDrLrVr_rcrfÚcontextmanagerrhr,r|r‚r r rÚr‡sfðóÛå÷õòr$òj òòò)ò Mð ×Ññ óð òA?òHó>%r