o ö]LbE ã@sbddlmZddlZddlmZejZGdd„deƒZdd„Z d d „Z d d „Z d d„Z dd„Z dS)é)Úabsolute_importNé)Úpycompatc@seZdZdZdS)Ú mpatchErrorz+error raised when a delta cannot be decodedN)Ú__name__Ú __module__Ú __qualname__Ú__doc__©r r ú7/usr/lib/python3/dist-packages/mercurial/pure/mpatch.pyrsrcCsn|r5| ¡}|d|kr&| |d||d|f¡| ||df¡dS| |¡||d8}|sdSdS)Nré)ÚpopÚappend)ÚdstÚsrcÚlÚfr r r Ú_pull s    ùrcCs,| |¡| |¡}| |¡| |¡dS)zXmove count bytes from src to dest The file pointer is left at the end of dest. N)ÚseekÚreadÚwrite)ÚmÚdestrÚcountÚbufr r r Ú_move+s   rcCs8|}t|ƒD]\}}t||||ƒ||7}q|||fS)N)Úreversedr)rrÚlistÚstartrÚpr r r Ú_collect6s   r c Cs’|s|Sdd„|Dƒ}t|ƒ}t|ƒ|}|||}d|}}|s$|Stƒ}| |¡t|ƒ|fg} ||} | | ¡|D]} | | ¡q>|D]l} t| ƒdkr\||}}t||| ƒg} g} | | }d}| |kr­| | ¡zt d| d¡¡\}}}Wn tj y‡t dƒ‚wt | | ||ƒt g| ||ƒ|   || df¡| |d7} |}| |ksh|   t| ƒ¡qHt||| ƒ}| |d¡| |d¡S) NcSsg|]}t|ƒ‘qSr )Úlen)Ú.0Úxr r r Ú Bszpatches..ré€ó>lllé ópatch cannot be decodedr )Úsumr!Ústringiorrr ÚstructÚunpackrÚerrorrrrÚextendr)ÚaÚbinsÚplensÚplÚblÚtlÚb1Úb2rÚfragsÚposrÚplenÚnewÚendÚlastÚp1Úp2rÚtr r r Úpatches>sP         ÿ ö r@c Csšd\}}}t|ƒ}d}||kr=|||d…}t d|¡\}} } || kr%n|| }|d}|||7}| }|| 7}||ks||krEtdƒ‚|||7}|S)N)rrrr'r&r()r!r+r,r) ÚorigÚdeltaÚoutlenr<ÚbinÚbinendÚdataÚdecoderr;Úlengthr r r Ú patchedsizess$  ÷  rI)Ú __future__rr+ÚrÚbytesior*Ú Exceptionrrrr r@rIr r r r Ús     5