Ë Á¿Ë\dCVžãó8—ddlZddlZddlZddlZddlmZddlmZmZm Z m Z m Z m Z m Z mZmZmZmZmZmZmZmZmZddlmZddlmZmZmZmZmZddlm Z dd lmZm!Z!dd „Z"dd „Z#dd „Z$d „Z%d„Z&d„Z'd„Z(d„Z)d„Z*d„Z+d„Z,dd„Z- dd„Z.d„Z/d„Z0d„Z1d„Z2 dd„Z3y)éNé)Únullrevé)ÚCOMP_MODE_PLAINÚENTRY_DATA_COMPRESSED_LENGTHÚENTRY_DATA_COMPRESSION_MODEÚENTRY_DATA_OFFSETÚENTRY_DATA_UNCOMPRESSED_LENGTHÚENTRY_DELTA_BASEÚENTRY_LINK_REVÚ ENTRY_NODE_IDÚENTRY_PARENT_1ÚENTRY_PARENT_2Ú ENTRY_SIDEDATA_COMPRESSED_LENGTHÚENTRY_SIDEDATA_COMPRESSION_MODEÚENTRY_SIDEDATA_OFFSETÚREVIDX_ISCENSOREDÚREVLOGV0ÚREVLOGV1)Ú_)ÚerrorÚmdiffÚpycompatÚ revlogutilsÚutil)Ú storageutil)Ú constantsÚdeltasc ó —|jtjk(sJ|j«‚ddlm}|j |«}t jd|id«}|j |j|j|jdd¬«}|j|_|j|_ |j|_ |j|_ |j«D�]H}|j|«}|j!|«\} } ||k(rz|j#|||j%|«| | |tj&«|j)|«t*k7r-t-d«} t-d «} t/j0| | ¬ «‚Œ¨|j3|«rJ|j)|«t*k7r t-d «} t/j0| «‚|j5|«} n|j7|«} |j#| ||j%|«| | ||j9|««�ŒK|j;|j<d ¬ «|j>s|j;|j@d ¬ «|jjC|j<|j<«|j>s0|jjC|j@|j@«|jE«|jG«y)z*censors a revision in a "version 1" revlogr)Úrevlogócensoredós tmpcensoredT)ÚtargetÚradixÚpostfixÚ censorables0censored revision stored as delta; cannot censorsEcensoring of revlogs is not fully implemented; please report this bug)Úhints:cannot censor due to censored revision having delta storedsstore)ÚlocationN)$Ú_format_versionrrÚr ÚrevrÚpackmetaÚopenerr#r$Ú _format_flagsÚ _generaldeltaÚ _parse_indexÚrevsÚnodeÚparentsÚaddrawrevisionÚlinkrevrÚ deltaparentrrrÚAbortÚ iscensoredÚ_chunkÚrawdataÚflagsÚ addbackupÚ _indexfileÚ_inlineÚ _datafileÚrenameÚ clearcachesÚ _loadindex)ÚrlÚtrÚ censornodeÚ tombstoner Ú censorrevÚnewrlr+r2Úp1Úp2ÚmÚhÚrawtexts úAusr/lib/python3.12/site-packages/mercurial/revlogutils/rewrite.pyÚ v1_censorrO6sq€à × Ñ ¤×!3Ñ!3Ò 3ÐG°R×5GÑ5GÓGÐ 3õà—‘�zÓ"€IÜ×$Ñ$ k°9Ð%=¸sÓC€Ið �M‰MØ � ‰ Ø�y‰yØ�h‰hØØð ó €Eð×.Ñ.€EÔØ×*Ñ*€EÔØ×*Ñ*€EÔØŸ™€EÔà�w‰w�yˆØ�w‰w�s‹|ˆØ—‘˜DÓ!‰ˆˆBà �)Ò Ø × Ñ ØØØ— ‘ ˜9Ó%ØØØÜ×+Ñ+ô ð× Ñ  Ó%¬Ò0ÜÐIÓJ�Üð/ó�ô—k‘k !¨!Ô,Ð,Ø à �=‰=˜Ô Ø�~‰~˜cÓ"¤gÒ-Üð4ó�ô—k‘k !“nÐ$Ø—i‘i “n‰Gà—j‘j “oˆGà ×ÑØ �R˜Ÿ™ C›¨"¨b°$¸¿¹À» ö ðGðN‡L�L�—‘¨€LÔ2Ø �:Š:Ø � ‰ �R—\‘\¨Hˆ Ô5à‡I�I×Ñ�U×%Ñ% r§}¡}Ô5Ø �:Š:Ø � ‰ ×јŸ™¨"¯,©,Ô7à‡N�NÔØ‡M�M…Or"cóÔ—|jtk7sJ|j«‚|jtk7sJ|j«‚|j|«h}t ||||«y)z*censors a revision in a "version 2" revlogN)r)rrr+Ú _rewrite_v2)r rDrErFÚ censor_revss rNÚ v2_censorrS„s_€à × !Ñ !¤XÒ -ÐE¨v×/EÑ/EÓEÐ -Ø × !Ñ !¤XÒ -ÐE¨v×/EÑ/EÓEÐ -à—:‘:˜jÓ)Ð*€KÜ�˜˜K¨Õ3r"c ó—|jtk7sJ|j«‚|jtk7sJ|j«‚|j}|j}t j d|id«}t|«}|j|}|jj|z}|tdz } |j|«} tjd¬«5} t|||| «} t||| | «} | «5}|\}}}}}t|t!|««D]&}||vrt#|||||«Œt%||||| | «Œ( ddd«ddd«|j'dd¬«y#1swYŒ%xYw#1swYŒ)xYw) a[rewrite a revlog to censor some of its content General principle We create new revlog files (index/data/sidedata) to copy the content of the existing data without the censored data. We need to recompute new delta for any revision that used the censored revision as delta base. As the cumulative size of the new delta may be large, we store them in a temporary file until they are stored in their final destination. All data before the censored data can be blindly copied. The rest needs to be copied as we go and the associated index entry needs adjustement. r!r"ésw+b©ÚmodeNT)Ú transactionÚ stripping)r)rrÚindexÚ_docketrr,ÚminÚ entry_sizer Úsidedata_cut_offrÚunnamedtempfileÚ_precompute_rewritten_deltaÚ_setup_new_filesÚrangeÚlenÚ_rewrite_censorÚ_rewrite_simpleÚwrite)r rDrRrFÚ old_indexÚdocketÚfirst_excl_revÚfirst_excl_entryÚ index_cutoffÚ data_cutoffÚsidedata_cutoffÚ tmp_storageÚrewritten_entriesÚ all_filesÚ open_filesÚ old_data_fileÚold_sidedata_fileÚnew_index_fileÚ new_data_fileÚnew_sidedata_filer+s rNrQrQ�s™€ð × !Ñ !¤XÒ -ÐE¨v×/EÑ/EÓEÐ -Ø × !Ñ !¤XÒ -ÐE¨v×/EÑ/EÓEÐ -à— ‘ €IØ �^‰^€Fä×$Ñ$ k°9Ð%=¸sÓC€Iä˜Ó%€Nà—|‘| NÑ3ÐØ—<‘<×*Ñ*¨^Ñ;€LØ"Ô#4Ñ5¸Ñ;€KØ×-Ñ-¨nÓ=€Oä × !Ñ ! vÕ .°+ä7Ø Ø Ø Ø ó  Ðô%Ø Ø Ø Ø ó  ˆ ñŒ[˜Jðñ  ØØ!ØØØ!ô ˜^¬S°«^Ö<�ؘ+Ñ%Ü#ØØ!Ø"ØØ!õ ô$ØØ!Ø"ØØ)Ø#õ ñ=÷÷% /ð` ‡L�L˜T¨T€LÕ2÷=ˆ[ú÷% /Ð .ús%Ã$E;ÄAE/Å E;Å/E8 Å4E;Å;Fc ób—tj|«}i}t|«}|jj «5}t |t |««D�]B}||vrŒ ||} | t|vrŒ| tdk(rtddtf||<Œ8|j||¬«} tj| t|j| t «|j| t"«| gt | «d| t$dz¬«} |j'| |||¬«} |j(j*} tj,| | «\}} |j/«}|j1| j2d«|j/«}| j4|||f||<�ŒE ddd«|S#1swY|SxYw)uºCompute new delta for revisions whose delta is based on revision that will not survive as is. Return a mapping: {rev → (new_base, data_start, data_end, compression_mode)} r)Ú_dfNéÿÿ)r2rIrJÚbtextÚtextlenÚ cachedeltar;)Úexcluded_basesÚ target_revr)rÚ deltacomputerr\Ú _segmentfileÚ _open_readrbrcr r rrr:rÚ revisioninfor r2rrr Ú finddeltainfor[Údefault_compression_headerÚdelta_compressionÚtellrfÚdataÚbase)r rgÚ excluded_revsrnÚdcroriÚdfhr+ÚentryÚtextÚinfoÚdÚ default_compÚ comp_modeÚstartÚends rNr`r`ßs³€ô × Ñ ˜fÓ %€BØÐܘÓ'€NØ × Ñ × 'Ñ 'Ô )¨Sܘ¬¨Y«×8ˆCØ�mÑ#ðؘc‘NˆEØÔ%Ñ&¨mÑ;ØðÔ3Ñ4¸Ò9ä*1°1°a¼Ð)IÐ! #Ò&ð—~‘~ c¨s�~Ó3�Ü"×/Ñ/Øœ}Ñ-Ø—{‘{ 5¬Ñ#8Ó9Ø—{‘{ 5¬Ñ#8Ó9ؘ&Ü ›IØ#ØÔ 1Ñ2°VÑ;ô�ð×$Ñ$ؘ#¨mÈð%ó�ð &Ÿ~™~×HÑH� Ü%×7Ñ7¸ ÀaÓH‘ � ˜1à#×(Ñ(Ó*�Ø×!Ñ! !§&¡&¨¡)Ô,Ø!×&Ñ&Ó(�Ø*+¯&©&°%¸¸iÐ)HÐ! #Ó&ñE9÷ *ðH Ð÷I *ðH Ðús ½EF$Æ$F.c óL‡‡‡‡‡‡ ‡ ‡ —|j}|jj|j««}|jj|j ««Š |jj|j ««Š |jj|j ««Š|jj|j««Š|jj|j««Š tj|‰‰¬«tj‰ ‰‰¬«tj‰ ‰ ‰¬«|jj|j««|jj|j ««|jj|j ««‰|_ ‰|_ ‰|_|j«|j!|¬«t"j$ˆˆˆˆˆ ˆ ˆ ˆfd„«}|S)a+ return a context manager to open all the relevant files: - old_data_file, - old_sidedata_file, - new_index_file, - new_data_file, - new_sidedata_file, The old_index_file is not here because it is accessed through the `old_index` object if the caller function. )Únb_bytes)rhc 3ó¨•K—t‰ d«5}t‰ d«5}t‰d«5}t‰d«5}t‰ d«5}|jdtj«|j «‰k(sJ‚|jdtj«|j «‰k(sJ‚|jdtj«|j «‰ k(sJ‚|||||f–—ddd«ddd«ddd«ddd«ddd«y#1swYŒ*xYw#1swYŒ.xYw#1swYŒ2xYw#1swYŒ6xYw#1swYyxYw­w)NÚrbzr+br)ÚopenÚseekÚosÚSEEK_ENDr†) rrrsrtrurvrlrkÚnew_data_filepathÚnew_index_filepathÚnew_sidedata_filepathÚold_data_filepathÚold_sidedata_filepathrms €€€€€€€€rNÚall_files_openerz*_setup_new_files..all_files_openerBs2øèø€ôÐ# TÔ *¨mÜÐ+¨TÔ2Ð6GÜÐ,¨eÔ4¸ÜÐ/°Ô7¸=Ü!Ø1°5ôà.Ø*×/Ñ/°´2·;±;Ô?Ø#1×#6Ñ#6Ó#8¸LÒ#HÐHÐ#HØ)×.Ñ.¨q´"·+±+Ô>Ø#0×#5Ñ#5Ó#7¸;Ò#FÐFÐ#FØ-×2Ñ2°1´b·k±kÔBØ#4×#9Ñ#9Ó#;¸Ò#NÐNÐ#Nà -Ø 1Ø .Ø -Ø 1ð #ò÷÷8÷5÷3÷+Ð *÷ðú÷8Ð7ú÷5Ð4ú÷3Ð2ú÷+Ð *üszƒ E� E� D:ª D.· D" ÁB)D Ã-D" Ã5D.Ã=D:ÄEÄ EÄDÄD" Ä"D+ Ä'D.Ä.D7 Ä3D:Ä:E Ä?EÅEÅ E)r[r-ÚjoinÚindex_filepathÚ data_filepathÚsidedata_filepathrtrurvrÚcopyfileÚ register_fileÚ index_endÚdata_endÚ sidedata_endrArBÚ contextlibÚcontextmanager) r rkrlrmrhÚold_index_filepathr¡rœr�ržrŸr s ``` @@@@@rNraras©ÿ€ð$�^‰^€FØŸ™×+Ñ+¨F×,AÑ,AÓ,CÓDÐØŸ ™ ×*Ñ*¨6×+?Ñ+?Ó+AÓBÐØ"ŸM™M×.Ñ.¨v×/GÑ/GÓ/IÓJÐàŸ™×+Ñ+¨F×,AÑ,AÓ,CÓDÐØŸ ™ ×*Ñ*¨6×+?Ñ+?Ó+AÓBÐØ"ŸM™M×.Ñ.¨v×/GÑ/GÓ/IÓJÐä‡M�MÐ$Ð&8À<ÕP܇M�MÐ#Ð%6ÀÕM܇M�MØØØ õð  ‡M�M×Ñ × 5Ñ 5Ó 7Ô8Ø ‡M�M×Ñ × 4Ñ 4Ó 6Ô7Ø ‡M�M×Ñ × 8Ñ 8Ó :Ô;à#€FÔØ!€F„OØ)€FÔð ×ÑÔØ ×јVÐÔ$ä×Ñ÷òóðð0 Ðr"có.—|\}}}} } ||} | tdz} | tdz } ||vr>|j| «| t}|j|«}| t}| t }n1||\}}}}||z }|j|«|j|«}| j «}| j|«| t}| j «}d|kr<| t}|j|«|j|«}| j|«| t}| t}||ks J||f«‚tj| ||||| t| t| t | t"||||¬« }|j$j'|«|j$j)|«}|j|«|j «|j*_| j «|j*_| j «|j*_y)z@append a normal revision to the index after the rewritten one(s)ryrUr© r;Ú data_offsetÚdata_compressed_lengthÚdata_uncompressed_lengthÚdata_delta_baseÚlink_revÚ parent_rev_1Ú parent_rev_2Únode_idÚsidedata_offsetÚsidedata_compressed_lengthÚdata_compression_modeÚsidedata_compression_modeN)r r™rÚreadr rr†rfrrr rrrŒr rrr rZÚappendÚ entry_binaryr[r¨r©rª)r rgrpr+rornrrrsrtrurvrŒr;Úold_data_offsetÚ new_data_sizeÚnew_datar³Ú d_comp_moder’r“Únew_data_offsetÚ sidedata_sizeÚnew_sidedata_offsetÚold_sidedata_offsetÚ new_sidedatar²Ú sd_com_modeÚ new_entryÚ entry_bins rNrere^s6€ð ñ ØØØØØà �c‰N€EØ Ô#Ñ $ vÑ -€EØÔ-Ñ.°"Ñ4€Oà Ð#Ñ#Ø×ј?Ô+ØÔ:Ñ;ˆ Ø ×%Ñ% mÓ4ˆØÔ 0Ñ1ˆØÔ7Ñ8‰ ð ˜cÑ "ñ  Ø Ø Ø Ø à˜e™ ˆ Ø×Ñ˜ÔØ×#Ñ# MÓ2ˆð $×(Ñ(Ó*€OØ×јÔ!àÔ:Ñ;€MØ+×0Ñ0Ó2ÐØˆ=ÒØ#Ô$9Ñ:ÐØ×ÑÐ2Ô3Ø(×-Ñ-¨mÓ<ˆ Ø×Ñ  Ô-à$Ô%CÑDÐØÔ7Ñ8€KØ ˜cÒ !Ð9 O°SÐ#9Ó9Ð !ä×!Ñ!ØØ#Ø,Ø!9Ø'Ø”~Ñ&Øœ>Ñ*Øœ>Ñ*Ø”mÑ$Ø+Ø#0Ø)Ø"-ô€Ið ‡L�L×ј Ô"Ø— ‘ ×)Ñ)¨#Ó.€IØ×јÔ#à-×2Ñ2Ó4€F‡N�NÔØ+×0Ñ0Ó2€F‡N�NÔØ"3×"8Ñ"8Ó":€F‡N�NÕr"có4—|\}}}}} ||} t|«} |j«} |j|«| t} | t}| t }t jtj| | | || ||| tddtt¬« }|jj|«|jj|«}|j|«|j«|j_|j«|j_y)z&rewrite and append a censored revisionrr¯N)rcr†rfr rrrrŒrrr rrZr½r¾r[r¨r©)r rgrpr+rFrrrsrtrurvrŒrÀrÃr´rIrJrÉrÊs rNrdrd®s €ð ñ ØØØØØà �c‰N€Eô˜ “N€MØ#×(Ñ(Ó*€OØ×ј Ô"ð”^Ñ$€Hà Œ~Ñ €BØ Œ~Ñ €Bä×!Ñ!Ü×)Ñ)Ø#Ø,Ø!.ØØØØØ”mÑ$ØØ#$Ü-Ü"1ô€Ið ‡L�L×ј Ô"Ø— ‘ ×)Ñ)¨#Ó.€IØ×јÔ#Ø-×2Ñ2Ó4€F‡N�NÔØ+×0Ñ0Ó2€F‡N�NÕr"có¼—|jdd«djdd«}t|«dkr%td«}||z}t j |«‚|dS)Nó.rró/rs,cannot recognize filelog from filename: '%s')ÚrsplitÚsplitrcrrr7)ÚpathÚ path_partÚmsgs rNÚ _get_filename_from_filelog_indexrÔás]€à— ‘ ˜D !Ó$ QÑ'×-Ñ-¨d°AÓ6€IÜ ˆ9ƒ~˜ÒÜÐ?Ó@ˆØ ˆt‰ ˆÜ�k‰k˜#ÓÐà �Q‰<Ðr"cóJ—ddlm}|j|j|«}|S)zAReturns the filelog for the given `path`. Stolen from `engine.py`r)Úfilelog)r*rÖÚsvfs)ÚreporÑrÖÚfls rNÚ_filelog_from_filenamerÚìs €õà �‰˜Ÿ™ DÓ )€BØ €Ir"có^—ddlm}|j|j«€d}t j |«‚|j j}|j|}t|«} |d|dc| d<| d<|j| ddŽ} |j|«|j| «y)zASwaps p1 and p2 and overwrites the revlog entry for `rev` in `fp`r©ÚparsersNz*repo needs to be locked to rewrite parentsééé) ÚpurerÝÚ _currentlockÚ_lockrefrÚProgrammingErrorÚ IndexObjectÚ index_formatrZÚlistÚpackr™rf) rØrCr+ÚoffsetÚfprÝrÓrærŒrÉÚpackeds rNÚ_write_swapped_parentsrìõs¢€åà ×јŸ™Ó'Ð/à:ˆÜ×$Ñ$ SÓ)Ð)à×&Ñ&×3Ñ3€LØ �H‰H�S‰M€EÜ�U“ €IØ!& q¡¨5°©8ЀIˆa�L�)˜A‘,Ø ˆ\× Ñ   ¨"¨1  Ð .€F؇G�GˆF„O؇H�HˆVÕr"c óЗddlm}|j}t|«dkDsJ‚|j}|j t jk7r$d|j z}tj|«‚|j}|dz}td«} |j«5 tj|jj!|«|jj!|«|j"¬«|j|d¬ «5} |j$rp|j'| j)««} |j+«D]=} | |vsŒ| j-| «} t/||| | | «|j1| | |fz«Œ?nQ|j2j4}|D]6} | |j6z} t/||| | | «|j1| | |fz«Œ8d d d «|jj9||«|j;«|j=«tj>|« d d d «y #1swYŒdxYw#tj>|«wxYw#1swYy xYw) z“ Swaps p1 and p2 for all `to_fix` revisions of filelog `fl` and writes the new version to disk, overwriting the old one with a rename. rrÜrz+expected version 1 revlog, got version '%d's.tmp-parents-fixs%repaired revision %d of 'filelog %s' )Ú checkambigsr+rVN) rárÝÚuircÚ_revlogr)rrrrär=rÚuninterruptiblerr¦r-r¢Ú _checkambigr>ÚInlinedIndexObjectr¼r1Ú_calculate_indexrìrfråræÚsizer@rArBÚ tryunlink)rØrÙÚto_fixrÝrïrCrÓÚ index_fileÚ new_file_pathÚ repaired_msgrêrZr+réræs rNÚ_reorder_filelog_parentsrûsõ€õ à �‰€BÜ ˆv‹;˜Š?Ј?Ø �‰€BØ ×ÑœY×/Ñ/Ò/Ø;¸b×>PÑ>PÑPˆÜ×$Ñ$ SÓ)Ð)à—‘€JØÐ!4Ñ4€MÜÐ>Ó?€Là × Ñ Õ ð *Ü �M‰MØ— ‘ —‘˜zÓ*Ø— ‘ —‘˜}Ó-ØŸ>™>õ ð —‘˜=¨u�Ô5¸Ø—:’:Ø#×6Ñ6°r·w±w³yÓA�EØ!Ÿw™wžy˜Ø &š=Ø%*×%;Ñ%;¸CÓ%@˜FÜ2°4¸¸SÀ&È"ÔMØŸH™H \°S¸*Ð4EÑ%EÕFñ )ð $+×#6Ñ#6×#CÑ#C�LÛ%˜Ø!$ |×'8Ñ'8Ñ!8˜Ü.¨t°R¸¸fÀbÔIØŸ™ °°jÐ0AÑ!AÕBð &÷6ð �I‰I× Ñ ˜]¨JÔ 7Ø �N‰NÔ Ø �M‰MŒOä �N‰N˜=Õ )÷7 Ð ÷6Ð5ûô& �N‰N˜=Õ )ú÷7 Ð úsFÂIÂA'IÄAH6Å B H6ÇAIÈIÈ6H? È;IÉIÉIÉI%có:‡‡—ˆˆfd„}ˆˆfd„}t||‰|«S)Ncó:•—‰jj‰«S©N)rðr:©ÚfilerevrÙs€€rNÚz'_is_revision_affected..8sø€˜Ÿ ™ ×*Ñ*¨7Ô3r"có:•—‰jj‰«Srþ)rðÚ parentrevsrÿs€€rNrz'_is_revision_affected..9sø€˜"Ÿ*™*×/Ñ/°Ô8r")Ú_is_revision_affected_inner)rÙrÚmetadata_cacheÚ full_textÚ parent_revss`` rNÚ_is_revision_affectedr7s#ù€Ü3€IÜ8€KÜ &Ø�; ¨ó ðr"có´— |«}t|dd«dk(}|�|||<|r|«\}}|tk7r |tk(ryy#tj$rYywxYw)a�Mercurial currently (5.9rc0) uses `p1 == nullrev and p2 != nullrev` as a special meaning compared to the reverse in the context of filelog-based copytracing. issue6528 exists because new code assumed that parent ordering didn't matter, so this detects if the revision contains metadata (since it's only used for filelog-based copytracing) and its parents are in the "wrong" order.FNrs T)rÚCensoredNodeErrorÚbytesr)rÚ parents_revsrrÚraw_textÚhas_metarIrJs rNrr?sp€ðÙ“;ˆô �X˜b˜q�\Ó" iÑ/€HØÐ!Ø"*ˆ�wÑÙÙ“>‰ˆˆRØ ”Š=˜R¤7š]ØØ øô × "Ñ "òáðús‚AÁAÁAc ó|‡‡ —|jŠ ˆˆ fd„}ˆˆ fd„}ˆˆ fd„}ˆˆ fd„}ˆˆ fd„}t|||||‰|«S)Ncó&•—‰j‰«Srþ)r8©rrCs€€rNrz,_is_revision_affected_fast..^óø€˜"Ÿ-™-¨Ô0r"có&•—‰j‰«Srþ)r6rs€€rNrz,_is_revision_affected_fast.._sø€˜Ÿ™¨Ô0r"có&•—‰j‰«Srþ)r9rs€€rNrz,_is_revision_affected_fast..`sø€�B—I‘I˜gÔ&r"có&•—‰j‰«Srþ)r:rs€€rNrz,_is_revision_affected_fast..asø€˜Ÿ ™  7Ô+r"có&•—‰j‰«Srþ)rrs€€rNrz,_is_revision_affected_fast..brr")rðÚ _is_revision_affected_fast_inner) rØrÙrrÚ is_censoredÚ delta_baseÚdeltarrrCs ` @rNÚ_is_revision_affected_fastr\sGù€Ø �‰€BÜ0€KÜ0€JÜ &€EÜ+€IÜ0€KÜ +ØØØ ØØØØó ðr"cóœ—|«rd||<y|«\}}|tk(s |tk7ry|«} |j| «} | €t||||«S|«} t| «s| Sd} t| «| krt j t d««‚tjd| d| «\} }}| dkrt||||«}|S| ||<| S)aGOptimization fast-path for `_is_revision_affected`. `metadata_cache` is a dict of `{rev: has_metadata}` which allows any revision to check if its base has metadata, saving computation of the full text, instead looking at the current delta. This optimization only works if the revisions are looked at in order.FNé spatch cannot be decodeds>lllr) rÚgetrrcrr7rÚstructÚunpack)rrrrrrrrIrJÚ delta_parentÚparent_has_metadataÚchunkÚ header_lengthr’Ú_endÚ_lengthÚ is_affecteds rNrrnsû€ñ"„}à"'ˆ�wÑØá ‹]�F€BˆØ ŒW‚}˜œgš Øá“<€LØ(×,Ñ,¨\Ó:ÐØÐ"Ü*Ø Ø Ø Ø ó  ð ñ ‹G€EÜ ˆuŒ:à"Ð"à€MÜ ˆ5ƒz�MÒ!Ü�k‰kœ!Ð6Ó7Ó8Ð8ä!Ÿ=™=¨°%¸¸Ð2GÓHÑ€Eˆ4�à ˆq‚yô2Ø Ø Ø Ø ó  ˆ ð Ðð2€N�7ÑØ Ðr"c ó2‡ —|jtd«|z«|«5t|d¬«5}|j«j d«D�]}|sŒ|j dd«\}}t ||«Š t ˆ fd„|j d«D««} t «} | D]}} t‰ | «rd } |j| | |fz«Œ(td «} | tj‰ j| ««|fz} |j| «| j| «Œ| | z } | s td «} |j| |z«Œþ|r�Œt|‰ t| ««�Œ d d d «d d d «y #1swYŒxYw#1swYy xYw) a Fix the revisions given in the `from_report` file, but still checks if the revisions are indeed affected to prevent an unfortunate cyclic situation where we'd swap well-ordered parents again. See the doc for `debug_fix_issue6528` for the format documentation. sloading report file '%s' r—rVó ó rc3óf•K—|](}‰jtj|««–—Œ*y­wrþ)r+ÚbinasciiÚ unhexlify)Ú.0ÚnrÙs €rNÚ z_from_report..¾s*øèø€ðÙ7L°!�—‘”x×)Ñ)¨!Ó,×-Ñ7Lùsƒ.1ó,s,found affected revision %d for filelog '%s' s)revision %s of file '%s' is not affected s*no affected revisions were found for '%s' N)rfrr˜r¼rÐrÚÚsetrÚwarnr,Úhexlifyr2ÚaddrûÚsorted)rïrØÚcontextÚ from_reportÚdry_runÚfÚlineÚ filenodesÚfilenamer÷ÚexcludedrrÓrÙs @rNÚ _from_reportr?®s^ø€ð‡H�HŒQÐ,Ó -° Ñ ;Ô<á �”D˜¨4Õ0°AØ—F‘F“H—N‘N 5×)ˆDÙØØ"&§*¡*¨T°1Ó"5Ñ ˆI�xÜ'¨¨hÓ7ˆBÜóØ7@·±ÀtÔ7LóóˆFô“uˆHã!�Ü(¨¨WÔ5ØJ�CØ—G‘G˜C 7¨HÐ"5Ñ5Õ6äÐIÓJ�CØœH×,Ñ,¨R¯W©W°WÓ-=Ó>ÀÐIÑI�CØ—G‘G˜C”LØ—L‘L Õ)ð"ð˜hÑ&ˆFÙÜÐFÓG�Ø—‘˜˜x™Ô(ØÛÜ(¨¨r´6¸&³>ÖBñ5*÷1�ˆ×0Ð0ú�ˆús)¦F ´D FÅFÅ0F ÆF ÆF Æ Fc #ó4‡‡ ‡ ‡‡‡‡‡‡‡‡K—i}tj‰«Št|t‰««D�]Y\}}|\ŠŠŠ}}Š Š}‰jj |«s*t j|‰jtd««‚‰j|«Š ‰jj ‰«s*t j‰‰jtd««‚‰j‰«Š‰jj ‰«s*t j‰‰jtd««‚‰j‰«Šˆfd„}ˆˆfd„Šˆ fd„Šˆˆfd„} ˆ ˆ ˆˆˆˆˆˆfd„} t|‰ˆ fd„| | ||«} | r ‰‰‰||‰ ‰|f}|–—�Œ\y­w) z7filter incomind deltas to repaire issue 6528 on the flysunknown parentcó(•—t‰tz«Srþ)Úboolr)r;s€rNrz(filter_delta_issue6528..ôsø€œd 5Ô+<Ñ#<Ô=r"có&•—‰j‰«Srþ)r+)rr s€€rNrz(filter_delta_issue6528..õsø€˜VŸZ™Z¨ Ô3r"có•—‰Srþ©)Úbase_revs€rNrz(filter_delta_issue6528..ösø€™Xr"có •—‰‰fSrþrE)Úp1_revÚp2_revs€€rNrz(filter_delta_issue6528..÷s ø€˜v vÑ.r"c ó •—tj‰ j‰«‰«}tj‰‰‰ dg|‰‰f‰«}‰ j €J‚‰ j r‰ j d}n‰ j d}‰j||«S)Nrr)rÚ patchedsizerõrr‚Ú_writinghandlesr>Ú buildtext) r{ÚrevinfoÚfhrFrrr;r2Úp1_nodeÚp2_noder s €€€€€€€€rNrz)filter_delta_issue6528..full_textùsšø€ô ×'Ñ'¨¯ © °HÓ(=¸uÓEˆGä!×.Ñ.ØØØØ�ØØ˜5Ð!ØóˆGð×)Ñ)Ð5Ð 5Ð5Ø�~Š~Ø×+Ñ+¨AÑ.‘à×+Ñ+¨AÑ.�Ø ×*Ñ*¨7°BÓ7Ð 7r"có•—‰SrþrE)rs€rNrz(filter_delta_issue6528..sø€‘Er"N) rrÚ enumeratercrZÚhas_noderÚ LookupErrorr$rr+r)r Ú deltas_iterrr+r�ÚlinknodeÚ deltabaseÚsidedatarrrr'rFrrrr;r2rPrHrQrIs` @@@@@@@@@@rNÚfilter_delta_issue6528rZÖs‰ÿúèø€à€Nä×(Ñ(¨Ó0€Mä˜K¬¨V«×5‰ˆˆQð ñ Ø Ø Ø Ø Ø Ø Ø Ø ð�|‰|×$Ñ$ YÔ/Ü×#Ñ#ؘ6Ÿ<™<¬Ð+<Ó)=óð ð—:‘:˜iÓ(ˆØ�|‰|×$Ñ$ WÔ-Ü×#Ñ# G¨V¯\©\¼1Ð=NÓ;OÓPÐ PØ—‘˜GÓ$ˆØ�|‰|×$Ñ$ WÔ-Ü×#Ñ# G¨V¯\©\¼1Ð=NÓ;OÓPÐ PØ—‘˜GÓ$ˆã=ˆ Ü3ˆ Û%ˆ Ü.ˆ ÷ 8ó 8ô07Ø Ø Û Ø Ø Ø Ø ó ˆ ñ àØØØØØØØð ˆAðŒñS6ùs�F Fc 󇇇—tjˆˆˆfd„«}|rt|‰||‰«Sg}|«5td„‰jj «D««}|j td«td«t|«¬«} d} |D�]Z} | j«| j} t‰| j«} t«}i}| j«D]Ó}t‰| ||«}|rZt| |«}||k7rItd«}t!j"| j%|««}t'j(|| |fz«‚|sŒpd}|j+||| fz«d } ‰rŒ�‰r4|j-t!j"| j%|«««ŒÃ|j-|«ŒÕ|s�Œ,t/|«}‰r|j1| |f«�ŒNt3‰| |«�Œ]| r|j5td ««‰rH|rFt7‰d ¬ «5}|D]*\}}|j5d dj9|«|fz«Œ, ddd«| j;«ddd«y#1swYŒ"xYw#1swYyxYw)Nc3ó¼•K—‰s‰rd–—y‰j«5‰j«5d–—ddd«ddd«y#1swYŒxYw#1swYyxYw­wrþ)ÚwlockÚlock)r9rØÚ to_reports€€€rNr7z!repair_issue6528..context+s5øèø€á ‘iÜ à—‘•˜tŸy™y�{Û÷ +—�Ÿ{˜{ú—�üs1ƒA�A®A³A» AÁA Á AÁAÁAc3óPK—|]}|jr|jr|–—Œ y­wrþ)Ú is_revlogÚ is_filelog)r.rŒs rNr0z#repair_issue6528..9s'èø€ð á2�Ø�Š 5×#3Ò#3ô Ù2ùs‚$&slooking for affected revisionssfilelogs)ÚunitÚtotalTs)paranoid check failed for '%s' at node %ss)found affected revision %d for file '%s' Fs!no affected revisions were found ÚwbrVs%s %s r1)r«r¬r?rçÚstoreÚ data_entriesÚ makeprogressrrcÚ incrementÚ target_idrÚr2r1rrr,r4r2rr7r3r5r6r½rûrfr˜r¢Úcomplete)rïrØr9r_r8Úparanoidr7Úreport_entriesÚfilesÚprogressÚ found_nothingrŒr=rÙr÷rrÚaffectedÚslowrÓr2r:rÑs ``` rNÚrepair_issue6528rs(sVú€ô×ÑõóðñܘB  g¨{¸GÓDÐDà€Ná �Üñ àŸ™×0Ñ0Ô2ó ó ˆð —?‘?Ü Ð/Ó 0Ü�;“Ü�e“*ð#ó ˆð ˆ äˆEØ × Ñ Ô Ø—‘ˆHÜ'¨¨e¯o©oÓ>ˆBô“UˆF؈NØŸ7™7ž9�Ü5ؘ"˜g ~ó�ñÜ0°°WÓ=�DؘxÒ'ÜÐ LÓM˜Ü'×/Ñ/°·±¸Ó0@ÓA˜Ü#Ÿk™k¨#°¸4Ð0@Ñ*@ÓAÐAÚØG�CØ—G‘G˜C 7¨HÐ"5Ñ5Ô6Ø$)�MÚ"Ù$Ø"ŸJ™J¤x×'7Ñ'7¸¿¹ÀÓ8HÓ'IÕJà"ŸJ™J wÕ/ð%%ó(Ü ›�ÙØ"×)Ñ)¨8°VÐ*<Ö=ä,¨T°2°vÖ>ðCñF Ø �H‰H”QÐ<Ó=Ô >á ™Ü�i dÕ+¨qÛ$2‘L�D˜&Ø—G‘G˜J¨$¯)©)°FÓ*;¸TÐ)BÑBÕCñ%3÷,ð ×ÑÔ÷s ˆ÷j,Ð+ú÷k ˆús8¸DI?ÅI?Å5A I?ÇAI?È!0I3ÉI?É3I< É8I?É?J)r"rþ)FNNF)4r,r«ršrr2rrrrrr r r r r rrrrrrrrÚi18nrr*rrrrrÚutilsrrrOrSrQr`rarerdrÔrÚrìrûrrrrr?rZrsrEr"rNÚrvsÁðóÛÛ Û õ÷÷÷÷óõ$÷õõ÷ó Kó\4óO3òd2òjGòTM;ò`03òfòòò$-*ó`ðó ò:ò$=ò@%CòPOðfINôIr"