Ë žO~I€?lãóÀ—ddlZddlZddlZddlmZddlmZmZddlm Z m Z m Z m Z mZm Z ddlmZe j d«Ze j d«Zej&Zej(Zej*Zej,Zej"Zej0ZGd „d «Ze«Zdd „Zd „Zd „Zd„Zdd„Zdd„Z efd„Z!efd„Z"d„Z#d„Z$d„Z%d„Z&d„Z'd„Z(y)éNé)Ú_)ÚgetattrÚsetattr)Ú diffhelperÚencodingÚerrorÚpolicyÚpycompatÚutil)ÚdateutilÚbdiffÚmpatchcó®—eZdZdZdZidd“dd“dd“dd“d d“d d“d d“d d “dd“dd“dd“dd“dd“dd“dd“dd“Zd„Zd„Zd„Ze je«Z y)Údiffoptsacontext is the number of context lines text treats all files as text showfunc enables diff -p output git enables the git extended patch format nodates removes dates from diff headers nobinary ignores binary files noprefix disables the 'a/' and 'b/' prefixes (ignored in plain mode) ignorews ignores all whitespace changes in the diff ignorewsamount ignores changes in the amount of whitespace ignoreblanklines ignores changes whose lines are all blank upgrade generates git diffs to avoid data loss TscontextéstextFsshowfuncsgitsnodatessnobinarysnoprefixsindexrsignorewssignorewsamounts ignorewseolsignoreblanklinessupgradesshowsimilaritysworddiffsxdiffc ó–—tj|«}|jj«D]1}|j |«}|€|j|}t |||«Œ3 t |j«|_y#t$r?tjtd«tj|j«z«‚wxYw)Ns3diff context lines count must be an integer, not %r) r Ú byteskwargsÚdefaultsÚkeysÚgetrÚintÚcontextÚ ValueErrorr Ú InputErrorrÚbytestr)ÚselfÚoptsÚkÚvs ú3usr/lib/python3.12/site-packages/mercurial/mdiff.pyÚ__init__zdiffopts.__init__Ks¬€Ü×#Ñ# DÓ)ˆØ—‘×#Ñ#Ö%ˆAØ—‘˜“ ˆA؈yØ—M‘M !Ñ$�Ü �D˜!˜QÕ ð &ð  ܘtŸ|™|Ó,ˆD�LøÜò Ü×"Ñ"ÜÐHÓIÜ×"Ñ" 4§<¡<Ó0ñ1óð ð ús Á%BÂACc ó¶—|jD�cic]}|t||«“Œ}}tj|«}|j |«t di|¤ŽScc}w)N©)rrr Ú strkwargsÚupdater)rÚkwargsrrs r!Úcopyz diffopts.copy[sU€Ø-1¯]ª]Ó;©]¨�”7˜4 Ó#Ñ#¨]ˆÐ;Ü×!Ñ! $Ó'ˆØ � ‰ �FÔÜј$ÑÐùòz%diffopts.__bytes__..bs&øèø€ð Ù7D°!ˆI˜œG D¨!Ó,Ð-Õ -±}ùsƒ)Újoinr)rs`r!Ú __bytes__zdiffopts.__bytes__as%ø€Ø�z‰zó Ø7;·}²}ó ó ð óN) Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú_HAS_DYNAMIC_ATTRIBUTESrr"r(r.rÚ strmethodÚ__str__r$r/r!rr(sõ„ñ ð#ÐðØ�Aðà�ðð �Uðð �ð ð �Eð ð �Uð ð �Uðð �!ðð �Uðð ˜5ðð ˜ðð ˜Uðð �Eðð ˜5ðð �Uðð �%ð!€Hò&ò  ò  ð !ˆh× Ñ  Ó+�Gr/rcó>—|jrtj|d«}n"|jrtj|d«}|r2|jr&t j dd|«jd«}|jrt j dd|«}|S)Nrrs +ó s [ \t\r\f]+\ns\n) ÚignorewsrÚfixwsÚignorewsamountÚignoreblanklinesÚreÚsubÚstripÚ ignorewseol)rÚtextÚblanks r!ÚwscleanrCls{€Ø ‡}‚}Ü�{‰{˜4 Ó#‰Ø × Ò Ü�{‰{˜4 Ó#ˆÙ �×&Ò&Ü�v‰v�f˜e TÓ*×0Ñ0°Ó7ˆØ ×ÒÜ�v‰vÐ&¨°Ó5ˆØ €Kr/c#ójK—|D�cgc]}t||«xrdxsd‘Œ}}|D�cgc]}t||«xrdxsd‘Œ}}dt|«}}dt|«} }||ks|| kr¿||d} } } | |k\s|| dk(s | | k\s|| dk(rCd} | |kr|| dk(r| dz } | |kr || dk(rŒ| | krQ|| dk(rI| dz } | | kr?|| dk(rŒn5| |kr0|| dk(r(|| dk(r | dz } | dz } | |kr|| dk(r || dk(rŒ ||z|| z||z|| zg| f–—| }| }||krŒ¸|| krŒ¾yycc}wcc}w­w)Nrró=ó~)rCÚlen) Úbase1Úlines1Úbase2Úlines2rÚlÚs1Úe1Ús2Úe2Úi1Úi2Úbtypes r!Ú splitblockrTxsŸèø€ñ6<Ó <±V°Œw�t˜QÓÒ% AÒ*¨Ñ*°V€FÐ <Ù5;Ó <±V°Œw�t˜QÓÒ% AÒ*¨Ñ*°V€FÐ <Ø ”�F“ ˆ€BØ ”�F“ ˆ€BØ ˆrŠ'�R˜"’WؘB �ˆBˆØ �Š8�v˜b‘z Q’¨"°ª(°f¸R±jÀA²oàˆEØ�r’'˜f R™j¨AšoØ�a‘�ð�r’'˜f R™j¨A›oà�r’'˜f R™j¨AšoØ�a‘�ð�r’'˜f R™j¨Aœoð�r’'˜f R™j¨Ašo°&¸±*À²/Ø�a‘�Ø�a‘�ð�r’'˜f R™j¨Ašo°&¸±*À³/ð�r‰z˜5 2™: u¨r¡z°5¸2±:Ð>ÀÐEÒEØ ˆØ ˆð! ˆr‹'�R˜"•Wùò =ùÚ <ùs9‚D3‡D)¢D3¨D.ÁA'D3Â+D3à 5D3ÄD3Ä!D3Ä' D3có4—|\}}|\}}|||zkxr||kS)aíReturn True if `hunk` defined as (start, length) is in `linerange` defined as (lowerbound, upperbound). >>> hunkinrange((5, 10), (2, 7)) True >>> hunkinrange((5, 10), (6, 12)) True >>> hunkinrange((5, 10), (13, 17)) True >>> hunkinrange((5, 10), (3, 17)) True >>> hunkinrange((5, 10), (1, 3)) False >>> hunkinrange((5, 10), (18, 20)) False >>> hunkinrange((5, 10), (1, 5)) False >>> hunkinrange((5, 10), (15, 27)) False r$)ÚhunkÚ linerangeÚstartÚlengthÚ lowerboundÚ upperbounds r!Ú hunkinranger\’s0€ð*�M€Eˆ6Ø&Ñ€J� Ø ˜ ™Ñ &Ò =¨5°:Ñ+=Ð=r/có”—|\}}d\}}g}|D]‹}|\\}} } } } || k\r|| kr| dk(r|| z |z}|| z |z}n<| |cxkr| krnn| dk(r | | |z z }n|}| |cxkr| krnn| dk(r ||| z z}n| }t| | | z f|«sŒ{|j|«Œ�|�|�||krtjt d««‚|||ffS)açfilter `blocks` like (a1, a2, b1, b2) from items outside line range `rangeb` from ``(b1, b2)`` point of view. Return `filteredblocks, rangea` where: * `filteredblocks` is list of ``block = (a1, a2, b1, b2), stype`` items of `blocks` that are inside `rangeb` from ``(b1, b2)`` point of view; a block ``(b1, b2)`` being inside `rangeb` if ``rangeb[0] < b2 and b1 < rangeb[1]``; * `rangea` is the line range w.r.t. to ``(a1, a2)`` parts of `blocks`. )NNrEsline range exceeds file size)r\Úappendr rr) ÚblocksÚrangebÚlbbÚubbÚlbaÚubaÚfilteredblocksÚblockÚa1Úa2Úb1Úb2Ústypes r!Ú blocksinrangerl¬s€ð�H€CˆØ�H€CˆØ€NÛˆØ"'ÑшˆR��R˜%Ø �"Š9˜ š u°¢}ð˜‘(˜R‘-ˆCؘ‘(˜R‘-‰Cà�SŒ~˜2�~ؘD’=Ø  S¡™/‘Cà�CØ�CŒ~˜2�~ؘD’=Ø  b¡™/‘Cà�CÜ ˜˜R "™W�¨Õ /Ø × !Ñ ! %Õ (ð'ð( €{�c�k S¨3¢YÜ×ÑœqÐ!@ÓAÓBÐBØ ˜C ˜:Ð %Ð%r/có’—|�&|jrtjtd«stjStj S)NÚ xdiffblocks)Úxdiffr Ú safehasattrrr_rn©rs r!ÚchooseblocksfuncrrÔs4€à ˆ Ø�zŠzÜ×Ѥ }Ô5ä�|‰|Ðä× Ñ Ð r/c #ó\K—|€t}|js|js |jrt ||d«}t ||d«}t |«||«}t |«D]Â\}}|dkDr ||dz }ngd¢}|d|d|d|dg}|d|dk7s |d|dk7r}d} |jri|€ t|«}|€ t|«}t |d j||d|d««} t |d j||d|d««} | | k(rd } || f–—|d f–—ŒÄy­w) abReturn (block, type) tuples, where block is an mdiff.blocks line entry. type is '=' for blocks matching exactly one another (bdiff blocks), '!' for non-matching blocks and '~' for blocks matching only after having filtered blank lines. line1 and line2 are text1 and text2 split with splitnewlines() if they are already available. NFrr)rrrrréó!r/rFrE) Ú defaultoptsr9r;r@rCrrÚ enumerater<Ú splitnewlinesr-) Útext1Útext2rrIrKÚdiffÚirMÚsÚtypeÚoldÚnews r!Ú allblocksr�ßsUèø€ð €|ÜˆØ ‡}‚}˜×+Ò+¨t×/?Ò/?ܘ˜e UÓ+ˆÜ˜˜e UÓ+ˆØ !Ô ˜DÓ ! %¨Ó /€Dܘ4–‰ˆˆ2ð ˆqŠ5Ø�Q˜‘U‘ ‰AâˆAØ ˆq‰T�2�a‘5˜!˜A™$  1¡Ð &ˆð ˆQ‰4�1�Q‘4Š<˜1˜Q™4 1 Q¡4š<؈DØ×$Ò$Ø�>Ü*¨5Ó1�FØ�>Ü*¨5Ó1�Fܘd C§H¡H¨V°A°a±D¸1¸Q¹4Ð-@Ó$AÓB�ܘd C§H¡H¨V°A°a±D¸1¸Q¹4Ð-@Ó$AÓB�ؘ#’:Ø�DØ�T�'ŠMØ�$ˆh‹ñ3!ùs‚D*D,c󈇗dˆfd„ }gdf} |s|s| S‰jrdx} } nd} d} tjd«} tj|«}tj|«}|r1|r |rt |«t |«k(r||k(r| Sg} dd|zgff}| |fS|s±|j d « }t|«}|€ d || «z}nd | ||||«fz}d | |z|||«fz}||g} t |«}d d d|f}d|zg|D�cgc]}d|z‘Œ c}z}|r,|dxxd z cc<|jtj«||ff}| |fS|s¯|j d « }t|«}d | ||||«fz}|€ d|| «z}nd| ||||«fz}||g} t |«}d|d d f}d|zg|D�cgc]}d|z‘Œ c}z}|r,|dxxd z cc<|jtj«||ff}| |fSt||‰¬«}t|«s| Sd | ||||«fzd| ||||«fzg} | |fScc}wcc}w)a|Return a unified diff as a (headers, hunks) tuple. If the diff is not null, `headers` is a list with unified diff header lines "--- " and "+++ " and `hunks` is a generator yielding (hunkrange, hunklines) coming from _unidiff(). Otherwise, `headers` and `hunks` are empty. Set binary=True if either a or b should be taken as a binary file. NcóN•—‰js‰jsd|zS|rd|vryy)Ns %só ó r/)ÚgitÚnodates)ÚdateÚfnrs €r!Údatetagzunidiff..datetags)ø€Ø�xŠx § ¢ ؘT‘>Ð !Ù �$˜"‘*ØØr/r$r/sa/sb/)rrsBinary file %s has changed r8s--- /dev/null%ss --- %s%s%ss+++ %s%srrs@@ -0,0 +1,%d @@ ó+éÿÿÿÿs+++ /dev/null%ss +++ %s%s%ss@@ -1,%d +0,0 @@ ó-rq©N) Únoprefixr Údatestrr ÚpconvertrGÚendswithrxr^rÚMISSING_NEWLINE_MARKERÚ_unidiffÚnext)ÚaÚadÚbÚbdÚfn1Úfn2ÚbinaryrrŠÚsentinelÚaprefixÚbprefixÚepochÚ headerlinesÚhunksÚwithout_newlineÚl1Úl2ÚsizeÚ hunkrangeÚeÚ hunkliness ` r!Úunidiffrª sèø€õð�2ˆv€HÙ ‘QØˆà ‡}‚}ØÐˆ‘'àˆØˆä × Ñ ˜VÓ $€Eä �-‰-˜Ó €CÜ �-‰-˜Ó €Cá Ù ‘”s˜1“v¤ Q£Ò'¨A°ªF؈O؈ ØÐ8¸3Ñ>Ð?Ð@ÐBˆðV ˜Ð ÐñUØŸj™j¨Ó/Ð/ˆÜ ˜!Ó ˆØ ˆ9Ø#¡g¨e£nÑ4‰Bà '¨3±¸¸CÓ0@Ð!AÑAˆBØ ˜G c™M©7°2°sÓ+;Ð<Ñ <ˆØ˜2�hˆ Ü�1‹vˆØ˜˜1˜d�Oˆ Ø*¨TÑ1Ð2ÉÓ5JÉÀ1°d¸Q³hÈÑ5JÑJˆ Ù Ø �b‹M˜UÑ "‹MØ × Ñ œZ×>Ñ>Ô ?ؘYÐ'Ð)ˆð6 ˜Ð Ðñ5ØŸj™j¨Ó/Ð/ˆÜ ˜!Ó ˆØ ˜g s©G°B¸Ó,<Ð=Ñ =ˆØ ˆ9Ø#¡g¨e£nÑ4‰Bà '¨3±¸¸CÓ0@Ð!AÑAˆBؘ2�hˆ Ü�1‹vˆØ˜˜a �Oˆ Ø*¨TÑ1Ð2ÉÓ5JÉÀ1°d¸Q³hÈÑ5JÑJˆ Ù Ø �b‹M˜UÑ "‹MØ × Ñ œZ×>Ñ>Ô ?ؘYÐ'Ð)ˆð ˜Ð Ðô˜˜A DÔ)ˆÜ�EŒ{؈Oð ˜W c©7°2°sÓ+;Ð<Ñ <Ø ˜W c©7°2°sÓ+;Ð<Ñ <ð ˆ ð ˜Ð Ðùò?6Kùò 6Ks Ä H:Æ5 H?c#󇇇‡‡‡‡K—t‰«Št‰«Šˆfd„Šˆfd„}ddgŠˆˆˆˆˆˆˆfd„}d}d}d}t‰‰‰‰‰«D�]\}} |\} } } } | dk7r| d k(r|| | z | | z z z }Œ'g}‰| | }‰| | }| |z} | |z} || «}|| «}d}|r>||d ‰jzd zkr |}|d }|d }n|sd }d –—||«D]}|–—Œ|r| |d <| |d <|d }n|| || |g}‰|| D�cgc]}d|z‘Œ c}|t|«d|D�cgc]}d|z‘Œ c}|t|«d|D�cgc]}d|z‘Œ c}|t|«d�Œ |r|sd }d –—||«D]}|–—Œy|sd–—yycc}wcc}wcc}w­w)a«Yield hunks of a headerless unified diff from t1 and t2 texts. Each hunk consists of a (hunkrange, hunklines) tuple where `hunkrange` is a tuple (s1, l1, s2, l2) representing the range information of the hunk to form the '@@ -s1,l1 +s2,l2 @@' header and `hunklines` is a list of lines of the hunk combining said header followed by line additions and deletions. The hunks are prefixed with a bool. có4•—|‰jz}||kDr|}|SrŽ©r)rLrGÚretrs €r!Ú contextendz_unidiff..contextendjs"ø€Ø�$—,‘,ÑˆØ �Š9؈C؈ r/có2•—|‰jz }|dkry|S©Nrr­)rLr®rs €r!Ú contextstartz_unidiff..contextstartps ø€Ø�$—,‘,ÑˆØ �Š7ØØˆ r/rr/c3óN•K—|\}}}}}‰|t‰««}||z }||z |z|z }d} ‰jro‰\} } t|dz | dz d«D]O} ‰| ddj«sŒd‰| j «z} t j | «r| dd} | ‰d<n|‰d<|r|dz }|r|dz }||||f} d| | fzzg|zt||«D� cgc] } d‰| z‘Œ c} z}d}‰jd «sŽ||zt‰«dzk(rztt|«dz dd«D]^} || jd «sŒ|| jd«rd }|| xxd z cc<|j| dztj«n|s‰‰jd «sx||zt‰«dzk(rdtt|«dz dd«D]H} || jd «sŒ|| xxd z cc<|j| dztj«n| |f–—ycc} w­w) Nr/rrŒrr„é)s@@ -%d,%d +%d,%d @@%s Fr8)r�r„Tr‹) rGÚshowfuncÚrangeÚisalnumÚrstriprÚ isasciistrr’Ú startswithÚinsertrr“)rVÚastartrhÚbstartrjÚdeltaÚaendÚalenÚblenÚfuncÚlastposr|r§Úxr©Úskipr¯r¤r¥ÚlastfuncrÚt1Út2s €€€€€€€r!Ú yieldhunkz_unidiff..yieldhunkxsaøèø€Ø*.Ñ'ˆ��V˜R Ù˜"œc "›gÓ&ˆØ�f‰}ˆØ�F‰{˜TÑ! BÑ&ˆàˆØ �=Š=Ø$‰MˆG�Tô˜6 A™: w°¡{°BÖ7�Ø�a‘5˜˜1�:×%Ñ%Õ'Ø " Q¡%§,¡,£.Ñ0�Dô ×*Ñ*¨4Ô0Ø# C R˜y˜Ø"&�H˜Q‘KÙð8ð!ˆH�Q‰Kñ Ø �a‰KˆFÙ Ø �a‰KˆFà˜D &¨$Ð.ˆ à '¨9¸°wÑ+>Ñ ?Ð @Øñ ä%*¨2¨t¤_Ó5¡_ ˆt�b˜‘e‹| _Ñ5ñ 6ð ðˆØ�{‰{˜5Ô! f¨t¡m´s¸2³wÀ±{Ò&BÜœ3˜y›>¨AÑ-¨r°2Ö6�ؘQ‘<×*Ñ*¨<Õ8Ø  ‘|×.Ñ.¨tÔ4Ø#˜Ø˜a“L EÑ)“LØ×$Ñ$ Q¨¡U¬J×,MÑ,MÔNÙð 7ñ˜BŸK™K¨Ô.°6¸D±=ÄCÈÃGÈaÁKÒ3OÜœ3˜y›>¨AÑ-¨r°2Ö6�ؘQ‘<×*Ñ*¨4Õ0ؘa“L EÑ)“LØ×$Ñ$ Q¨¡U¬J×,MÑ,MÔNÙð 7ð ˜Ð"Ó"ùò-6ùs'ƒA*H%Á.A+H%ÃH Ã(AH%ÅB H%Ç&?H%NFrurFrrTér„r�r‹)rxr�rrG)rÇrÈrr²rÉrVÚ ignoredlinesÚ has_hunksr}rkrgrhrirjr¾rr€r¼r½ÚprevrÄr¯r¤r¥rÆs``` @@@@r!r”r”\sþèø€ô �rÓ €BÜ �rÓ €Bôô ð �3ˆx€H÷:#ò:#ð@ €DØ€LØ€Iܘb " d¨B°×3‰ˆˆ5؉ˆˆB��BØ �DŠ=ؘŠ}ð   b¡¨R°"©WÑ 5Ñ5� Ø ØˆØ��BˆiˆØ��Bˆiˆà ˆlÑˆØ ˆlш٘bÓ!ˆÙ˜bÓ!ˆØˆÙ à˜˜Q™ $§,¡,Ñ.°Ñ2Ò2Ø�ؘa™�ؘa™‘á Ø $�IØ’JÙ" 4ž�AØ“Gð)á àˆD�‰G؈D�‰Gؘ‘G‰Eð˜B ¨¨EÐ2ˆDà13°F¸2±Ó?±¨A˜t a›x°Ñ?ˆŒc�%‹jˆlÐÙ14Ó5±¨A˜t a›x°Ñ5ˆŒc�%‹jˆlÐÙ14Ó5±¨A˜t a›x°Ñ5ˆŒc�%‹jˆlÒðU4ñX ÙØˆIØŠJÙ˜4–ˆAØ‹Gñ!á Ø‹ ðùò@ùÚ5ùÚ5ùs+‰C4F Ã= E=Ä F Ä FÄ(F Ä; FÅAF có>—d„}dd„}|€d}|€d}||k(ryg}|jd«|jdt|«z«|tj|««D]}|j||««Œ|jd«dj |«S)z print base85-encoded binary diffcóð—t|«}|dkr%tjtd«|zdz «}n'tj|dz td«zdz «}d|t j |d«fzS)NéóAróas%c%s T)rGr ÚbytechrÚordr Ú b85encode)ÚlinerLs r!Úfmtlinezb85diff..fmtlineôsl€Ü �‹IˆØ �Š7Ü× Ñ ¤ T£¨Q¡°Ñ!2Ó3‰Aä× Ñ   R¡¬#¨d«)Ñ!3°aÑ!7Ó8ˆAؘAœtŸ~™~¨d°DÓ9Ð:Ñ:Ð:r/c3ó\K—t|«}d}||kr||||z–—||z }||krŒyy­wr±)rG)rAÚcsizerLr|s r!Úchunkzb85diff..chunküs>èø€Ü �‹IˆØ ˆØ�!ŠeØ�q˜1˜u™9Ð%Ò %Ø �‰JˆAð�!�eùs‚',ª,r/sGIT binary patch s literal %d r8)é4)r^rGÚzlibÚcompressr-)ÚtoÚtnr×rÚr®rLs r!Úb85diffràñs—€ò;óð €zØ ˆØ €zØ ˆà ˆR‚xØð €C؇J�JÐ$Ô%؇J�Jˆ¤ R£Ñ(Ô)Ù ”4—=‘= Ó$Ö %ˆØ � ‰ ‘7˜1“:Õð&à‡J�JˆuÔà �8‰8�C‹=Ðr/cóè—d}g}|t|«krPtjd|||dz«\}}}|dz }|j||||z«||z }|t|«krŒPdj |«S)Nró>lllé r/)rGÚstructÚunpackr^r-)ÚbinÚposÚtÚp1Úp2rLs r!Ú patchtextrës~€Ø €CØ €AØ ”�C“Š.Ü—M‘M '¨3¨s°S¸2±XÐ+>Ó?‰ ˆˆB�Ø ˆr‰ ˆØ �‰��S˜3 ™7Ð#Ô$Ø ˆq‰ˆð ”�C“‹.ð �8‰8�A‹;Ðr/cóx—t|«dk(rtj|d«Stj ||g«S)Nrrã)rGr ÚbufferrÚpatches)r–ræs r!Úpatchrï!s1€Ü ˆ1ƒv�‚{ä�{‰{˜3 Ó#Ð#Ü �>‰>˜!˜c˜UÓ #Ð#r/cóx—tj||«D�cgc]}|d|d|d|dz f‘Œc}Scc}w)Nrrtr)rr_)r–r˜Úds r!Úget_matching_blocksrò)sB€Ü/4¯|©|¸A¸qÔ/AÓ BÑ/A¨!ˆQˆq‰T�1�Q‘4˜˜1™  !¡™Ò %Ð/AÑ BÐBùÒ Bs™7có:—|rtjddd|«SdS)Nrârr/©räÚpack)rYs r!Útrivialdiffheaderrö-s€Ù17Œ6�;‰;�w  1 fÓ -Ð@¸SÐ@r/có2—tjdd||«S)Nrârrô)ÚoldlenÚnewlens r!Úreplacediffheaderrú1s€Ü �;‰;�w  6¨6Ó 2Ð2r/)TrŽ)NNN))r=rärÜÚi18nrr rrÚrrr r r Úutilsr Ú importmodrrr_r:rîÚ patchedsizeÚtextdiffrxrrvrCrTr\rlrrr�rªr”ràrërïròrörúr$r/r!Úrsòðó Û Û å÷÷÷õàˆ×јÓ!€Ø ˆ× Ñ ˜(Ó #€à �‰€Ø � ‰ €Ø �.‰.€Ø× Ñ € Ø �;‰;€Ø×#Ñ#€ ÷>,ñ>,ñB‹j€ ó òò4>ò4%&óP!ó'ðT2=óPðf&óRòj"òJò$òCòAó3r/