ó
    6°h‡  ã                  óò  • S r SSKJr  SSKrSSKrSSKrSSKJr  SSKJ	r	J
r
JrJrJrJr  SSKJr  SSKJr  S	rSqSqS
 rS rS r " S S5      rS rS rS rS rS rS r \RB                  " \	S\ 5        \RB                  " \R                  S\5        \RB                  " \R                  S\5        \RB                  " \R                  S\5        \RB                  " \S\5        \RB                  " \S\5        g)aà  discover and advertise repositories on the local network

The zeroconf extension will advertise :hg:`serve` instances over
DNS-SD so that they can be discovered using the :hg:`paths` command
without knowing the server's IP address.

To allow other people to discover your repository using run
:hg:`serve` in your repository::

  $ cd test
  $ hg serve

You can discover Zeroconf-enabled repositories by running
:hg:`paths`::

  $ hg paths
  zc-test = http://example.com:8000/test
é    )ÚannotationsNé   )ÚZeroconf)ÚdispatchÚencodingÚ
extensionsÚhgÚpycompatÚui)Úrcutil)Úservers   ships-with-hg-corec                 ó¦  •  [         R                   " [         R                  [         R                  5      n U R                  S5        U R	                  5       S   nU$ ! [
         a     Of = f [         R                  " [         R                  " 5       5      S   S   nSU;   a  SnUR                  S5      (       d  U$ O,! [         R                  [         R                  4 a    Sn Of = f [         R                   " [         R                  [         R                  5      n U R                  S5        U R	                  5       S   nU$ ! [
         a     U$ f = f)N)ú1.0.0.1r   r   é   Ú:z	127.0.0.1ú127.)r   r   )ÚsocketÚAF_INETÚ
SOCK_DGRAMÚconnectÚgetsocknameÚOSErrorÚgethostbyaddrÚgethostnameÚ
startswithÚgaierrorÚherror)ÚsÚipÚdumbips      Ú9/usr/lib/python3/dist-packages/hgext/zeroconf/__init__.pyÚgetipr"   8   s  € ðÜ�MŠMœ&Ÿ.™.¬&×*;Ñ*;Ó<ˆØ	�	‰	�.Ô!Ø�]‰]‹_˜QÑˆØˆ	øÜó ÙðúðÜ×%Ò%¤f×&8Ò&8Ó&:Ó;¸AÑ>¸qÑAˆØ�&‹=Ø ˆFØ× Ñ  ×(Ñ(ØˆMð )øä�O‰OœVŸ]™]Ð+ó ØŠðúðÜ�MŠMœ&Ÿ.™.¬&×*;Ñ*;Ó<ˆØ	�	‰	�.Ô!Ø�]‰]‹_˜QÑˆØˆ	øÜó Øà€Mðús8   ‚AA Á
A(Á'A(Á,AB< Â<&C%Ã$C%Ã)AE Å
EÅEc                ób  • [         (       dM  [        5       nUR                  S5      (       a  g [        R                  " U5      q[        R                  " U5      q [        R                  " 5       R                  S5      S   nUS-   nU< SU < 3n [        R                  " S[        R                  " U S-   5      UUUSU-   S	.[
        SSS
9n[         R                  U5        [        R                  " S[        R                  " U S-   5      UUUSU-   S	.[
        SSS
9n[         R                  U5        g )Nr   Ú.r   z.localÚ-s   _http._tcp.local.z._http._tcp.local.ó   /)ó   descriptions   path)r   ÚportÚ
propertiesÚaddressÚweightÚpriorityó   _hg._tcp.local.z._hg._tcp.local.)r   r"   r   r   Ú	inet_atonÚlocalipr   r   ÚsplitÚServiceInfor
   ÚbytestrÚregisterService)ÚnameÚdescÚpathr(   r   ÚhostnameÚhostÚsvcs           r!   Úpublishr:   X   s  € çŠ6Ü‹WˆØ�=‰=˜× Ñ àÜ×"Ò" 2Ó&ˆÜ×"Ò" 2Ó&ˆä×!Ò!Ó#×)Ñ)¨#Ó.¨qÑ1€HØ�hÑ€DÛ¢Ð%€Dô ×
Ò
ØÜ×Ò˜Ð 4Ñ4Ó5ØØØ$(°4¸$±;Ñ?ÜØØñ	€Cô ×Ñ˜3Ôô ×
Ò
ØÜ×Ò˜Ð 2Ñ2Ó3ØØØ$(°4¸$±;Ñ?ÜØØñ	€Cô ×Ñ˜3Õó    c                óä  • U " X5      nUR                   n UR                  nUR                  R                  SSS5      R	                  S5      S-   nU HÂ  u  pxUR                  R                  5       n	[        R                  " 5       (       a0  U	R                  [        R                  R                  USS5      5        [        R                  R                  U5      n
Xg-   R	                  S5      nU	R                  SS5      nU(       d  U
n[        X«X„5        MÄ     U$ ! [         aÊ    UR                  5        nUR                   =(       d)    [        R                  R                  UR"                  5      n
UR                  R                  SSS5      R	                  S5      nUR                  R                  SS5      nU(       d  U
nS S S 5        O! , (       d  f       O= f[        W
WWU5         U$ f = f)Ns   webs   prefixr;   r&   s   .hgs   hgrcr'   )r(   Úreposr   ÚconfigÚstripÚcopyr   Úuse_repo_hgrcÚ
readconfigÚosr6   ÚjoinÚbasenamer:   ÚAttributeErrorÚ_obtainrepoÚreponameÚroot)Úcreate_serverr   ÚappÚhttpdr(   r=   ÚprefixÚrepor6   Úur4   r5   s               r!   Úzc_create_serverrP   �   s  € Ù˜"Ó"€EØ�:‰:€Dð,Ø—	‘	ˆð —‘—‘˜v y°#Ó6×<Ñ<¸TÓBÀTÑIˆÛ‰JˆDØ—‘—‘“ˆAÜ×#Ò#×%Ñ%Ø—‘œRŸW™WŸ\™\¨$°¸Ó@ÔAÜ—7‘7×#Ñ# DÓ)ˆDØ‘M×(Ñ(¨Ó.ˆDØ—8‘8˜F NÓ3ˆDÞØ�Ü�D Ö+ñ  ð €Løô- ó (à�_‰_Ô $Ø—<‘<×>¤2§7¡7×#3Ñ#3°D·I±IÓ#>ˆDØ—7‘7—>‘> &¨)°SÓ9×?Ñ?ÀÓEˆDØ—7‘7—>‘> &¨.Ó9ˆDÞØ�÷ ×Öúô 	��d˜D $Õ'ð €Lð-(ús*   –D ÄG/Ä5BGÇ	G/Ç
G	ÇG/Ç.G/c                  ó&   • \ rS rSrS rS rS rSrg)Úlisteneré£   c                ó   • 0 U l         g ©N©Úfound)Úselfs    r!   Ú__init__Úlistener.__init__¤   s	   € Øˆ�
r;   c                ód   • [        U5      U R                  ;   a  U R                  [        U5      	 g g rU   )ÚreprrW   ©rX   r   Útyper4   s       r!   ÚremoveServiceÚlistener.removeService§   s'   € Ü�‹:˜Ÿ™Ó#Ø—
‘
œ4 ›:Ñ&ð $r;   c                óR   • UR                  X#5      U R                  [        U5      '   g rU   )ÚgetServiceInforW   r\   r]   s       r!   Ú
addServiceÚlistener.addService«   s   € Ø!'×!6Ñ!6°tÓ!Bˆ�
‰
”4˜“:Òr;   rV   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rY   r_   rc   Ú__static_attributes__© r;   r!   rR   rR   £   s   † òò'õCr;   rR   c            	   #  ót  #   • [        5       n U R                  S5      (       a  g [        R                  " U 5      n[        5       n[        R                  " USU5        [
        R                  " S5        UR                  5         UR                  R                  5        H—  nUR                  S UR                  R                  S5       nS[        R                  " UR                  5      < SUR                  < UR                   R#                  SS5      < 3nS	U-   [$        R&                  " U5      4v •  M™     g 7f)
Nr   r-   r   ó   .zhttp://r   r6   Ú/ó   zc-)r"   r   r   rR   ÚServiceBrowserÚtimeÚsleepÚcloserW   Úvaluesr4   Úindexr   Ú	inet_ntoar*   r(   r)   Úgetr
   r2   )r   r   ÚlÚvaluer4   Úurls         r!   Ú
getzcpathsrz   ¯   sã   é € Ü	‹€BØ	‡}�}�V×ÑØÜ×Ò˜rÓ"€FÜ‹
€AÜ×Ò˜FÐ$6¸Ô:Ü‡J‚Jˆq„MØ
‡L�L„NØ—‘—‘Ö!ˆØ�z‰zÐ2˜EŸJ™J×,Ñ,¨TÓ2Ð3‰ä×Ò˜UŸ]™]Ö+Ø�J‹JØ×Ñ× Ñ  ¨Õ-ð
ˆð
 �t‰mœX×-Ò-¨cÓ2Ð2Ô2ò "ùs   ‚D6D8c                óŒ   • US:X  a2  UR                  S5      (       a  [        5        H  u  pgXc:X  d  M  Us  $    U " XU/UQ70 UD6$ ©Nó   pathsrn   ©r   rz   )ÚorigrX   ÚsectionÚkeyÚargsÚkwargsr4   r6   s           r!   r>   r>   Â   sI   € Ø�(Ó˜sŸ~™~¨f×5Ñ5Ü$ž,‰JˆDØ�{Ø’ñ 'ñ �˜sÐ4 TÒ4¨VÑ4Ð4r;   c                óD   • U " X/UQ70 UD6nUS:X  a  U[        5       -  nU$ )Nr}   )rz   )r   rX   r€   r‚   rƒ   r=   s         r!   Úconfigitemsr…   Ê   s/   € Ù�Ð0 Ò0¨Ñ0€EØ�(ÓØ”“ÑˆØ€Lr;   c                ó˜   • U " XU/UQ70 UD6u  pgUS:X  a3  UR                  S5      (       a  [        5        H  u  p‰Xƒ:X  d  M  X—4s  $    Xg4$ r|   r~   )
r   rX   r€   r4   r‚   rƒ   ÚoptÚsubÚzcnameÚzcurls
             r!   Úconfigsuboptionsr‹   Ñ   sV   € Ù�D 4Ð9¨$Ò9°&Ñ9�H€CØ�(Ó˜tŸ™¨v×6Ñ6ô (ž\‰MˆFØ�~Ø�zÒ!ñ *ð ˆ8€Or;   c                ó„   • [        5        H+  u  p#X1:X  d  M  UR                  [        R                  5      s  $    U " U5      $ rU   )rz   Úencoder   )r   Úsourcer4   r6   s       r!   Údefaultdestr�   Ü   s6   € Ü –l‰
ˆØ�>Ø—;‘;œx×0Ñ0Ó1Ò1ñ #ñ �‹<Ðr;   c                ó    •  U " XX45      [         (       a  [         R                  5         $ $ ! [         (       a  [         R                  5         f f = frU   )r   rr   )r   r   ÚoptionsÚcmdÚcmdfuncs        r!   Úcleanupafterdispatchr”   ã   s:   € ðÙ�B Ó.÷
 Š6Ü�L‰L�Nð ø�6Š6Ü�L‰L�Nð ús	   ‚+ «"AÚ_runcommandr>   r…   r‹   r�   rJ   )"Ú__doc__Ú
__future__r   rC   r   rp   Ú r   Ú	mercurialr   r   r   r	   r
   r   ÚuimodÚmercurial.configurationr   Úmercurial.hgwebr   Ú	servermodÚ
testedwithr/   r"   r:   rP   rR   rz   r>   r…   r‹   r�   r”   Úwrapfunctionrj   r;   r!   Ú<module>r       sú   ðñõ& #ã 	Û Û å ÷÷ õ +Ý /ð #€
ð 
€Ø
€òò@& òR÷D	Cñ 	Cò3ò&5òòòòð × Ò ˜ -Ð1EÔ Fà 
× Ò ˜Ÿ™ (¨FÔ 3Ø 
× Ò ˜Ÿ™ -°Ô =Ø 
× Ò ˜Ÿ™Ð"4Ð6FÔ GØ 
× Ò ˜˜M¨;Ô 7Ø 
× Ò ˜	 ?Ð4DÕ Er;   