Ë O²¯Ÿo.Þ1ã óT—ddlZddlZddlZddlmZddlmZmZddlm Z ddl m Z m Z m Z mZmZmZmZmZmZmZmZmZmZmZmZmZmZddlmZmZej@r ddl!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'e"e#e$e%e'fD]Z(e(rŒJ‚d „Z)d „Z* d8d „Z+Gd „d «Z,d„Z-Gd„d«Z.Gd„de.«Z/Gd„de.«Z0d„Z1d„Z2d9d„Z3d:d„Z4e jjGd„d««Z6d„Z7d„Z8d„Z9d„Z:d;d„Z;d „Zd,„Z?d-„Z@d.„ZAd/„ZBd0„ZCd1„ZDd2„ZEd=d3„ZFd4„ZGd5„ZHd6„ZId7„ZJy)>éNé)Ú_)ÚnullrevÚwdirrev)Úattr)ÚdagopÚerrorÚ formatterÚgraphmodÚmatchÚmdiffÚmergeÚpatchÚpathutilÚpycompatÚrevsetÚ revsetlangÚscmutilÚsmartsetÚ templatekwÚ templaterÚutil)ÚdateutilÚ stringutil)ÚAnyÚCallableÚDictÚOptionalÚSequenceÚTuplecóè—|jd«}|r1 t|«}|dkrtjt d««‚|Sd}|S#t$rtjt d««‚wxYw)z0get the log limit according to option -l/--limitslimits limit must be a positive integerrslimit must be positiveN)ÚgetÚintÚ ValueErrorr Ú InputErrorr)ÚoptsÚlimits ú8usr/lib/python3.12/site-packages/mercurial/logcmdutil.pyÚgetlimitr)9s€à �H‰H�XÓ €EÙ ð Kܘ“JˆEð �AŠ:Ü×"Ñ"¤1Ð%>Ó#?Ó@Ð @ð €LðˆØ €Løô ò KÜ×"Ñ"¤1Ð%HÓ#IÓJÐ Jð Kús • A Á (A1cóD—|j«}|jjdd«rÌ|j«j «t k7r§ddlm}|j|«}|j|j««|jjddid«5|jj«5tj|j«|¬«d d d «d d d «|S|j«S#1swYŒ#xYw#1swY|SxYw) z›get the context object to use as parent when diffing If diff.merge is enabled, an overlayworkingctx of the auto-merged parents will be returned. ódiffsmerger)Úcontext)óuis forcemerges#internal:merge3-lie-about-conflictss merge-diff)ÚwcN)ÚrepoÚuiÚ configboolÚp2ÚrevrÚr,ÚoverlayworkingctxÚsetbaseÚp1ÚconfigoverrideÚsilentr)Úctxr/r,Úwctxs r(Ú diff_parentr<Hs×€ð �8‰8‹:€DØ ‡w�w×ј' 8Ô,°·±³·±³Ä7Ò1Jåà×(Ñ(¨Ó.ˆØ � ‰ �S—V‘V“XÔØ �W‰W× #Ñ #ðð:ð  ð õ ð—‘—‘Õ!Ü— ‘ ˜CŸF™F›H¨Õ.÷"÷ ðˆ à�v‰v‹xˆ÷ "Ð!ú÷ ðˆ ús$Â&DÃ&D Ã'DÄ D ÄDÄDc ó~‡‡ ‡!‡"‡#—| r0tj|j|j«| «Š#ndŠ#d}d„}ˆ fd„}‰#dk7röt j |d¬«}||‰#««}‰#dz Š#|j «D]?}|j‰#«rŒ‰jtd«|||««|fz«ŒAt j|‰#gd ¬ «}tj||«}|}|jjd d «xs|jjd d «Š!ˆ!ˆ#fd„}|||«}|rV|jdd¬«}d}‰j!«s‰j#«| z }‰#s|t j |«|«}|j%||||||| ¬«Š"|€‰j'«rr|xs‰}|r+t)j*t-j.‰"«¬«gŠ"t-j0t-j2‰"««D]}|j5|«Œn½|r+t)j6t-j.‰"«¬«Š"nt)j8d„‰"|¬«Š"‰j;«rJˆ"ˆfd„}t-j0t-j2|«««D]}‰j5|«Œn‰"D]\}}‰j5||¬«Œ|j=«}t j>||«D]”\}}|} |�|j@|d}tjD||«}|jFjI‰ |«} | s+|jK|«stM|j ««sŒ||j%‰||||||| ¬«Œ–y#tB$rd}YŒˆwxYw)zshow diff or diffstat.óNc󇇗ˆˆfd„S)Ncó •—‰‰|««S©N©)ÚxÚfÚgs €€r(Úz1diffordiffstat..compose..}s ø€™™1˜Q›4œr>rB)rDrEs``r(Úcomposezdiffordiffstat..compose|s ù€Ü Ð r>có0•—tj‰|«SrA)Ú posixpathÚjoin)rDÚprefixs €r(Úpathfnzdiffordiffstat..pathfnsø€Ü�~‰~˜f aÓ(Ð(r>T)Úlegacyrelativevalueó/s(warning: %s not inside relative root %s spath)ÚpatsÚdefaultsdevels all-warningss check-relrootcóf•—‰r!|j‰«std|‰fz«‚|t‰«dS)Ns%file %s doesn't start with relroot %s)Ú startswithÚAssertionErrorÚlen)rDÚ checkrootÚrelroots €€r(Ú relrootpathfnz%diffordiffstat..relrootpathfn—s=ø€Ù §¡¨gÔ!6Ü$Ø<ÀÀ7¸|ÑKóðð”S˜“\�^Ð$Ð $r>rF)r,ÚnoprefixéP)r&rLÚcopysourcematchÚ hunksfilterfn)Úwidthcó—|SrArB)ÚchunksÚkwargss r(rFz diffordiffstat..¾s€©r>)r&c3óL•K—‰D]\}}‰j||¬«–—Œy­w)N©Úlabelra)Úchunkrbr^r0s €€r(Úgenzdiffordiffstat..genÂs(øèø€Û$*‘L�E˜5ØŸ(™( 5°˜(Ó6Ó6ñ%+ùsƒ!$rar)ÚchangesÚstatÚfprK)'rÚ canonpathÚrootÚgetcwdrÚ getuipathfnÚfilesrRÚwarnrr ÚmatchmodÚintersectmatchersr0r1ÚcopyÚplainÚ termwidthÚdiffÚcanwritewithoutlabelsrÚdiffstatrÚ iterlinesÚ filechunkiterÚ chunkbufferÚwriteÚ diffstatuiÚ difflabelÚcanbatchlabeledwritesÚnodeÚ itersubreposÚsubstateÚKeyErrorÚ subdirmatcherÚwvfsÚreljoinÚexactÚany)$r0r/ÚdiffoptsÚctx1Úctx2r rerfrgÚ graphwidthrKriÚ listsubreposr[rZrGrLÚuipathfnÚ uirelrootÚ matchrootÚ relrootmatchrWr\ÚoutrcrdrbÚnode2ÚsubpathÚsubÚ tempnode2ÚsubmatchÚ subprefixrUr^rVs$` ` @@@r(Údiffordiffstatr–estü€ñ" Ü×$Ñ$ T§Y¡Y°· ± ³ ¸tÓD‰àˆØ€Oò!ô)ð�#‚~ô×&Ñ& tÀÔFˆÙ™V G›_Ó-ˆ Ø�4‰ˆØŸ™žˆIØ×'Ñ'¨Õ0Ø—‘ÜÐBÓCÙ¡ yÓ 1Ó2°IÐ>ñ?õð'ô—}‘} T°° À7ÔKˆ Ü×*Ñ*¨5°,Ó?ˆØ&ˆà—G‘G×&Ñ&Ø �oó ò<à �W‰W× Ñ  Ð*:Ó ;ð õ %ñ˜¨Ó/ˆá Ø—=‘=¨°U�=Ó;ˆØˆØ�x‰xŒzØ—L‘L“N ZÑ/ˆEáÙœW×0Ñ0°Ó6¸Ó?ˆFà �Y‰YØ Ø ØØ ØØ'Ø#ðó€Fð €~˜×1Ñ1Ô3ØŠh�BˆÙ Ü—n‘n¤T§^¡^°FÓ%;À5ÔIÐJˆFÜ×'Ñ'¬×(8Ñ(8¸Ó(@ÖAˆEØ �I‰I�eÕ ñBñ Ü×%Ñ%¤d§n¡n°VÓ&<ÀEÔJ‰Fä—_‘_Ù/°¸hôˆFð × #Ñ #Ô %õ 7ô×+Ñ+¬D×,<Ñ,<¹S»UÓ,CÖD�Ø—‘˜•ñEó!'‘ ��uØ—‘˜ e�Õ,ð!'ð �I‰I‹K€EÜ×,Ñ,¨T°4Ö8‰ ˆ�؈ ð ØÐ Ø ŸM™M¨'Ñ2°1Ñ5� ô ×)Ñ)¨'°5Ó9ˆØ—I‘I×%Ñ% f¨gÓ6ˆ Ù ˜5Ÿ;™; wÔ/´3°x·~±~Ó7GÕ3HØ �H‰HØØØØØØØØ ð õ ñ9øô ò ðŠIð  úsÌN.Î. N<Î;N<có$—eZdZdZd„Zd„Zdd„Zy)ÚchangesetdifferzBGenerate diff of changeset with pre-configured filtering functionscóH—tj|j««SrA)rÚmatchallr/©Úselfr:s r(Ú_makefilematcherz changesetdiffer._makefilematcherés€Ü×Ñ §¡£ Ó+Ð+r>có—yrArBr›s r(Ú_makehunksfilterz changesetdiffer._makehunksfilterìs€Ør>c ó–—t||j«|t|«||j|«|||j |«¬« y)N)r rfr‰r[)r–r/r<r�rŸ)rœr0r:r†r‰rfs r(Úshowdiffzchangesetdiffer.showdiffïsF€ÜØ Ø �H‰H‹JØ Ü ˜Ó Ø Ø×'Ñ'¨Ó,ØØ!Ø×/Ñ/°Ó4ö r>N)rF)Ú__name__Ú __module__Ú __qualname__Ú__doc__r�rŸr¡rBr>r(r˜r˜æs„ÙLò,òô  r>r˜có$—dd|j«zg}|j«r|jd«|j«r:|jd«|j «D]}|jd|z«Œdj |«S)Ns log.changesets changeset.%sschangeset.obsoleteschangeset.unstablesinstability.%só )ÚphasestrÚobsoleteÚappendÚ isunstableÚ instabilitiesrJ)r:ÚlabelsÚ instabilitys r(Úchangesetlabelsr¯ýsx€Ø °#·,±,³.Ñ @Ð A€FØ ‡|�|„~Ø� ‰ Ð+Ô,Ø ‡~�~ÔØ� ‰ Ð+Ô,Ø×,Ñ,Ö.ˆKØ �M‰MÐ+¨kÑ9Õ :ð/à �9‰9�VÓ Ðr>cóF—eZdZdZd d„Zd„Zd„Zd d„Zd„Zd„Z d „Z d d „Z y)Úchangesetprinterz9show changeset information when templating not requested.Ncó\—||_||_||_|xs t«|_t j ||«|_|xr|jd«|_ |xr|jd«|_ i|_ i|_ d|_ d|_tj «|_y)Nsstatspatch)r0r/Úbufferedr˜Ú_differrÚ diffalloptsÚ _diffoptsr"Ú _includestatÚ _includediffÚheaderÚhunkÚ lastheaderÚfooterrÚ getlogcolumnsÚ_columns)rœr0r/Údifferr†r³s r(Ú__init__zchangesetprinter.__init__ s’€ØˆŒØˆŒ Ø ˆŒ ØÒ2¤Ó!2ˆŒ Ü×*Ñ*¨2¨xÓ8ˆŒØ$Ò>¨¯©°gÓ)>ˆÔØ$Ò?¨¯©°hÓ)?ˆÔ؈Œ ؈Œ ؈ŒØˆŒ Ü"×0Ñ0Ó2ˆ� r>cób—|j«}||jvrM|j|}||jk7r"||_|jj |«|j|=||j vr6|jj |j |«|j |=yyrA)r3r¹r»r0ryrº)rœr:r3Úhs r(Úflushzchangesetprinter.flushsŠ€Ø�g‰g‹iˆØ �$—+‘+Ñ Ø— ‘ ˜CÑ ˆAØ�D—O‘OÒ#Ø"#�”Ø—‘— ‘ ˜aÔ Ø— ‘ ˜CÐ Ø �$—)‘)Ñ Ø �G‰G�M‰M˜$Ÿ)™) C™.Ô )Ø— ‘ ˜#‘ð r>cóh—|jr&|jj|j«yyrA)r¼r0ry©rœs r(Úclosezchangesetprinter.close%s"€Ø �;Š;Ø �G‰G�M‰M˜$Ÿ+™+Õ &ð r>c ó6—tj|«}|jre|jj d¬«|j |||«|jj «|j|j«<y|j |||«y)NT)Úlabeled) rÚ byteskwargsr³r0Ú pushbufferÚ_showÚ popbufferrºr3)rœr:ÚcopiesÚpropss r(Úshowzchangesetprinter.show)so€Ü×$Ñ$ UÓ+ˆØ �=Š=Ø �G‰G× Ñ  tÐ Ô ,Ø �J‰J�s˜F EÔ *Ø#'§7¡7×#4Ñ#4Ó#6ˆD�I‰I�c—g‘g“iÒ à �J‰J�s˜F EÕ *r>có^ —|j«}|jdd«}|jjr4|jj dt j |«zd¬«y|j}|jj |dt j |«zt|«¬«|j«}|dk7r#|jj |d |zd ¬«|jjj«D]c\}} |d k(rŒ | j|j|«D]9} |jj | j| zd | jz¬«Œ;Œe|jjr1|jj |d |j!«zd¬«t j"|j|«D]K} d| j!«z} |jj |dt j | «z| ¬«ŒM|jjr |j%«} | €'|jj&j(} t*}n%|jj,j/| «}|jj |dt j0|j|| «zd¬«|jj |d|j3«zd¬«|jj |dt5j6|j9««zd¬«|j;«rC|j=«}|jj |ddj?|«zd¬«n!|jA«r|jC|«|jE|«|jjrytGgd¢|jI«|jK«|jM«g«D]:\}}|sŒ |jj ||dj?|«zd¬«Œ<nf|jO«rV|jjPr@|jj |ddj?|jO««zd¬«|rZ|jjPrD|D�cgc]}d|z‘Œ }}|jj |d dj?|«zd!¬«|jS«}|ro|jjrYtU|j««D]=\}}|jj |d"|tWjX|«fzd#¬«Œ?|j[«j]«}|r«|jjPr_|jj t_d$«d%¬«|jj |d%¬«|jj d&«n6|jj |d'tWj`|«zd(¬«|jj d)«|jc||«ycc}w)*ú(show a single changeset or file revisionó graphwidthrs%s slog.noderaNó changesetsdefaultóbranchs log.branchsbranchesslog.%ssphases log.phaseslog.parent changeset.%sóparentómanifestsui.debug log.manifestóuserslog.useródateslog.dates instabilitys, slog.instability)ófilessfiles+sfiles-r§sui.debug log.filesrÙsui.note log.filess%s (%s)ócopiessui.note log.copiesóextrasui.debug log.extras description: sui.note log.descriptions ssummarys log.summaryó )2r}r"r0ÚquietryrÚformatchangeidr¾r¯Úbranchr/ÚnamesÚitemsÚlogfmtÚ colornameÚ debugflagr¨ÚmeaningfulparentsÚ manifestnodeÚ nodeconstantsÚwdiridrÚ manifestlogr3Ú formatrevnodeÚuserrÚdatestrÚdater«r¬rJr©Ú _showobsfateÚ_exthookÚzipÚ filesmodifiedÚ filesaddedÚ filesremovedrlÚverboseÚextraÚsortedrÚ escapestrÚ descriptionÚstriprÚ firstlineÚ _showpatch)rœr:rÍrÎÚ changenoder‰ÚcolumnsrßÚnsnameÚnsÚnameÚpctxrbÚmnodeÚmrevr¬ÚkeyÚvalueÚcrõrøs r(rËzchangesetprinter._show2se€à—X‘X“Zˆ Ø—Y‘Y˜}¨aÓ0ˆ à �7‰7�=Š=Ø �G‰G�M‰MØœ'×0Ñ0°Ó5Ñ5¸[ð ô ð à—-‘-ˆØ �‰� ‰ Ø �LÑ !¤G×$:Ñ$:¸3Ó$?Ñ ?Ü! #Ó&ð ô ð—‘“ˆà �ZÒ Ø �G‰G�M‰M˜' )Ñ,¨vÑ5¸]ˆMÔ KàŸ)™)Ÿ/™/×/Ñ/Ö1‰JˆF�Bð˜Ò$ØðŸ™ §¡¨JÖ7�Ø—‘— ‘ ˜bŸi™i¨$Ñ.°iÀ"Ç,Á,Ñ6N� ÕOñ8ð2ð �7‰7× Ò Ø �G‰G�M‰MؘÑ! C§L¡L£NÑ2¸,ð ô ô×-Ñ-¨d¯i©i¸Ö=ˆDØ.°·±³Ñ@ˆEØ �G‰G�M‰Mؘ Ñ"¤W×%;Ñ%;¸DÓ%AÑAÈð õ ð>ð �7‰7× Ò Ø×$Ñ$Ó&ˆE؈}ØŸ ™ ×/Ñ/×6Ñ6�Ü‘à—y‘y×,Ñ,×0Ñ0°Ó7�Ø �G‰G�M‰Mؘ Ñ$Ü×'Ñ'¨¯©°°uÓ=ñ>à.ð ô ð �‰� ‰ �g˜gÑ&¨¯©«Ñ3¸;ˆ ÔGØ �‰� ‰ Ø �GÑ œx×/Ñ/°·±³ Ó;Ñ ;À;ð ô ð �>‰>Ô Ø×-Ñ-Ó/ˆMØ �G‰G�M‰MؘÑ'¨%¯*©*°]Ó*CÑCØ(ð õ ð �\‰\Œ^Ø × Ñ ˜cÔ "à � ‰ �cÔà �7‰7× Ò Ü!Ú0Ø×"Ñ"Ó$ c§n¡nÓ&6¸×8HÑ8HÓ8JÐKö‘ ��UòØ—G‘G—M‘MØ ™  t§y¡y°Ó'7Ñ7Ø3ð"õñ ð�Y‰YŒ[˜TŸW™WŸ_š_Ø �G‰G�M‰MؘÑ! D§I¡I¨c¯i©i«kÓ$:Ñ:Ø*ð ô ñ �d—g‘g—o’oÙ.4Ó5©f¨�j 1“n¨fˆFÐ5Ø �G‰G�M‰Mؘ Ñ" T§Y¡Y¨vÓ%6Ñ6Ø+ð ô ð — ‘ “ ˆÙ �T—W‘W×&Ò&Ü$ U§[¡[£]Ö3‘ ��UØ—‘— ‘ ؘHÑ%¨¬j×.BÑ.BÀ5Ó.IÐ(JÑJØ/ðõð4ð —o‘oÓ'×-Ñ-Ó/ˆ Ù Ø�w‰w�ŠØ—‘— ‘ ÜÐ'Ó(Ð0Jðôð—‘— ‘ ˜kÐ1K� ÔLØ—‘— ‘ ˜gÕ&à—‘— ‘ ؘJÑ'¬*×*>Ñ*>¸{Ó*KÑKØ(ðôð �‰� ‰ �eÔà �‰˜˜ZÕ(ùò;6sÓ0 Z*có’—tj|jj|j«}tj|jjdt j |¬«}|jd|i«j«}|r5|D]/}|jj|jd|zd¬«Œ1yy)Ns{join(obsfate, " ")}©ÚdefaultsÚ resourcesóctxsobsoletes log.obsfatera) r Útemplateresourcesr/r0Ú maketemplaterrÚkeywordsÚ renderdefaultÚ splitlinesryr¾)rœr:ÚtresÚtÚobsfateÚ obsfatelines r(rîzchangesetprinter._showobsfate©s¢€ä×*Ñ*¨4¯9©9¯<©<¸¿¹ÓCˆÜ × #Ñ #Ø �I‰I�L‰LØ $Ü×(Ñ(Øô  ˆð —/‘/ 6¨3 -Ó0×;Ñ;Ó=ˆá Û&� Ø—‘— ‘ Ø—M‘M +Ñ.°Ñ<Ø(ðõñ 'ð r>có—y)z.empty method used by extension as a hook pointNrBr›s r(rïzchangesetprinter._exthook»s�r>cóÒ—|jr4|jj|j||j|d¬«|jr'|j r|jj d«|j r4|jj|j||j|d¬«|js |j r|jj d«yy)NT©rfrÜF)r·r´r¡r0r¶r¸ry)rœr:r‰s r(rûzchangesetprinter._showpatch¾s³€Ø × Ò Ø �L‰L× !Ñ !Ø—‘˜˜dŸn™n¨j¸tð "ô ð × Ò  ×!2Ò!2Ø �G‰G�M‰M˜%Ô Ø × Ò Ø �L‰L× !Ñ !Ø—‘˜˜dŸn™n¨j¸uð "ô ð × Ò  × 1Ò 1Ø �G‰G�M‰M˜%Õ ð!2r>©NNFrA)r) r¢r£r¤r¥rÀrÃrÆrÏrËrîrïrûrBr>r(r±r±s/„ÙCó 3ò ò'ó+òu)ònò$=ô !r>r±có&—eZdZdZ dd„Zd„Zd„Zy)Úchangesetformatterz1Format changeset information by generic formatterNcó€—tj||||||«tj||d¬«|_||_y)NT)Úgit)r±rÀrÚdifffeatureoptsr¶Ú_fm)rœr0r/Úfmr¿r†r³s r(rÀzchangesetformatter.__init__Ðs9€ô ×!Ñ! $¨¨D°&¸(ÀHÔMÜ×.Ñ.¨r°8ÀÔFˆŒØˆ�r>có8—|jj«yrA)rÚendrÅs r(rÆzchangesetformatter.close×s€Ø �‰� ‰ �r>có —|j}|j«|j|¬«|jt j |«|j t j|««¬«|j«}|jjr|sy|j|j«|j«|j«|j|j««|j!«|j#|j%«d¬«|j#|j'«d¬«|j#|j)«D�cgc]!}|j |j+««‘Œ#c}d¬«¬«|jj,sd |vrQ|j|j |j/«xs |j0j2j4«¬ «|jj,sd |vr/|j|j7|j9««¬ «|jj,s d |vsd|vsd|vrq|j|j#|j;«d¬«|j#|j=«d¬«|j#|j?«d¬«¬«|jj, xr|jj@}|sd|vr1|j|j#|jC«d¬«¬«|r|sd|vr(|j|j7|xsidd¬«¬«|jDsd|vrw|jjG«|jHjK|j||jLd¬«|j|jjO«¬«|jPsd|vrx|jjG«|jHjK|j||jLd¬«|j|jjO«¬«yycc}w) rÑ)r:)r3r}Nóbookmark)rstagsnode)rßÚphaserëríÚdescÚ bookmarksÚtagsÚparentsrÖ)ÚmanifestrÛ)rõsmodifiedsaddedóremovedsfile)ÚmodifiedÚaddedÚremovedrÙ)rlrÚsnamessource)rr©rÍsdiffstatTr)rur+F)rs))rÚ startitemr,ÚdatarÚintrevÚhexfuncÚbinnodeÚdatahintr0rÝrßr¨rëÚ formatdaterírøÚ formatlistr&r'r(r}rärær/rçrèÚ formatdictrõrñròrórôrlr·rÊr´r¡r¶rÌr¸)rœr:rÍrÎrr4rrôs r(rËzchangesetformatter._showÚsf€à �X‰XˆØ � ‰ ŒØ � ‰ �sˆ ÔØ �‰”G—N‘N 3Ó'¨b¯j©j¼¿¹ÈÓ9MÓ.NˆÔOà—;‘;“=ˆØ �7‰7�=Š=¡Ø à �‰Ø—:‘:“<Ø—,‘,“.Ø—‘“Ø—‘˜sŸx™x›zÓ*Ø—‘Ó"Ø—m‘m C§M¡M£O¸+�mÓFØ—‘˜sŸx™x›z°�Ó7Ø—M‘MØ/2¯{©{¬}Ó=©}¨!�—‘˜AŸF™F›HÕ%¨}Ñ=ÀGð"óð ô ð �7‰7× Ò   ¨xÑ 7Ø �G‰GØŸ™Ø×$Ñ$Ó&ÒH¨$¯)©)×*AÑ*A×*HÑ*Hóð ô ð �7‰7× Ò  ¨HÑ 4Ø �G‰G˜"Ÿ-™-¨¯ © « Ó4ˆGÔ 5ð �G‰G× Ò Ø˜hÑ&ؘ8Ñ#ؘXÑ%à �G‰GØŸ™ s×'8Ñ'8Ó':À˜ÓIØ—m‘m C§N¡NÓ$4¸7�mÓCØŸ ™  c×&6Ñ&6Ó&8¸w˜ ÓGð ô ð —g‘g×'Ñ'Ð'Ò;¨D¯G©G¯O©OˆÙ �h (Ñ*Ø �G‰G˜"Ÿ-™-¨¯ © « ¸'˜-ÓBˆGÔ CÙ ‘v ¨hÑ!6Ø �G‰GØ—}‘} V¢\¨r°wÀi�}ÓPð ô ð × Ò   ¨xÑ 7Ø �G‰G× Ñ Ô Ø �L‰L× !Ñ ! $§'¡'¨3°·±ÀTÐ !Ô JØ �G‰G˜TŸW™W×.Ñ.Ó0ˆGÔ 1Ø × Ò  ¨8Ñ 3Ø �G‰G× Ñ Ô Ø �L‰L× !Ñ ! $§'¡'¨3°·±ÀUÐ !Ô KØ �G‰G˜Ÿ™×*Ñ*Ó,ˆGÕ -ð!4ùòK>sÅ"&Rr)r¢r£r¤r¥rÀrÆrËrBr>r(rrÍs„Ù;ðBGóòó<.r>rcó2‡—eZdZdZ dd„Zˆfd„Zd„ZˆxZS)Úchangesettemplateraformat changeset information. Note: there are a variety of convenience functions to build a changesettemplater for common cases. See functions such as: maketemplater, changesetdisplayer, buildcommittemplate, or other functions that use changesest_templater. c óJ—tj||||||«tj||«x|_}tj ||t j|t j¬«|_ tj«|_ |j|_dddd|j|jddddddi|_|j rŠd|j"j$d f|j"j&d f|j"j(d fg}|D]<\} } |jD](} | | z} | sŒ | |jvsŒ| |j| <Œ*Œ>ns|jj+«D� cgc]} | |jk7sŒ| ‘Œ}} tj,||j|«}|jj/|«|jdrC|j"j1|jj3|jdi««yycc} w) N)r r Úcacheóheaderr>ófooters docheaderó docfooteró separator)Tr>s_verboses_quiets_debug)r±rÀr r Ú _tresourcesÚ loadtemplaterrrÚ defaulttemplrÚ itertoolsÚcountÚ_counterÚrefÚ_trefÚ_partsÚmapfiler0rôrÝräÚkeysÚtemplatepartsmapÚupdateryÚrender)rœr0r/Útmplspecr¿r†r³rÚ tmplmodesÚmodeÚpostfixrÚcurÚpÚ partnamesÚms r(rÀzchangesettemplater.__init__$sЀô ×!Ñ! $¨¨D°&¸(ÀHÔMä"+×"=Ñ"=¸bÀ$Ó"GÐGˆÔ˜4Ü×(Ñ(Ø Ø Ü×(Ñ(ØÜ×)Ñ)ô  ˆŒô"Ÿ™Ó)ˆŒ à—\‘\ˆŒ à �sØ �sØ �L‰L˜(Ÿ,™,Ø ˜#Ø ˜#Ø ˜#ð  ˆŒ ð × Ò ðØ—‘—‘ +Ð.Ø—‘—‘  Ð*Ø—‘×"Ñ" IÐ.ð ˆIó "+‘ ��gØŸœ�Aؘg™+�CÚ  t§v¡v¢ Ø),˜Ÿ ™  Ašñ%ñ"+ð %)§K¡K×$4Ñ$4Ô$6ÓLÑ$6˜q¸!¸x¿|¹|Ó:KšÐ$6ˆIÐLÜ×*Ñ*¨8°T·V±V¸YÓGˆAØ �K‰K× Ñ ˜qÔ !à �;‰;�|Ò $Ø �G‰G�M‰M˜$Ÿ&™&Ÿ-™-¨¯ © °LÑ(AÀ2ÓFÕ Gð %ùò Ms Å6H Æ H cóä•—|jdrO|jsd|_|xj|jj|jdi«z c_tt |�«S)Nr>r>)rHr¼rrMÚsuperr9rÆ)rœÚ __class__s €r(rÆzchangesettemplater.closeRsTø€Ø �;‰;�|Ò $Ø—;’;Ø!�” Ø �KŠK˜4Ÿ6™6Ÿ=™=¨¯©°\Ñ)BÀBÓGÑ G�KÜÔ'¨Ñ4Ó6Ð6r>cóÞ—|j«}||d<t|j«x|d<}d|i|d<|jdd«}|jdrG|dkDrB|j j |jj|jdi««|jdr„|jj|jd|«}|jr||j|j«<n1|j|k7r"||_ |j j |«|j|j}|j j |jj||««|j|«|j||«|jd r<|j s/|jj|jd |«|_y y y ) rÑr sindexrÚsrevcacherÒrr?r<r=N)rpÚnextrEr"rHr0ryrrMr³r¹r3r»rGrïrûr¼)rœr:rÍrÎÚindexr‰rÂrs r(rËzchangesettemplater._showYsz€à— ‘ “ ˆØˆˆf‰ Ü"& t§}¡}Ó"5Ð5ˆˆh‰˜%Ø'¨Ð0ˆˆkÑØ—Y‘Y˜}¨aÓ0ˆ ð �;‰;�|Ò $¨°ªØ �G‰G�M‰M˜$Ÿ&™&Ÿ-™-¨¯ © °LÑ(AÀ2ÓFÔ Gð �;‰;�yÒ !Ø—‘— ‘ ˜dŸk™k¨)Ñ4°eÓ<ˆAØ�}Š}Ø)*�— ‘ ˜CŸG™G›IÒ&à—?‘? aÒ'Ø&'�D”OØ—G‘G—M‘M !Ô$ð�k‰k˜$Ÿ*™*Ñ%ˆØ �‰� ‰ �d—f‘f—m‘m C¨Ó/Ô0Ø � ‰ �cÔØ �‰˜˜ZÔ(à �;‰;�yÒ !Ø—;’;Ø"Ÿf™fŸm™m¨D¯K©K¸ Ñ,BÀEÓJ�• ðð "r>r)r¢r£r¤r¥rÀrÆrËÚ __classcell__)rXs@r(r9r9s!ø„ñðHMó,Hô\7ö Kr>r9cóh—|r|rJ‚|rtjd|«Stj|«S)NrÓ)r Úmapfile_templatespecÚliteral_templatespec)ÚtmplrIs r(Ú templatespecra|s4€Ù™Ð!Ð !ÙÜ×-Ñ-¨l¸GÓDÐDä×-Ñ-¨dÓ3Ð3r>cóè—|sc|sa|jdd«}|r(tjtj|««St j |jdd««}|su|rs|}d}tjj|«ds6tjd|z«xstj|«\}}|r|}tjd||«Stj|d|«S) zqFind the template matching the given template spec or style See formatter.lookuptemplate() for details. ócommand-templatesólogr-óstyleNrs map-cmdline.rÓ) Úconfigr r_rÚ unquotestringrÚ expandpathÚosÚpathÚsplitÚtry_open_templater^Úlookuptemplate)r0r`ÚstylerIrgÚmapnames r(Ú_lookuptemplaterp„sÜ€ñ ™Ø�y‰yÐ-¨vÓ6ˆÙ Ü×1Ñ1´)×2IÑ2IÈ$Ó2OÓPÐ Pä—O‘O B§I¡I¨e°XÓ$>Ó?ˆEá ‘EØˆØ ˆÜ�w‰w�}‰}˜WÓ% aÒ(Ü%×7Ñ7Ø 'Ñ)óò6ä×,Ñ,¨WÓ5ñ ˆW�bñØ!�Ü×-Ñ-¨l¸GÀRÓHÐHä × #Ñ # B¨ °dÓ ;Ð;r>cóJ—tj|«}t||||¬«S)zKCreate a changesettemplater from a literal template 'tmpl' byte-string.)r³)r r_r9)r0r/r`r³Úspecs r(r r  s%€ô × )Ñ )¨$Ó /€DÜ ˜b $¨°xÔ @Ð@r>có<—|||f}t||jd«|jd««}|jdvr |jd|«}t |||g|¢­ŽS|js%|j s|j s t||g|¢­ŽSt|||g|¢­ŽS)a_show one changeset using template or regular display. Display format will be the first non-empty hit of: 1. option 'template' 2. option 'style' 3. [command-templates] setting 'log' 4. [ui] setting 'style' If all of these values are either the unset or the empty string, regular display via changesetprinter() is done. stemplatere>ócborójsonrd) rpr"rFr rr`rIr±r9)r0r/r&r¿r³Úpostargsrrrs r(Úchangesetdisplayerrw§sœ€ð˜˜hÐ'€HÜ ˜2˜tŸx™x¨ Ó4°d·h±h¸xÓ6HÓ I€Dð  ‡x�xÐ%Ñ%Ø �\‰\˜& $Ó 'ˆÜ! " d¨BÐ:°Ò:Ð:à �8Š8˜DŸIšI¨d¯lªlÜ  DÐ4¨8Ò4Ð4ä ˜b $¨Ð 8¨xÒ 8Ð8r>có�—eZdZdZej «Zej «Zej «Zej eje «¬«Z ej eje «¬«Z ej d¬«Z ej eje «¬«Zej d¬«Zej d¬«Zej eje «¬«Zej eje «¬«Zej eje «¬«Zej eje «¬«Zej d¬«Zej d¬«Zej d¬«Zej d¬«Zej d¬«Zy)ÚwalkoptszgOptions to configure a set of revisions and file matcher factory to scan revision/file history )rPNFrT)r¢r£r¤r¥rÚibrOr&ÚrevspecÚFactoryÚlistr&ÚbranchesrírÚ no_mergesÚ only_mergesÚprune_ancestorsÚusersÚ include_patsÚ exclude_patsÚfollowÚforce_changelog_traversalÚfilter_revisions_by_patsÚsort_revisionsr'rBr>r(ryryÂs„ñð ˆ4�7‰7‹9€DØ ˆ4�7‰7‹9€Dðˆd�g‰g‹i€Gð�—‘   § ¡ ¨TÓ 2Ô3€I؈t�w‰w˜|˜tŸ|™|¨DÓ1Ô2€HØ ˆ4�7‰7˜4Ô €D؈t�w‰w˜|˜tŸ|™|¨DÓ1Ô2€HØ�—‘ Ô&€IØ�$—'‘' %Ô(€KØ�d—g‘g l d§l¡l°4Ó&8Ô9€OØ ˆD�G‰G˜L˜DŸL™L¨Ó.Ô /€Eð�4—7‘7 < 4§<¡<°Ó#5Ô6€LØ�4—7‘7 < 4§<¡<°Ó#5Ô6€LðˆT�W‰W˜QÔ €Fð!( §¡°Ô 6Ðð '˜tŸw™w¨tÔ4Ðð�T—W‘W TÔ*€Nð ˆD�G‰G˜DÔ !�Er>ryc ó —|jd«rd}n|jd«rd}nd}|jd«r|jdd«rd }nd }nd }td*id |“d |“d|jdg«“d|jdg«“d|jdg«|jdg«z“d|jd«“d|jdg«“dt|jd««“dt|jd««“d|jdg«“d|jd g«“d!|jd"g«“d#|jd$g«“d%|“d&t|jd'««“d(|“d)t |«“ŽS)+zwParse log command options into walkopts The returned walkopts will be passed in to getrevs() or makewalker(). s follow_firstrsfollowérógraphó experimentalslog.topoótopoódescNrOr&r{srevr&r#r~rÔs only_branchrírØrókeywordró no_mergesr€ó only_mergesr�ópruner‚r×rƒsincluder„sexcluder…r†r*rˆr'rB)r"r1ryÚboolr))r0rOr&r…rˆs r(Ú parseoptsr”ðs¦€ð  ‡x�x�Ô Ø‰Ø �‰�)Ô Ø‰àˆà ‡x�x�ÔØ �=‰=˜¨+Ô 6Ø$‰Nà$‰Nàˆä ò Ù ð á ð 𗑘 Ô$ð ð—(‘(˜;¨Ô+ð  𗑘) RÓ(¨4¯8©8°NÀBÓ+GÒGð ð�X‰X�gÔ ð 𗑘* bÔ)ð ô�t—x‘x  Ó-Ô.ð ô˜Ÿ™ .Ó1Ô2ð 🙠¨2Ô.ð ð�h‰h�w Ô#ð ð—X‘X˜j¨"Ô-ð ð—X‘X˜j¨"Ô-ð ñ ð! ô"#' t§x¡x° Ó';Ô"<ð# ñ$&ð% ô&�tŒnð' ðr>có\—|d}tj||j|j«\}}|j «xs|j « xr |j }|�sÁ|jr³|jr§t|j««}t|«}|} |D]O} | snK|| } | D]?} | | vr|j| «Œ| j| «sŒ+|j| «d}|} ŒAŒQ|D]'} | |vsŒtjt!d«| z«‚n×|jr |j«D]Œ} | |vrRt"j$j'|j)| ««rd}Œ8tjt!d«| z«‚|j+| «} | rŒmtjt!d«| z«‚n+|j«D]} |j+| «} | rŒd}Œ|r)|j«D]}|r||j,vsŒnd}|||fS)a^Build matcher and expanded patterns from log options If --follow, revs are the revisions to follow from. Returns (match, pats, slowpath) where - match: a matcher built from the given pats and -I/-X opts - pats: patterns used (globs are expanded on Windows) - slowpath: True if patterns aren't as simple as scanning filelogs NTs>cannot follow file not in any of the specified revisions: "%s"ó/cannot follow file not in parent revision: "%s"s$cannot follow nonexistent file: "%s"F)rÚ matchandpatsrOr&ÚanypatsÚalwaysr†r…r{r}rlÚsetÚdiscardÚhasdirr Ú StateErrorrrirjÚexistsÚwjoinÚfileÚstore)r/ÚrevsÚwoptsr;r rOÚslowpathÚ all_filesÚ missing_filesrlÚrr:rDÚfilelogrjs r(Ú _makematcherr©s(€ð �‰:€DÜ×&Ñ& t¨U¯Z©Z¸¿¹ÓD�K€Eˆ4Ø�}‰}‹òØ �L‰L‹NÐÒ>˜u×>Ñ>ð ò Ø �<Š<˜EŸMšMô˜UŸ[™[›]Ó+ˆIÜ  ›NˆM؈EÛ�ÙáØ˜1‘g�Û�AؘC‘xØ%×-Ñ-¨aÕ0ØŸ™ A�ð&×-Ñ-¨aÔ0Ø#'˜à -™ñð ó�ؘ Ò%Ü×*Ñ*Üð/óðñ óðñð�\Š\Ø—[‘[–]�ؘD‘=ô—w‘w—~‘~ d§j¡j°£mÔ4Ø#'˜Ø ä#×.Ñ.Üð!2óð ñ  óððŸ)™) A›,�Úô ×*Ñ*ÜÐAÓBÀQÑFóðñ'#ð.—[‘[–]�ØŸ)™) A›,�Úð $‘Hð #ñ ØŸ ™ ž �Ù˜t t§z¡zÒ1Ùð&ð!�à �$˜Ð Ð r>cóÔ‡‡‡‡‡ —gŠ |D]0}‰|Љ jˆfd„‰j|«D««Œ2iŠˆˆfd„}ˆˆ ˆfd„}tj|«d¬«|fS)Nc3óD•K—|]}‰|j«–—Œy­wrA)Ú introfilectx)Ú.0rDr:s €r(Ú z!_fileancestors..€søèø€ÐD±O¨q�S˜‘V×(Ñ(×*±Oùsƒ cóv•—tj‰‰jtj|«g««SrA)rÚ matchfilesr"r1)r:Úfcacher/s €€r(Ú filematcherz#_fileancestors..filematcher‰s*ø€Ü×!Ñ! $¨¯ © ´7·>±>À#Ó3FÈÓ(KÓLÐLr>c3ó •K—tj‰‰¬«D]*\}}|D�cgc]}|j«‘Œc}‰|<|–—Œ,ycc}w­w)N©Ú followfirst)rÚfilectxancestorsrj)r3Úcsrr±Úfctxsrµs €€€r(Úrevgenz_fileancestors..revgenŒsIøèø€Ü×-Ñ-¨eÀ×M‰GˆC�Ù-/Ó0©R¨˜1Ÿ6™6�8¨RÑ0ˆF�3‰KØ‹IñNùÚ0ùsƒ"A¥A ¼AF)Úiterasc)ÚextendÚwalkrÚ generatorset) r/r¢r rµr§r²r¹r:r±r¸s ` ` @@@r(Ú_fileancestorsr¾|scü€Ø €EÛ ˆØ�1‰gˆØ � ‰ ÓD°C·H±H¸U´OÓDÕDðð€FõMöô × Ñ ¡£°5Ô 9¸;Ð FÐFr>có—y)zDhook for extensions to override the filematcher for non-follow casesNrB)r/rOr&s r(Ú_makenofollowfilematcherrÀ”s€à r>cóÆ— tj||||«S#tj$r3}tj|j d|j ¬«‚d}~wwxYw)z°Resolves user-provided revset(s) into a single revision. This just wraps the lower-level scmutil.revsingle() in order to raise an exception indicating user error. r©ÚhintN)rÚ revsingler ÚRepoLookupErrorr%ÚargsrÃ)r/r{rPÚ localaliasÚes r(rÄrÄ™sS€ð 7Ü× Ñ   w°¸ÓDÐDøÜ × Ñ ò7Ü×јqŸv™v a™y¨q¯v©vÔ6Ð6ûð7ús‚šA ­.AÁA có— tj||«S#tj$r3}tj|j d|j ¬«‚d}~wwxYw)zªResolves user-provided revset(s) into two revisions. This just wraps the lower-level scmutil.revpair() in order to raise an exception indicating user error. rrÂN)rÚrevpairr rÅr%rÆrÃ)r/r¢rÈs r(rÊrÊ¥sM€ð 7Ü�‰˜t TÓ*Ð*øÜ × Ñ ò7Ü×јqŸv™v a™y¨q¯v©vÔ6Ð6ûð7ús‚˜A«.AÁAcóÄ— tj|||«S#tj$r3}tj|j d|j ¬«‚d}~wwxYw)z˜Resolves user-provided revset(s). This just wraps the lower-level scmutil.revrange() in order to raise an exception indicating user error. rrÂN)rÚrevranger rÅr%rÆrÃ)r/ÚspecsrÇrÈs r(rÌṟsQ€ð 7Ü×Ñ  e¨ZÓ8Ð8øÜ × Ñ ò7Ü×јqŸv™v a™y¨q¯v©vÔ6Ð6ûð7ús‚™A¬.AÁA)s not merge()N)smerge()N)Ns_matchfiles(%ps))sdate(%s)N)s branch(%s)ó%lr)s filelog(%s)rÎ)s keyword(%s)rÎ)s ancestors(%s)snot %lr)suser(%s)rÎ) r�r‘ó _matchfilesrØrÔó_patslogr�r’r×c ó—|jD�cgc]}d|j|«z‘Œc}|j|j|j|j |j |jD�cgc]}d|z‘Œ c}dœ}|jr{|ryddg}|jD]}|jd|z«Œ|jD]}|jd|z«Œ|jD]}|jd|z«Œ||d<n0|jr$|jst|j«|d <g}t|j!««D]ž\} } | sŒ t"| \} } | rd | vr|j| «Œ-| s&|jt%j&| | ««ŒU| r#| D�cgc]}t%j&| |«‘Œ} }|jt%j&| | ««Œ |j(rP|jt%j&d |j(D�cgc]}t+j,|«‘Œc}««|rd d j/|«zdz}|Sd}|Scc}wcc}wcc}wcc}w)z?Return a revset string built from log options and file patternssliteral:)rÔrØr�r�r‘r’r×sr:s d:relpathsp:si:sx:rÏrÐó%rÎó(s and ó)N)r~Ú lookupbranchrírrr€r�r‚r‡rOrªrƒr„r…r}röráÚ_opt2logrevsetrÚ formatspecr&rÚformat_bookmark_revspecrJ) r/r£r¤ÚbÚvr&Ú matchargsrSÚexprÚopÚvalÚrevopÚlistops r(Ú _makerevsetráÊsN€ðAFÇÂÓOÁ¸1�K $×"3Ñ"3°AÓ"6Ó6ÀÑOØ—‘Ø—N‘NØ—o‘oØ×)Ñ)Ø×'Ñ'Ø+0¯;ª;Ó7©; a�+ “/¨;Ñ7ñ €Dð ×%Ò%©(ð˜LÐ)ˆ Ø—”ˆAØ × Ñ ˜U Q™YÕ 'ðà×#Ô#ˆAØ × Ñ ˜U Q™YÕ 'ð$à×#Ô#ˆAØ × Ñ ˜U Q™YÕ 'ð$à(ˆˆ^ÒØ × 'Ò '°· ² Ü  §¡Ó,ˆˆ[Ñà €Dܘ$Ÿ*™*›,Ö'‰ˆˆCÙØ Ü& rÑ*‰ ˆˆvÙ �T Ñ&Ø �K‰K˜Õ ÙØ �K‰Kœ ×-Ñ-¨e°SÓ9Õ :áÙ@CÓDÁ¸1”z×,Ñ,¨U°AÕ6À�ÐDØ �K‰Kœ ×-Ñ-¨f°cÓ:Õ ;ð(ð ‡‚Ø � ‰ Ü × !Ñ !ØØ=B¿_º_ÓM¹_¸”×0Ñ0°Õ3¸_ÑMó ô ñ Ø�h—m‘m DÓ)Ñ)¨DÑ0ˆð €KðˆØ €KùòkPùò 8ùò@EùòNs�I0Á1 I5Æ/I:È*I?cóh—|jrt||j«}|S|jr=|jj «|j k(rt j«}|S|jr|jd«}|St j|«}|j«|S)z>Return the initial set of revisions to be filtered or followedó.) r{rÌr…Údirstater7ÚnullidrÚbasesetr¢ÚspansetÚreverse)r/r£r¢s r(Ú _initialrevsrés“€à ‡}‚}ܘ˜eŸm™mÓ,ˆð €Kð �Š˜$Ÿ-™-×*Ñ*Ó,°· ± Ò;Ü×ÑÓ!ˆð €Kð �ŠØ�y‰y˜‹ˆð €Kô×Ñ Ó%ˆØ � ‰ ŒØ €Kr>có‡—t||«}|stj«dfSt|||«\Š}}t j ||¬«}d}|j ru|s‰j«r&tj|||j dk(¬«}n-|jrJ‚t||‰|j dk(¬«\}}|j«|€!t||j|j«}|€ˆfd„}t!|||«}|j"r¬|j"dvsJ‚|j"dk(r[|j%«s}tj&||j(j*«}t-jt/|«d¬ «}n2|j1«s"|j%«s|j3d¬ «|rt-j4d|«}|||«}|j6�|j9d |j6«}||fS) z»Build (revs, makefilematcher) to scan revision/file history - revs is the smartset to be traversed. - makefilematcher is a function to map ctx to a matcher for that revision N)rOrr´có•—‰SrArB)r:r s €r(r²zmakewalker..filematcher/sø€ØˆLr>>rŽr�r�T)Úistopo©rèr)rérrær©rÚevolver…r™rÚ revancestorsr†r¾rèrÀrOr&rárˆrìÚtoposortÚ changelogÚ parentrevsrr}Ú isdescendingÚsortr r'Úslice) r/r£r¢rOr¤r²rÜÚmatcherr s @r(Ú makewalkerr÷sÀø€ô ˜˜eÓ $€DÙ Ü×ÑÓ! 4Ð'Ð'ä(¨¨t°UÓ;Ñ€Eˆ4�Ü �K‰K˜ DÔ )€Eà€KØ ‡|‚|Ù �u—|‘|”~Ü×%Ñ% d¨D¸e¿l¹lÈaÑ>OÔP‰Dà×6Ò6Ð 6Ð6Ü .Ø�d˜E¨u¯|©|¸qÑ/@ô!Ñ ˆD�+ð � ‰ ŒØÐÜ.¨t°U·Z±ZÀÇÁÓLˆ ØÐô ô �t˜U HÓ -€DØ ×ÒØ×#Ñ#Ð'9Ñ9Ð9Ð9Ø × Ñ  7Ò *Ø—;‘;”=Ü—~‘~ d¨D¯N©N×,EÑ,EÓF�ä—~‘~¤d¨4£j¸Ô>‘Ø×#Ñ#Ô%¨¯©¬à �I‰I˜dˆIÔ #Ù Ü—,‘,˜t TÓ*ˆÙ�t˜TÓ"ˆØ ‡{�{ÐØ�z‰z˜!˜UŸ[™[Ó)ˆà �Ð Ðr>cóV—t||«\}}|s|dfSt«}||_||fS)zvReturn (revs, differ) where revs is a smartset differ is a changesetdiffer with pre-configured file matcher. N)r÷r˜r�)r/r£r¢r²r¿s r(ÚgetrevsrùFs<€ô # 4¨Ó/Ñ€Dˆ+Ù Ø�TˆzÐÜ Ó €FØ)€FÔØ �ˆ<Ðr>cóü—g}|jdg«D]ˆ} |jdd«\}} t t|jd««\}}t d«|z}tj|d||«}|j|tj||«f«ŒŠ|S#t$r"tjt d«|z«‚wxYw#t$r"tjt d«|z«‚wxYw) zbParse --line-range log option and return a list of tuples (filename, (fromline, toline)). s line_rangeó,rs"malformatted line-range pattern %só:sinvalid line range for %ss3line range pattern '%s' must match exactly one fileN)r"Úrsplitr$r r%rÚmapr#rkrÚparsefollowlinespatternrªrÚprocesslinerange) r/r&ÚlinerangebyfnameÚpatÚ linerangeÚfromlineÚtolineÚmsgÚfnames r(Ú_parselinerangeoptrTs €ðÐØ�x‰x˜  rÖ*ˆð Ø ŸZ™Z¨¨aÓ0‰NˆC�ð  JÜ"¤3¨ ¯©¸Ó(=Ó>Ñ ˆH�fôÐFÓGÈ#ÑMˆÜ×/Ñ/°°d¸CÀÓEˆØ×ÑØ ”D×)Ñ)¨(°FÓ;Ð <õ ð+ð Ðøôò Ü×"Ñ"ÜÐ7Ó8¸3Ñ>óð ð ûô ò JÜ×"Ñ"¤1Ð%AÓ#BÀSÑ#HÓIÐ Ið Jús™B"¯"CÂ"+C Ã+C;có<‡‡‡—‰d}iŠt‰|«D]¹\}\}}||vr!tjtd«|z«‚|j |«}t j |||«D]a\}}|j«} | €t} | |vrŒ#‰j| i«j|j«g«j|«ŒcŒ»d„Šˆˆfd„} ˆˆfd„} t‰d¬«} t«} | | _| | _t!j"| «| fS)aReturn (revs, differ). "revs" are revisions obtained by processing "line-range" log options and walking block ancestors of each specified file/line-range. "differ" is a changesetdiffer with pre-configured file matcher and hunks filter. Nr–có—|SrArB)ÚfctxÚhunkss r(Únofilterhunksfnz)getlinerangerevs..nofilterhunksfn‰s€Øˆ r>cód•‡—‰jtj|««Š‰€‰Sˆfd„}|S)Nc3󯕇K—‰j|j««}|�/|D])\Š}‰€‰|f–—Œtˆfd„|D««sŒ$‰|f–—Œ+y|D]}|–—Œy­w)Nc3óP•K—|]}tj‰dd|«–—Œy­w)rŠN)r Ú hunkinrange)r­ÚlrÚhrs €r(r®zJgetlinerangerevs..hunksfilter..filterfn..˜s%øèø€ÐNÁ:¸Rœ5×,Ñ,¨R°°¨V°R×8Á:ùsƒ#&)r"rjr…)r r Ú linerangesÚlinesrºrÚfctxlinerangess @€r(Úfilterfnz7getlinerangerevs..hunksfilter..filterfn‘sjùèø€Ø'×+Ñ+¨D¯I©I«KÓ8ˆJØÐ%Û!&‘I�B˜Ø�zØ  %˜išØ ÜÓNÁ:ÓNÕNØ  %˜i›ñ "'ó"�DØ“Jñ"ùs „AA!Á A!)r"rr1)r:rrÚlinerangesbyrevr s @€€r(Ú hunksfilterz%getlinerangerevs..hunksfilterŒs4ù€Ø(×,Ñ,¬W¯^©^¸CÓ-@ÓAˆØ Ð !Ø"Ð "ô ðˆr>c󌕗t‰jtj|«g««}tj‰|«SrA)r}r"rr1r°)r:rlrr/s €€r(r²z%getlinerangerevs..filematcher s6ø€Ü�_×(Ñ(¬¯©¸Ó)<¸bÓAÓBˆÜ×!Ñ! $¨Ó.Ð.r>Trí)rr r�rÚfilectxrÚblockancestorsÚintrorevrÚ setdefaultrjrªrör˜r�rŸrræ)r/Úuserrevsr&r;rrrr rr3rr²r¢r¿rr s` @@r(Úgetlinerangerevsr ls#ú€ð �‰:€Dð€OÜ%7¸¸dÖ%CÑ!ˆÑ!�˜&Ø ˜Ñ Ü×"Ñ"ÜÐDÓEÈÑMóð ð�|‰|˜EÓ"ˆÜ$×3Ñ3°D¸(ÀFÖK‰OˆD�)Ø—-‘-“/ˆC؈{Ü�ؘ(Ñ"ØØ × &Ñ & s¨BÓ /× :Ñ :Ø— ‘ “ ˜Ró ç‰f�YÕñ Lð &Dò õõ(/ô �/¨4Ô 0€Dä Ó €FØ)€FÔØ)€FÔÜ × Ñ ˜DÓ ! 6Ð )Ð)r>có6‡—|jdd«}|stjStj|«}t |t «r |j}ntj|«}tj||tj|¬«Šˆfd„}|S)Nrcs graphnodercó0•—||dœ}‰j|«S)N)r srepo)r)r/r:r;rÎÚtempls €r(Ú formatnodez'_graphnodeformatter..formatnode»sø€Ø tÑ,ˆØ×"Ñ" 5Ó)Ð)r>) rfrÚ getgraphnoderrgÚ isinstancer9r@r r r r)r0Ú displayerrrrr$r#s @r(Ú_graphnodeformatterr(¬s…ø€Ø �9‰9Ð)¨<Ó 8€DÙ Ü×&Ñ&Ð&ä × "Ñ " 4Ó (€DÜ�)Ô/Ô0à×$Ñ$‰ä×*Ñ*¨2Ó.ˆÜ × #Ñ #Ø ˆDœ:×.Ñ.¸$ô €Eô*ð Ðr>c óÔ—|xsi}t||«}tj«}|j} |j d«r&| j t j| d««n†tjtjtjdœ} | j«D],\} } |jdd| z| | «| | <| | rŒ(d| | <Œ.|jdd«|_i} |D]â\}}}}|||| «}|r||«nd}||||||«}t|«}|d}|j |f||dœt#j$|«¤Ž|j&j)|«j+d «}|d s|d =|j-|«t/j0|g|«D]#\}}}}tj2||||||«g}Œ%Œä|j5«y) Nr‹ó|)rÕs grandparentsmissingrŒs graphstyle.%ss graphshortenrŠ)rÍr‰rÜéÿÿÿÿ)r(r Ú asciistateÚstylesrqrLÚdictÚfromkeysÚPARENTÚ GRANDPARENTÚ MISSINGPARENTrárfr1Ú graphshortenrZrÏrÚ strkwargsrºÚpoprkrÃrCÚchainÚasciirÆ)r0r/Údagr'ÚedgefnÚ getcopiesrÎr$Ústater-Ú edgetypesrrÚformatnode_cacher3Útyper:r(ÚcharrÍÚedgesÚ firstedger\rÚcoldatas r(Ú displaygraphrCÂsà€Ø ŠK�R€EÜ$ R¨Ó3€JÜ × Ñ Ó !€EØ �\‰\€Fð ‡x�x�Ôà� ‰ ”d—m‘m F¨DÓ1Õ2ô —‘Ü$×0Ñ0Ü ×.Ñ.ñ ˆ ð #Ÿ™Ö*‰IˆD�#àŸ)™)ØÐ!1°DÑ!8¸&À¹+óˆF�3‰Kð˜#“;Ø"��s’ ð +ð Ÿ]™]¨?¸OÓLˆÔàÐÛ#&шˆT�3˜Ù˜$ Ð%5Ó6ˆÙ#,‘˜3”°$ˆÙ�t˜T 5¨#¨wÓ7ˆÜ˜“Kˆ ؘ!‘ ˆØˆ �‰Ø ð Ø¨5ñ Ü4<×4FÑ4FÀuÓ4Mò ð—‘×"Ñ" 3Ó'×-Ñ-¨eÓ4ˆØ�RŠyØ�b� Ø�‰˜ÔÜ*3¯/©/¸9¸+ÀuÖ*MÑ &ˆD�$˜˜wÜ �N‰N˜2˜u d¨D°%¸Ô A؉Eñ+Nð$'ð ‡O�OÕr>cól—tj||«}t||||tj|«yrA)r Ú dagwalkerrCÚ asciiedges)r0r/r¢r'Ú getrenamedÚrevdags r(ÚdisplaygraphrevsrIñs,€Ü × Ñ   dÓ +€FÜ��T˜6 9¬h×.AÑ.AÀ:ÕNr>cóœ—|D]7}||}|r||«nd}|j||¬«|j|«Œ9|j«y)Nr.)rÏrÃrÆ)r0r/r¢r'r:r3r:rÍs r(Ú displayrevsrKösJ€ÛˆØ�3‰iˆÙ#,‘˜3”°$ˆØ�‰�s 6ˆÔ*Ø�‰˜Õð ð ‡O�OÕr>cóˆ—dD]=}||vsŒ||sŒtjtd«|jdd«z«‚y)N)s newest_firsts+-G/--graph option is incompatible with --%só_ó-)r r%rÚreplace)rOr&rÝs r(ÚcheckunsupportedgraphflagsrPÿsH€ÛˆØ �Š:˜$˜r›(Ü×"Ñ"ÜÐ@ÓAØ—*‘*˜T 4Ó(ñ)óð ñ r>cór—t|«}|j«|�|d|}tj||«SrA)r)rèr Únodes)r/rRr&r's r(Ú graphrevsrSs6€Ü �T‹N€EØ ‡M�M„OØ ÐØ�f�u� ˆÜ �>‰>˜$ Ó &Ð&r>)NFNrr>r>FN)F)NF)rãNrA)NN)KrCrirIÚi18nrr}rrÚ thirdpartyrr4rr r r r rnr rrrrrrrrrrrÚutilsrrÚ TYPE_CHECKINGÚtypingrrrrrr rr)r<r–r˜r¯r±rr9rarpr rwÚsryr”r©r¾rÀrÄrÊrÌrÖrárér÷rùrr r(rCrIrKrPrSrBr>r(ÚrZs“ðóÛ Ûåß"å÷÷÷÷õ÷&ð  ×Ò÷÷ð�8˜T 8¨UÓ 3ˆÚˆˆqð4ò òðH Ø Ø ØØ Ø ØØó~÷B ñ ò.÷B!ñB!ôJI.Ð)ôI.ôX`KÐ)ô`KòF4ò<ó8Aó9ð6‡�÷*"ð*"óð*"òZ)òX]!ò@Gò0ó 7ò 7ó 7ð)Ø&Ø/Ø Ø&Ø)Ø(Ø,Ø "ñ €ò8òv ò0òf òò0=*ò@ó,,ò^Oò òó'r>