Ë HA�_W½e×ãó.—dZddlZddlmZddlmZddlmZddlm Z m Z m Z m Z m Z e jZe jZdZdxaxaaiZe j*e«Zedd d ¬ «edd d ¬ «eddd¬ «d„Zd„Zd„Zee«d„«Zd„Zy)aâhttp authentication with factotum This extension allows the factotum(4) facility on Plan 9 from Bell Labs platforms to provide authentication information for HTTP access. Configuration entries specified in the auth section as well as authentication information provided in the repository URL are fully supported. If no prefix is specified, a value of "*" will be assumed. By default, keys are specified as:: proto=pass service=hg prefix= user= !password= If the factotum extension is unable to read the required key, one will be requested interactively. A configuration section is available to customize runtime behavior. By default, these entries are:: [factotum] executable = /bin/auth/factotum mountpoint = /mnt/factotum service = hg The executable entry defines the full path to the factotum binary. The mountpoint entry defines the path to the factotum file service. Lastly, the service entry controls the service name used when reading keys. éN)Ú_)Úsetattr)Úprocutil)ÚerrorÚhttpconnectionÚ registrarÚurlÚutilé€ófactotumó executables/bin/auth/factotum)Údefaultó mountpoints /mnt/factotumóserviceshgcóò—|jj«stjt d««‚d|vrd|z}d|z}t j tjdt|fz««y)Nsfactotum not interactivesuser=s%s user?s %s !password?s %s -g '%s') ÚuiÚ interactiverÚAbortrÚosÚsystemrÚ tonativestrÚ _executable)ÚselfÚparamss ú2usr/lib/python3.12/site-packages/hgext/factotum.pyÚ auth_getkeyrXsd€Ø �7‰7× Ñ Ô Ü�k‰kœ!Ð7Ó8Ó9Ð9Ø�vÑØ˜vÑ%ˆØ  Ñ &€F܇I�IŒh×"Ñ" =´KÀÐ3HÑ#HÓIÕJócó>—d|z} tjdtztj«} tj|d|z«tj |t «j«}|ddk(r¸tj|d«tj |t «jdd«\}}}|dk(ro|jd«rE|jd«r|d d jd d«}ntjtd ««‚||ftj|«Stj|«|||«�ŒM#tt f$rtjtd ««‚wxYw#tj|«wxYw)Ns proto=pass %ss%s/rpcsstart %srsoksreadéó'ééÿÿÿÿs''smalformed password stringsfactotum not responding)rÚopenÚ _mountpointÚO_RDWRÚwriteÚreadÚERRMAXÚsplitÚ startswithÚendswithÚreplacerrrÚcloseÚOSErrorÚIOError)rÚgetkeyrÚfdÚlÚstatusÚuserÚpasswds rÚauth_getuserpasswdr6asJ€Ø  Ñ &€FØ Ü �W‰W�Y¤Ñ,¬b¯i©iÓ 8ˆð Ü �H‰H�R˜ vÑ-Ô .Ü—‘˜œFÓ#×)Ñ)Ó+ˆAØ�‰t�uŠ}Ü—‘˜˜WÔ%Ü')§w¡w¨r´6Ó':×'@Ñ'@ÀÀqÓ'IÑ$�˜˜fؘU’?Ø×(Ñ(¨Ô.Ø!Ÿ?™?¨4Ô0Ø%+¨A¨b \×%9Ñ%9¸%ÀÓ%F™Fä"'§+¡+¬aÐ0LÓ.MÓ"NÐNØ  &˜>ô �H‰H�R�LŒB�H‰H�RŒLÙˆt�VÔñ' øôœÐ!ò =Ü—+‘+œaÐ :Ó;Ó<Ð <ð =ûô �H‰H�R�Lús³C+EÅ.FÆFÆFcó‡—ˆfd„}|S)Ncó6•—t‰|j|«|S)N)rÚ__name__)ÚfuncÚclss €rÚ decoratorz%monkeypatch_method..decoratorzsø€Ü��T—]‘] DÔ)؈ r©)r;r<s` rÚmonkeypatch_methodr>ysø€ôð Ðrcó"—|jj||«\}}|r|r|j||«||fSd}tj|j ||«}|r8|\}}|j d«}|j d«|j d«}}|r|sL|s"|jd«dj«}dt|fz} |rd| |fz} t|t| «\}}|j||||«|j||«||fS) Nrsprefixsusernamespasswordó rsservice=%s prefix=%ss %s user=%s) ÚpasswddbÚfind_user_passwordÚ _writedebugrÚreadauthforurirÚgetr)ÚlowerÚ_servicer6rÚ add_password) rÚrealmÚauthurir4r5ÚprefixÚresrÚauthrs rrBrB�s€à—=‘=×3Ñ3°E¸7ÓC�L€Dˆ&Ù ‘Ø ×ј˜vÔ&Ø�fˆ~Ðà €FÜ × 'Ñ '¨¯©°¸$Ó ?€C٠؉ˆˆ4Ø—‘˜)Ó$ˆØ—x‘x  Ó,¨d¯h©h°{Ó.CˆfˆÙ ‘vÙØ—[‘[ Ó& qÑ)×/Ñ/Ó1ˆFØ(¬H°fÐ+=Ñ=ˆÙ Ø" f¨d ^Ñ3ˆFÜ)¨$´ ¸VÓD‰ ˆˆfà×Ñ�e˜W d¨FÔ3Ø×Ñ�T˜6Ô"Ø �&ˆ>Ðrcóp—|jdd«a|jdd«a|jdd«ay)Nr r rr)Úconfigrr$rG)rs rÚuisetuprP›s2€à—)‘)˜K¨Ó7€Kà—)‘)˜K¨Ó7€Kà�y‰y˜ jÓ1�Hr)Ú__doc__rÚmercurial.i18nrÚmercurial.pycompatrÚmercurial.utilsrÚ mercurialrrrr r ÚurlreqÚ passwordmgrr(rr$rGÚ configtableÚ configitemrr6r>rBrPr=rrÚrZsÆðñ&ó< ÝÝ&Ý$÷õð �‰€Ø�o‰o€ à €à'+Ð+€ Ð+ˆk˜Hà€ Ø !ˆY× !Ñ ! +Ó .€ á ØØØ !õñ  ØØØ õñ  ØØØ õòKòò0ñ�KÓ ñó!ðó22r