Ë GFeH˜èÝãó¢—dZddlmZddlmZmZddlmZmZddl m Z m Z m Z ejZ ejZGd„de j«Zy ) z4remote largefile store; the base class for wirestoreé)Ú_)ÚerrorÚutil)Ú stringutilÚurlutilé)Ú basestoreÚlfutilÚ localstorecóX‡—eZdZdZˆfd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z ˆxZS) Ú remotestorez)a largefile store accessed over a networkc󸕗tt|� |||«d|_|�;t j|j |j |j «|_yy©N)Úsuperr Ú__init__Ú_lstorer ÚuiÚrepo)ÚselfrrÚurlÚ __class__s €ú@usr/lib/python3.12/site-packages/hgext/largefiles/remotestore.pyrzremotestore.__init__"sJø€Ü Œk˜4Ñ)¨"¨d°CÔ8؈Œ Ø Ð Ü%×0Ñ0°·±¸$¿)¹)ÀTÇYÁYÓOˆD�Lð ócó4—|j||«r@tjtd«|t j |j «fz«‚|jjtd«|t j |j «fz«y)Ns0remotestore: could not put %s to remote store %ss'remotestore: put %s to remote store %s ) ÚsendfilerÚAbortrrÚ hidepasswordrrÚdebug)rÚsourceÚhashs rÚputzremotestore.put(s}€Ø �=‰=˜ Ô &Ü—+‘+ÜÐEÓFØœ7×/Ñ/°·±Ó9Ð:ñ;óð ð �‰� ‰ Ü Ð9Ó :Ø”w×+Ñ+¨D¯H©HÓ5Ð6ñ 7õ rcóz—|j|«j«D��cic] \}}||dk(“Œ c}}Scc}}w)Nr)Ú_statÚitems)rÚhashesÚhÚss rÚexistszremotestore.exists3sG€ðŸ*™* VÓ,×2Ñ2Ô4ô á4‘��Að ˆq�A‰v‰IØ4ò ð ùó s£7cób—|jjd||fz« tj|j|«5}|j ||«cddd«S#1swYyxYw#t $r;}t jtd«|tj|«fz«‚d}~wwxYw)Nsremotestore: sendfile(%s, %s) s'remotestore: could not open file %s: %s) rrr Ú httpsendfileÚ_putÚIOErrorrrrrÚ forcebytestr)rÚfilenamer ÚfdÚes rrzremotestore.sendfile:s“€Ø �‰� ‰ Ð8¸HÀdÐ;KÑKÔLð Ü×$Ñ$ T§W¡W¨hÔ7¸2Ø—y‘y  rÓ*÷8×7Ò7ûäò Ü—+‘+ÜÐ<Ó=ØœZ×4Ñ4°QÓ7Ð8ñ9óð ûð ús5¢ A*ÁAÁ A*ÁA'Á#A*Á'A*Á* B.Á36B)Â)B.c ó"— |j|«}tj ||«S#tj$r:}tj|||j t j|««‚d}~wtj$rF}tjdtj|j «|jfz«‚d}~wt$r:}tj|||j t j|««‚d}~wwxYw)Ns%s: %s)Ú_getÚurlerrÚ httperrorr Ú StoreErrorrrr-ÚurlerrorrrrrÚreasonr,r Ú copyandhash)rÚtmpfiler.r Úchunksr0s rÚ_getfilezremotestore._getfileEsæ€ð Ø—Y‘Y˜t“_ˆFô&×!Ñ! &¨'Ó2Ð2øô%×Ñò ô×&Ñ&ؘ$ §¡¬*×*AÑ*AÀ!Ó*Dóð ûô�‰ò ô—+‘+ØœW×1Ñ1°$·(±(Ó;¸Q¿X¹XÐFÑFóð ûôò Ü×&Ñ&ؘ$ §¡¬*×*AÑ*AÀ!Ó*Dóð ûð ús-‚)©D¼5A1Á1DÂACà DÃ5D Ä Dcóp—|jj|«}|D�cgc] }||sŒ |‘Œ }}|Scc}wr)rr()rr%Úexistslocallymapr Ú localhashess rÚ_hashesavailablelocallyz#remotestore._hashesavailablelocally\s?€ØŸ<™<×.Ñ.¨vÓ6ÐÙ(.ÓI© Ð2BÀ4Ó2H’t¨ˆ ÐIØÐùòJs  3«3có—d}|D���cgc]\}}}|‘Œ }}}}|j|«}|j|D�cgc]}||vr|‘Œ c}«} |D]©\}}}||vr(|||f} |jj|| g«} | sŒ0d}Œ3| |} | sŒ;| dk(r,|jj t d«||fz«d}Œl| dk(r,|jj t d«||fz«d}Œ�td| z«‚|Scc}}}wcc}w)NFTrs"changeset %s: %s: contents differ éschangeset %s: %s missing s6verify failed: unexpected response from statlfile (%r))r?r#rÚ _verifyfilesrÚwarnrÚ RuntimeError) rÚcontentsÚ filestocheckÚfailedÚcsetr.Ú expectedhashÚexpectedhashesr>ÚstatsÚ filetocheckÚ verifyresultÚstats rrBzremotestore._verifyfilesasY€Øˆá=Iõ Ù=IÑ9˜T 8¨\ŠL¸\ð ò ð×2Ñ2°>ÓBˆ Ø— ‘ ñ%3ó á$2�LØ {Ñ2òØ$2ñ ó ˆó-9Ñ (ˆD�(˜Lؘ{Ñ*Ø# X¨|Ð<� Ø#Ÿ|™|×8Ñ8ؘ{˜mó � ò Ø!‘Fà˜\Ñ*�ÚØ˜q’yØŸ™Ÿ ™ ÜÐDÓEØ# XÐ.ñ/ôð"&™Ø šØŸ™Ÿ ™ ÜÐ;Ó<ÀÀhÐ?OÑOôð"&™ä*ð3Ø59ñ:óðð/-9ð6ˆ ùôO ùò  s ‰ C>º Dcó—td«‚)z1Put file with the given hash in the remote store.óabstract method©ÚNotImplementedError)rr r/s rr+zremotestore._putŒó€ä!Ð"4Ó5Ð5rcó—td«‚)z/Get a iterator for content with the given hash.rPrQ)rr s rr2zremotestore._get�rSrcó—td«‚)z×Get information about availability of files specified by hashes in the remote store. Return dictionary mapping hashes to return code where 0 means that file is available, other values if not.rPrQ)rr%s rr#zremotestore._stat”s€ô "Ð"4Ó5Ð5r)Ú__name__Ú __module__Ú __qualname__Ú__doc__rr!r(rr;r?rBr+r2r#Ú __classcell__)rs@rr r s:ø„Ù3ôPò  ò ò ò3ò.ò )òV6ò6ö6rr N)rYÚmercurial.i18nrÚ mercurialrrÚmercurial.utilsrrÚr r r r3Úurlreqr ©rrÚrasIðñ;å÷÷ ÷ ñð �‰€Ø �‰€ôz6�)×%Ñ%õz6r