Ë
    	V.jœ€  ã                   óò  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZddl	m
Z
 ddl	mZ ddl	mZmZ ddlmZ ddlmZmZ d dlmZ dd	l
mZ 	 dd
lmZ ej.                  dk(  r1ej0                  Zej2                  Zej4                  Zej6                  Z	 g d¢Z eed«      ZdZ dZ! ejD                  «       Z#dZ$dgZ% eed«      rdZ$e%dgz  Z%ej.                  dk(  rdZ$e%dgz  Z%e!fd„Z&d„ Z'd„ Z(d„ Z)d„ Z* G d„ d«      Z+ G d„ d«      Z,er G d„ de,«      Z- G d„ de,«      Z. G d „ d!«      Z/dEd"„Z0d#„ Z1ej.                  dk7  rdFd$„Z2ndFd%„Z2 G d&„ d'«      Z3d(„ Z4ej.                  dk(  r% G d)„ d*«      Z5ejl                  ejn                  ffd+„Z8d,Z9d-Z:d.Z;d/Z<d0„ Z=d1„ Z> G d2„ d3«      Z?d4„ Z@d5„ ZA G d6„ d7e/«      ZBd8„ ZCej.                  dk(  r d9„ ZDejŠ                  ejŒ                  hZGdGd:„ZHn eed;«      rd<„ ZInd=„ ZIdGd>„ZHej.                  dk(  r3d?„ ZJd@„ ZK e
j˜                  e.eJ«       dA„ ZMdB„ ZN e
j˜                  e-eM«       ydC„ ZJdD„ ZK e
j˜                  e.eJ«       y# e$ r ej.                  dk(  r‚ dZY �ŒÛw xY w)Hé    Né   )Ú	reduction)Úutil)ÚAuthenticationErrorÚBufferTooShort)Ú	_billiard)ÚsetblockingÚsend_offset©Ú	monotonic)ÚForkingPickler)Ú_winapiÚwin32)ÚClientÚListenerÚPipeÚwaitÚpypy_version_infoi    g      4@ÚAF_INETÚAF_UNIXÚAF_PIPEc                 ó   — t        «       | z   S ©Nr   )Útimeouts    úUC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\billiard/connection.pyÚ_init_timeoutr   E   s   € Ü‹;˜Ñ Ð ó    c                 ó   — t        «       | kD  S r   r   )Úts    r   Ú_check_timeoutr    I   s   € Ü‹;˜‰?Ðr   c                 ó   — | dk(  ry| dk(  r)t        j                  dt        j                  «       ¬«      S | dk(  r;t        j                  dt	        j
                  «       t        t        «      fz  d¬«      S t        d	«      ‚)
z?
    Return an arbitrary free address for the given family
    r   )Ú	localhostr   r   z	listener-)ÚprefixÚdirr   z\\.\pipe\pyc-%d-%d-Ú zunrecognized family)	ÚtempfileÚmktempr   Úget_temp_dirÚosÚgetpidÚnextÚ_mmap_counterÚ
ValueError©Úfamilys    r   Úarbitrary_addressr0   Q   sy   € ð �ÒØØ	�9Ò	Ü�‰ k´t×7HÑ7HÓ7JÔKÐKØ	�9Ò	Ü�‰Ð&<Ü "§	¡	£¬T´-Ó-@ÐAñ'BØGIôKð 	Kô Ð.Ó/Ð/r   c                 óÀ   — t         j                  dk7  r| dk(  rt        d| z  «      ‚t         j                  dk(  r%| dk(  rt        t        | «      st        d| z  «      ‚yyy)zD
    Checks if the family is valid for the current environment.
    r   r   zFamily %s is not recognized.r   N)ÚsysÚplatformr-   ÚhasattrÚsocketr.   s    r   Ú_validate_familyr6   `   sc   € ô ‡|�|�wÒ 6¨YÒ#6ÜÐ7¸&Ñ@ÓAÐAä
‡|�|�wÒ 6¨YÒ#6ä”v˜vÔ&ÜÐ;¸fÑDÓEÐEð 'ð $7Ðr   c                 ó®   — t        | «      t        k(  ryt        | «      t        u r| j                  d«      ryt        | «      t        u ryt	        d| z  «      ‚)z]
    Return the types of the address

    This can be 'AF_INET', 'AF_UNIX', or 'AF_PIPE'
    r   z\\r   r   zaddress type of %r unrecognized)ÚtypeÚtupleÚstrÚ
startswithr-   )Úaddresss    r   Úaddress_typer=   m   sO   € ô ˆGƒ}œÒØÜ	ˆg‹œ#Ñ	 '×"4Ñ"4°VÔ"<ØÜ	ˆg‹œ#Ñ	ØäÐ:¸WÑDÓEÐEr   c                   ó   — e Zd Zd„ Zy)Ú_SocketContainerc                 ó   — || _         y r   ©Úsock)ÚselfrB   s     r   Ú__init__z_SocketContainer.__init__ƒ   s	   € Øˆ�	r   N)Ú__name__Ú
__module__Ú__qualname__rD   © r   r   r?   r?   �   s   „ ór   r?   c                   ó¶   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	e
d„ «       Ze
d	„ «       Ze
d
„ «       Zd„ Zd„ Zdd„Zd„ Zdd„Zdd„Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Zy)Ú_ConnectionBaseNc                 ó  — t        |t        «      r+|j                  | _        |j                  j	                  «       }|j                  «       }|dk  rt        d«      ‚|s|st        d«      ‚|| _        || _        || _	        y )Nr   zinvalid handlez6at least one of `readable` and `writable` must be True)
Ú
isinstancer?   rB   Ú_socketÚfilenoÚ	__index__r-   Ú_handleÚ	_readableÚ	_writable)rC   ÚhandleÚreadableÚwritables       r   rD   z_ConnectionBase.__init__Š   sw   € Ü�fÔ.Ô/Ø!Ÿ;™;ˆDŒLØ—[‘[×'Ñ'Ó)ˆFØ×!Ñ!Ó#ˆØ�AŠ:ÜÐ-Ó.Ð.Ù¡ÜØHóJð JàˆŒØ!ˆŒØ!ˆ�r   c                 ó>   — | j                   �| j                  «        y y r   ©rP   Ú_close©rC   s    r   Ú__del__z_ConnectionBase.__del__š   s   € Ø�<‰<Ð#Ø�K‰K�Mð $r   c                 ó2   — | j                   €t        d«      ‚y )Nzhandle is closed)rP   ÚOSErrorrY   s    r   Ú_check_closedz_ConnectionBase._check_closedž   s   € Ø�<‰<ÐÜÐ,Ó-Ð-ð  r   c                 ó2   — | j                   st        d«      ‚y )Nzconnection is write-only)rQ   r\   rY   s    r   Ú_check_readablez_ConnectionBase._check_readable¢   s   € Ø�~Š~ÜÐ4Ó5Ð5ð r   c                 ó2   — | j                   st        d«      ‚y )Nzconnection is read-only)rR   r\   rY   s    r   Ú_check_writablez_ConnectionBase._check_writable¦   s   € Ø�~Š~ÜÐ3Ó4Ð4ð r   c                 ót   — | j                   rd| _        t        d«      ‚| j                  «        t        d«      ‚)NFzbad message length)rR   rQ   Úcloser\   rY   s    r   Ú_bad_message_lengthz#_ConnectionBase._bad_message_lengthª   s5   € Ø�>Š>Ø"ˆDŒNô Ð*Ó+Ð+ð �J‰JŒLÜÐ*Ó+Ð+r   c                 ó   — | j                   du S )z True if the connection is closedN©rP   rY   s    r   Úclosedz_ConnectionBase.closed±   s   € ð �|‰|˜tÐ#Ð#r   c                 ó   — | j                   S )z"True if the connection is readable)rQ   rY   s    r   rT   z_ConnectionBase.readable¶   ó   € ð �~‰~Ðr   c                 ó   — | j                   S )z"True if the connection is writable)rR   rY   s    r   rU   z_ConnectionBase.writable»   ri   r   c                 ó:   — | j                  «        | j                  S )z+File descriptor or handle of the connection)r]   rP   rY   s    r   rN   z_ConnectionBase.filenoÀ   s   € à×ÑÔØ�|‰|Ðr   c                 óf   — | j                   �	 | j                  «        d| _         yy# d| _         w xY w)zClose the connectionNrW   rY   s    r   rc   z_ConnectionBase.closeÅ   s1   € à�<‰<Ð#ð$Ø—‘”à#�•ð	 $øð  $�•ús   Ž' §	0c                 óz  — | j                  «        | j                  «        t        |«      }|j                  dkD  rt        t	        |«      «      }t        |«      }|dk  rt        d«      ‚||k  rt        d«      ‚|€||z
  }n#|dk  rt        d«      ‚||z   |kD  rt        d«      ‚| j                  ||||z    «       y)z,Send the bytes data from a bytes-like objectr   r   zoffset is negativezbuffer length < offsetNzsize is negativezbuffer length < offset + size)r]   ra   Ú
memoryviewÚitemsizeÚbytesÚlenr-   Ú_send_bytes)rC   ÚbufÚoffsetÚsizeÚmÚns         r   Ú
send_bytesz_ConnectionBase.send_bytesÍ   s½   € à×ÑÔØ×ÑÔÜ�s‹Oˆà�:‰:˜Š>Üœ5 ›8Ó$ˆAÜ�‹FˆØ�AŠ:ÜÐ1Ó2Ð2ØˆvŠ:ÜÐ5Ó6Ð6Øˆ<Ø�v‘:‰DØ�AŠXÜÐ/Ó0Ð0Ø�d‰]˜QÒÜÐ<Ó=Ð=Ø×Ñ˜˜6 &¨4¡-Ð0Õ1r   c                 óŒ   — | j                  «        | j                  «        | j                  t        j                  |«      «       y)zSend a (picklable) objectN)r]   ra   rr   r   Údumps©rC   Úobjs     r   Úsendz_ConnectionBase.sendâ   s3   € à×ÑÔØ×ÑÔØ×Ñœ×-Ñ-¨cÓ2Õ3r   c                 óÌ   — | j                  «        | j                  «        |�|dk  rt        d«      ‚| j                  |«      }|€| j	                  «        |j                  «       S )z7
        Receive bytes data as a bytes object.
        r   znegative maxlength)r]   r_   r-   Ú_recv_bytesrd   Úgetvalue)rC   Ú	maxlengthrs   s      r   Ú
recv_bytesz_ConnectionBase.recv_bytesè   sa   € ð 	×ÑÔØ×ÑÔØÐ  Y°¢]ÜÐ1Ó2Ð2Ø×Ñ˜yÓ)ˆØˆ;Ø×$Ñ$Ô&Ø�|‰|‹~Ðr   c                 óÚ  — | j                  «        | j                  «        t        |«      5 }|j                  }|t	        |«      z  }|dk  rt        d«      ‚||kD  rt        d«      ‚| j                  «       }|j                  «       }|||z   k  rt        |j                  «       «      ‚|j                  d«       |j                  |||z  ||z   |z   «       |cddd«       S # 1 sw Y   yxY w)zq
        Receive bytes data into a writeable bytes-like object.
        Return the number of bytes read.
        r   znegative offsetzoffset too largeN)r]   r_   rn   ro   rq   r-   r   Útellr   r€   ÚseekÚreadinto)rC   rs   rt   rv   ro   ÚbytesizeÚresultru   s           r   Úrecv_bytes_intoz_ConnectionBase.recv_bytes_intoõ   sÚ   € ð
 	×ÑÔØ×ÑÔÜ˜Œ_ à—z‘zˆHØ¤# a£&Ñ(ˆHØ˜ŠzÜ Ð!2Ó3Ð3Ø˜(Ò"Ü Ð!3Ó4Ð4Ø×%Ñ%Ó'ˆFØ—;‘;“=ˆDØ˜& 4™-Ò'Ü$ V§_¡_Ó%6Ó7Ð7à�K‰K˜ŒNØ�O‰O˜AØ˜(Ñ" F¨T¡M°hÑ#>ðô ð ÷# �_Š_ús   ¬B+C!Ã!C*c                 óŒ   — | j                  «        | j                  «        | j                  «       }t        j                  |«      S )zReceive a (picklable) object)r]   r_   r   r   Úloadbuf)rC   rs   s     r   Úrecvz_ConnectionBase.recv  s9   € à×ÑÔØ×ÑÔØ×ÑÓ ˆÜ×%Ñ% cÓ*Ð*r   c                 ód   — | j                  «        | j                  «        | j                  |«      S )z/Whether there is any input available to be read)r]   r_   Ú_poll©rC   r   s     r   Úpollz_ConnectionBase.poll  s)   € à×ÑÔØ×ÑÔØ�z‰z˜'Ó"Ð"r   c                 ó   — | S r   rH   rY   s    r   Ú	__enter__z_ConnectionBase.__enter__  ó   € Øˆr   c                 ó$   — | j                  «        y r   ©rc   ©rC   Úexc_typeÚ	exc_valueÚexc_tbs       r   Ú__exit__z_ConnectionBase.__exit__  ó   € Ø�
‰
�r   c                 ó8   — t        | j                  «       ||«      S r   )r
   rN   )rC   rs   rt   s      r   r
   z_ConnectionBase.send_offset"  s   € Ü˜4Ÿ;™;›=¨#¨vÓ6Ð6r   c                 ó8   — t        | j                  «       |«       y r   )r	   rN   )rC   Úblockings     r   r	   z_ConnectionBase.setblocking%  s   € Ü�D—K‘K“M 8Õ,r   )TT)r   Nr   )r   )g        )rE   rF   rG   rP   rD   rZ   r]   r_   ra   rd   Úpropertyrg   rT   rU   rN   rc   rx   r}   r‚   r‰   rŒ   r�   r’   rš   r
   r	   rH   r   r   rJ   rJ   ‡   s�   „ Ø€Gó"ò ò.ò6ò5ò,ð ñ$ó ð$ð ñó ðð ñó ðòò
$ó2ò*4óóò4+ó#òòò7ó-r   rJ   c                   óL   — e Zd ZdZdZej                  fd„Zd„ Zd	d„Z	d„ Z
d„ Zy)
ÚPipeConnectionzª
        Connection class based on a Windows named pipe.
        Overlapped I/O is used, so the handles must have been created
        with FILE_FLAG_OVERLAPPED.
        Fc                 ó(   —  || j                   «       y r   rf   )rC   Ú_CloseHandles     r   rX   zPipeConnection._close3  s   € Ù˜Ÿ™Õ&r   c                 óŒ  — t        j                  | j                  |d¬«      \  }}	 |t         j                  k(  r1t        j                  |j
                  gdt        «      }|t        k(  sJ ‚|j                  d«      \  }}|dk(  sJ ‚|t        |«      k(  sJ ‚y #  |j                  «        ‚ xY w# |j                  d«      \  }}w xY w)NT©Ú
overlappedFr   )r   Ú	WriteFilerP   ÚERROR_IO_PENDINGÚWaitForMultipleObjectsÚeventÚINFINITEÚWAIT_OBJECT_0ÚcancelÚGetOverlappedResultrq   )rC   rs   ÚovÚerrÚwaitresÚnwrittens         r   rr   zPipeConnection._send_bytes6  s¹   € Ü×'Ñ'¨¯©°cÀdÔK‰GˆB�ð
=Øœ'×2Ñ2Ò2Ü%×<Ñ<àŸ™˜
 E¬8ó5�Gð #¤mÒ3Ð3Ð3ð
 !#× 6Ñ 6°tÓ <‘�˜#Ø˜!’8ˆO�8Øœs 3›xÒ'Ð'Ñ'øðØ—	‘	”Øûà "× 6Ñ 6°tÓ <‘�™#ús   §AB ÂB*Â*B- Â-CNc                 ó  — | j                   rd| _         t        j                  «       S |€dnt        |d«      }	 t	        j
                  | j                  |d¬«      \  }}d }d }	 |t        j                  k(  r1t	        j                  |j                  gdt        «      }|t        k(  sJ ‚|j                  d«      \  }	}|dk(  r6t        j                  «       }
|
j                  |j!                  «       «       |
}n&|t        j"                  k(  r| j%                  ||«      }	 |�|S |�|‚	 t/        d«      ‚# t        $ r}|j                  «        |}Y d }~Œ©d }~ww xY w# |j                  d«      \  }	}|dk(  r6t        j                  «       }
|
j                  |j!                  «       «       |
}w |t        j"                  k(  r| j%                  ||«      }w w xY w# t&        $ r)}|j(                  t        j*                  k(  rt,        ‚‚ d }~ww xY w)NFé€   Tr¥   r   z.shouldn't get here; expected KeyboardInterrupt)Ú_got_empty_messageÚioÚBytesIOÚminr   ÚReadFilerP   r¨   r©   rª   r«   r¬   Ú	Exceptionr­   r®   ÚwriteÚ	getbufferÚERROR_MORE_DATAÚ_get_more_datar\   ÚwinerrorÚERROR_BROKEN_PIPEÚEOFErrorÚRuntimeError)rC   ÚmaxsizeÚbsizer¯   r°   rˆ   Úexc_to_raiser±   ÚeÚnreadÚfs              r   r   zPipeConnection._recv_bytesF  sß  € Ø×&Ò&Ø*/�Ô'Ü—z‘z“|Ð#à&˜™´C¸ÀÓ4E�ðÜ%×.Ñ.ØŸ™ e¸ô‘G�B˜ð "�FØ#'�LðFØ¤'×":Ñ":Ò:Ü&-×&DÑ&DØ!#§¡ 
¨E´8ó'=˜Gà#*¬mÒ#;Ð;Ð#;ð
 &(×%;Ñ%;¸DÓ%A™
˜˜sØ !š8Ü "§
¡
£˜AØŸG™G B§L¡L£NÔ3Ø%&™FØ ¤G×$;Ñ$;Ò;Ø%)×%8Ñ%8¸¸WÓ%E™FØÐ)Ø%˜Ø#Ð/Ø*Ð*ð 0ô Ø@óBð Bøô) %ò )ØŸ	™	œØ'(�ûð)ûð &(×%;Ñ%;¸DÓ%A™
˜˜sØ !š8Ü "§
¡
£˜AØŸG™G B§L¡L£NÔ3Ø%&™FØ ¤G×$;Ñ$;Ò;Ø%)×%8Ñ%8¸¸WÓ%E™Fð <ûô ò Ø—z‘z¤W×%>Ñ%>Ò>Ü&˜àûð	úsV   ¹)G Á#AD0 Â'A8G Ä G Ä0	EÄ9EÅE ÅEÅE ÅA7GÇG Ç	HÇ$G?Ç?Hc                 ó’   — | j                   s%t        j                  | j                  «      d   dk7  ryt	        t        | g|«      «      S )Nr   T)rµ   r   ÚPeekNamedPiperP   Úboolr   r�   s     r   rŽ   zPipeConnection._polln  s>   € Ø×'Ò'Ü×)Ñ)¨$¯,©,Ó7¸Ñ:¸aÒ?ØÜœ˜d˜V WÓ-Ó.Ð.r   c                 óÔ  — |j                  «       }t        j                  «       }|j                  |«       t	        j
                  | j                  «      d   }|dkD  sJ ‚|�!t        |«      |z   |kD  r| j                  «        t	        j                  | j                  |d¬«      \  }}|j                  d«      \  }}|dk(  sJ ‚||k(  sJ ‚|j                  |j                  «       «       |S )Nr   r   Tr¥   )r¼   r¶   r·   r»   r   rÊ   rP   rq   rd   r¹   r®   )rC   r¯   rÃ   rs   rÈ   Úleftr°   Úrbytess           r   r¾   zPipeConnection._get_more_datat  sÆ   € Ø—,‘,“.ˆCÜ—
‘
“ˆAØ�G‰G�CŒLÜ×(Ñ(¨¯©Ó6°qÑ9ˆDØ˜!’8ˆO�8ØÐ"¤s¨3£x°$¡¸Ò'@Ø×(Ñ(Ô*Ü×&Ñ& t§|¡|°TÀdÔK‰GˆB�Ø×0Ñ0°Ó6‰KˆF�CØ˜!’8ˆO�8Ø˜T’>Ð!�>Ø�G‰G�B—L‘L“NÔ#ØˆHr   r   )rE   rF   rG   Ú__doc__rµ   r   ÚCloseHandlerX   rr   r   rŽ   r¾   rH   r   r   r¡   r¡   +  s3   „ ñ	ð
 #Ðà&-×&9Ñ&9ó 	'ò	(ó &	BòP	/ó	r   r¡   c                   óÞ   — e Zd ZdZer(ej                  fd„Zej                  Z	ej                  Zn'ej                  fd„Zej                  Z	ej                  Ze	fd„Zefd„Zefd„Zd
d„Zd	„ Zy)Ú
Connectionzo
    Connection class based on an arbitrary file descriptor (Unix only), or
    a socket handle (Windows).
    c                 ó(   —  || j                   «       y r   rf   ©rC   rX   s     r   rX   zConnection._close‹  ó   € Ù�4—<‘<Õ r   c                 ó(   —  || j                   «       y r   rf   rÔ   s     r   rX   zConnection._close�  rÕ   r   c                 óø   — t        |«      }	 	  || j                  |«      }||z  }|dk(  ry ||d  }Œ%# t        t        t        j
                  f$ r)}t        |dd «      t        j                  k7  r‚ Y d }~ŒCd }~ww xY w)Nr   Úerrno)	rq   rP   r\   ÚIOErrorr5   ÚerrorÚgetattrrØ   ÚEINTR)rC   rs   r»   Ú	remainingrw   Úexcs         r   Ú_sendzConnection._send•  s‚   € Ü˜“Hˆ	Øð	Ù˜$Ÿ,™,¨Ó,�ð
 ˜Q‘�	Ø ’>ØØ˜!˜"�g�ð øô œW¤f§l¡lÐ3ò Ü˜3 ¨Ó.´%·+±+Ò=Øô >ûðús   Ž2 ²A9ÁA4Á4A9c                 ó€  — t        j                  «       }| j                  }|}|dkD  rL	  |||«      }t        |«      }|dk(  r||k(  rt        ‚t        d«      ‚|j                  |«       ||z  }|dkD  rŒL|S # t
        t        t        j                  f$ r)}t        |dd «      t        j                  k7  r‚ Y d }~ŒJd }~ww xY w)Nr   zgot end of file during messagerØ   )r¶   r·   rP   rq   rÁ   r\   r»   rÙ   r5   rÚ   rÛ   rØ   rÜ   )	rC   ru   Úreadrs   rS   rÝ   Úchunkrw   rÞ   s	            r   Ú_recvzConnection._recv£  s½   € Ü�j‰j‹lˆØ—‘ˆØˆ	Ø˜!ŠmðÙ˜V YÓ/�ô
 ˜“J�Ø˜’6Ø  DÒ(Ü&˜ä%Ð&FÓGÐGØ—	‘	˜%Ô Ø˜Q‘�	ð ˜!‹mð ˆ
øô œW¤f§l¡lÐ3ò Ü˜3 ¨Ó.´%·+±+Ò=Øô >ûðús   ©	A6 Á6B=ÂB8Â8B=c                 óö   — t        |«      }t        j                  d|«      }|dkD  r#| j                  |«       | j                  |«       y t	        ||«      r|j                  «       }| j                  ||z   «       y )Nú!ii @  )rq   ÚstructÚpackrß   rL   Útobytes)rC   rs   rn   rw   Úheaders        r   rr   zConnection._send_bytes¸  sb   € Ü�‹Hˆä—‘˜T 1Ó%ˆØˆuŠ9ð �J‰J�vÔØ�J‰J�s�Oô ˜#˜zÔ*Ø—k‘k“m�Ø�J‰J�v ‘|Õ$r   Nc                 ó¢   — | j                  d«      }t        j                  d|j                  «       «      \  }|�||kD  ry | j                  |«      S )Né   rå   )rã   ræ   Úunpackr€   )rC   rÃ   rs   ru   s       r   r   zConnection._recv_bytesÊ  sE   € Ø�j‰j˜‹mˆÜ—‘˜d C§L¡L£NÓ3‰ˆØÐ 4¨'¢>ØØ�z‰z˜$ÓÐr   c                 ó2   — t        | g|«      }t        |«      S r   )r   rË   )rC   r   Úrs      r   rŽ   zConnection._pollÑ  s   € Ü�$�˜Ó!ˆÜ�A‹wˆr   r   )rE   rF   rG   rÏ   r   r   ÚclosesocketrX   r}   Ú_writerŒ   Ú_readr)   rc   r»   rá   rß   rã   rn   rr   r   rŽ   rH   r   r   rÒ   rÒ   „  sp   „ ññ
 Ø )× 5Ñ 5ó 	!à—‘ˆØ—‘‰à "§¡ó 	!à—‘ˆØ—‘ˆà%ó ð  %ó ð* +5ó %ó$ ór   rÒ   c                   óT   — e Zd ZdZd
d„Zd„ Zd„ Z ed„ «      Z ed„ «      Z	d„ Z
d	„ Zy)r   z•
    Returns a listener object.

    This is a wrapper for a bound socket which is 'listening' for
    connections, or for a Windows named pipe.
    Nc                 ó  — |xs |xr t        |«      xs t        }|xs t        |«      }t        |«       |dk(  rt	        ||«      | _        nt        |||«      | _        |�t        |t        «      st        d«      ‚|| _
        y )Nr   úauthkey should be a byte string)r=   Údefault_familyr0   r6   ÚPipeListenerÚ	_listenerÚSocketListenerrL   rp   Ú	TypeErrorÚ_authkey)rC   r<   r/   ÚbacklogÚauthkeys        r   rD   zListener.__init__á  s†   € Øò HØÒ4œ|¨GÓ4òHÜ9Gð 	àÒ6Ô.¨vÓ6ˆä˜Ô Ø�YÒÜ)¨'°7Ó;ˆD�Nä+¨G°V¸WÓEˆDŒNàÐ¤z°'¼5Ô'AÜÐ=Ó>Ð>àˆ�r   c                 óØ   — | j                   €t        d«      ‚| j                   j                  «       }| j                  r,t	        || j                  «       t        || j                  «       |S )zz
        Accept a connection on the bound socket or named pipe of `self`.

        Returns a `Connection` object.
        zlistener is closed)r÷   r\   Úacceptrú   Údeliver_challengeÚanswer_challenge)rC   Úcs     r   rþ   zListener.acceptñ  sT   € ð �>‰>Ð!ÜÐ.Ó/Ð/Ø�N‰N×!Ñ!Ó#ˆØ�=Š=Ü˜a §¡Ô/Ü˜Q §¡Ô.Øˆr   c                 óP   — | j                   }|�d| _         |j                  «        yy)zA
        Close the bound socket or named pipe of `self`.
        N)r÷   rc   )rC   Úlisteners     r   rc   zListener.closeÿ  s)   € ð —>‘>ˆØÐØ!ˆDŒNØ�N‰NÕð  r   c                 ó.   — | j                   j                  S r   )r÷   Ú_addressrY   s    r   Ú<lambda>zListener.<lambda>  s   €  D§N¡N×$;Ò$;r   c                 ó.   — | j                   j                  S r   )r÷   Ú_last_acceptedrY   s    r   r  zListener.<lambda>	  s   € ¨$¯.©.×*GÒ*Gr   c                 ó   — | S r   rH   rY   s    r   r’   zListener.__enter__  r“   r   c                 ó$   — | j                  «        y r   r•   r–   s       r   rš   zListener.__exit__  r›   r   )NNr   N)rE   rF   rG   rÏ   rD   rþ   rc   rŸ   r<   Úlast_acceptedr’   rš   rH   r   r   r   r   Ú  s8   „ ñó ò òñ Ñ;Ó<€GÙÑGÓH€Mòór   r   c                 óà   — |xs t        | «      }t        |«       |dk(  rt        | «      }nt        | «      }|�t	        |t
        «      st        d«      ‚|�t        ||«       t        ||«       |S )z=
    Returns a connection to the address of a `Listener`
    r   rô   )	r=   r6   Ú
PipeClientÚSocketClientrL   rp   rù   r   rÿ   )r<   r/   rü   r  s       r   r   r     sq   € ð Ò,”| GÓ,€FÜ�VÔØ�ÒÜ�wÓ‰ä˜Ó!ˆàÐ¤:¨g´uÔ#=ÜÐ9Ó:Ð:àÐÜ˜˜GÔ$Ü˜!˜WÔ%à€Hr   c                 óP   — t        | d«      r| j                  «       S t        | «      S )NÚdetach)r4   r  r?   rA   s    r   r  r  '  s%   € Üˆt�XÔØ�{‰{‹}Ðô ˜DÓ!Ð!r   c                 óv  — | rgt        j                  «       \  }}|j                  | «       |j                  | «       t        t	        |«      «      }t        t	        |«      «      }||fS t        j                  «       \  }}|rt        |d«       |rt        |d«       t        |d¬«      }t        |d¬«      }||fS )úL
        Returns pair of connection objects at either end of a pipe
        r   F©rU   ©rT   )r5   Ú
socketpairr	   rÒ   r  r)   Úpipe)	ÚduplexÚ	rnonblockÚ	wnonblockÚs1Ús2Úc1Úc2Úfd1Úfd2s	            r   r   r   1  s¨   € ñ Ü×&Ñ&Ó(‰FˆB�Ø�N‰N˜y˜=Ô)Ø�N‰N˜y˜=Ô)ÜœF 2›JÓ'ˆBÜœF 2›JÓ'ˆBð �2ˆvˆô —w‘w“y‰HˆC�ÙÜ˜C Ô#ÙÜ˜C Ô#Ü˜C¨%Ô0ˆBÜ˜C¨%Ô0ˆBà�2ˆvˆr   c           
      ó²  — |rJ d«       ‚|rJ d«       ‚t        d«      }| r>t        j                  }t        j                  t        j                  z  }t
        t
        }}n(t        j                  }t        j                  }dt
        }}t        j                  ||t        j                  z  t        j                  z  t        j                  t        j                  z  t        j                  z  d||t        j                  t        j                  «      }t        j                  ||dt        j                  t        j                   t        j                  t        j                  «      }	t        j"                  |	t        j                  dd«       t        j$                  |d¬«      }
|
j'                  d«      \  }}|dk(  sJ ‚t)        || ¬	«      }t)        |	| ¬
«      }||fS )r  z"rnonblock not supported on windowsz"wnonblock not supported on windowsr   r   r   NTr¥   r  r  )r0   r   ÚPIPE_ACCESS_DUPLEXÚGENERIC_READÚGENERIC_WRITEÚBUFSIZEÚPIPE_ACCESS_INBOUNDÚCreateNamedPipeÚFILE_FLAG_OVERLAPPEDÚFILE_FLAG_FIRST_PIPE_INSTANCEÚPIPE_TYPE_MESSAGEÚPIPE_READMODE_MESSAGEÚ	PIPE_WAITÚNMPWAIT_WAIT_FOREVERÚNULLÚ
CreateFileÚOPEN_EXISTINGÚSetNamedPipeHandleStateÚConnectNamedPiper®   r¡   )r  r  r  r<   ÚopenmodeÚaccessÚobsizeÚibsizeÚh1Úh2r¦   Ú_r°   r  r  s                  r   r   r   H  s…  € ñ ÐBÐBÓBˆ}ÙÐBÐBÓBˆ}Ü# IÓ.ˆÙÜ×1Ñ1ˆHÜ×)Ñ)¬G×,AÑ,AÑAˆFÜ$¤g�F‰Fä×2Ñ2ˆHÜ×*Ñ*ˆFØ¤�FˆFä×$Ñ$Ø�X¤× <Ñ <Ñ<Ü×1Ñ1ñ2ä×%Ñ%¬×(EÑ(EÑEÜ×Ññàˆv�vœw×;Ñ;ä�L‰Ló
ˆô ×ÑØ�V˜Q¤§¡¬g×.CÑ.CÜ×(Ñ(¬'¯,©,ó
ˆô 	×'Ñ'Ø”×-Ñ-¨t°Tô	
ô ×-Ñ-¨b¸TÔBˆ
Ø×/Ñ/°Ó5‰ˆˆ3Ø�aŠxˆˆxä˜B¨Ô0ˆÜ˜B¨Ô0ˆà�2ˆvˆr   c                   ó$   — e Zd ZdZdd„Zd„ Zd„ Zy)rø   zO
    Representation of a socket which is bound to an address and listening
    c                 ó®  — t        j                   t        t         |«      «      | _        	 t        j                  dk(  r9| j                  j                  t         j                  t         j                  d«       | j                  j                  d«       | j                  j                  |«       | j                  j                  |«       | j                  j                  «       | _        || _        d | _        |dk(  r.t#        j$                  | t        j&                  |fd¬«      | _        y d | _        y # t        $ r | j                  j                  «        ‚ w xY w)NÚposixr   Tr   r   ©ÚargsÚexitpriority)r5   rÛ   rM   r)   ÚnameÚ
setsockoptÚ
SOL_SOCKETÚSO_REUSEADDRr	   ÚbindÚlistenÚgetsocknamer  r\   rc   Ú_familyr  r   ÚFinalizeÚunlinkÚ_unlink)rC   r<   r/   rû   s       r   rD   zSocketListener.__init__{  sÿ   € Ü—}‘}¤W¬V°VÓ%<Ó=ˆŒð	ä�w‰w˜'Ò!Ø—‘×'Ñ'¬×(9Ñ(9Ü(.×(;Ñ(;¸Qô@à�L‰L×$Ñ$ TÔ*Ø�L‰L×Ñ˜gÔ&Ø�L‰L×Ñ Ô(Ø ŸL™L×4Ñ4Ó6ˆDŒMð ˆŒØ"ˆÔà�YÒÜŸ=™=Ø”b—i‘i w j¸qôˆD�Lð  ˆD�Løô ò 	Ø�L‰L×ÑÔ Øð	ús   ªB<D/ Ä/%Ec                 ó,  — 	 	 | j                   j                  «       \  }| _        	 |j                  d«       t        t        |«      «      S # t        t        t
        j                  f$ r)}t        |dd «      t        j                  k7  r‚ Y d }~nd }~ww xY wŒ”)NTrØ   )rM   rþ   r  r\   rÙ   r5   rÚ   rÛ   rØ   rÜ   r	   rÒ   r  )rC   ÚsrÞ   s      r   rþ   zSocketListener.accept“  sƒ   € ØðØ)-¯©×)<Ñ)<Ó)>Ñ&��4Ô&ð
 Ø	�‰�dÔÜœ& ›)Ó$Ð$øô œW¤f§l¡lÐ3ò Ü˜3 ¨Ó.´%·+±+Ò=Øô >ûðúð s   ƒ"A ÁBÁ)BÂBc                 ó¸   — 	 | j                   j                  «        | j                  }|�d | _         |«        y y # | j                  }|�d | _         |«        w w xY wr   )rM   rc   rI  )rC   rH  s     r   rc   zSocketListener.closeŸ  s[   € ð	Ø�L‰L×ÑÔ à—\‘\ˆFØÐ!Ø#�”Ù•ð "øð —\‘\ˆFØÐ!Ø#�”Ù•ð "ús	   ‚: ºAN)r   )rE   rF   rG   rÏ   rD   rþ   rc   rH   r   r   rø   rø   w  s   „ ñó ò0
%ór   rø   c                 óÊ   — t        | «      }t        j                  t        t        |«      «      }|j                  d«       |j	                  | «       t        t        |«      «      S )zO
    Return a connection object connected to the socket given by `address`
    T)r=   r5   rÛ   r	   ÚconnectrÒ   r  )r<   r/   rK  s      r   r  r  ©  sJ   € ô ˜'Ó"€FÜ�‰”gœf fÓ-Ó.€AØ‡M�M�$ÔØ‡I�IˆgÔÜ”f˜Q“iÓ Ð r   c                   ó6   — e Zd ZdZdd„Zdd„Zd„ Zed„ «       Zy)	rö   z0
        Representation of a named pipe
        Nc                 ó  — || _         | j                  d¬«      g| _        d | _        t	        j
                  d| j                   «       t	        j                  | t        j                  | j                  | j                   fd¬«      | _	        y )NT)Úfirstz listener created with address=%rr   r<  )
r  Ú_new_handleÚ_handle_queuer  r   Ú	sub_debugrG  rö   Ú_finalize_pipe_listenerrc   )rC   r<   rû   s      r   rD   zPipeListener.__init__½  sl   € Ø#ˆDŒMØ"&×"2Ñ"2¸Ð"2Ó">Ð!?ˆDÔà"&ˆDÔÜ�N‰NÐ=¸t¿}¹}ÔMÜŸ™Ø”l×:Ñ:Ø×(Ñ(¨$¯-©-Ð8ÀqôˆD�Jr   c           
      ó~  — t         j                  t         j                  z  }|r|t         j                  z  }t        j                  | j
                  |t         j                  t         j                  z  t         j                  z  t         j                  t        t        t         j                  t         j                  «      S r   )r   r!  r'  r(  r&  r  r)  r*  r+  ÚPIPE_UNLIMITED_INSTANCESr$  r,  r-  )rC   rQ  Úflagss      r   rR  zPipeListener._new_handleÈ  s…   € Ü×.Ñ.´×1MÑ1MÑMˆEÙØœ×>Ñ>Ñ>�Ü×*Ñ*Ø—‘˜uÜ×)Ñ)¬G×,IÑ,IÑIÜ×!Ñ!ñ"ä×0Ñ0´'¼7Ü×,Ñ,¬g¯l©lóð r   c                 óh  — | j                   j                  | j                  «       «       | j                   j                  d«      }	 t	        j
                  |d¬«      }	 t	        j                  |j                  gdt        «       	 |j                  d«      \  }}|dk(  sJ ‚t        |«      S #  |j                  «        t	        j                  |«       ‚ xY w# |j                  d«      \  }}|dk(  sJ ‚w xY w# t        $ r2}|j                  t        j                  k7  r‚ Y d }~t        |«      S d }~ww xY w)Nr   Tr¥   F)rS  ÚappendrR  Úpopr   r1  r©   rª   r«   r­   rÐ   r®   r\   r¿   ÚERROR_NO_DATAr¡   )rC   rS   r¯   r8  r°   rÆ   s         r   rþ   zPipeListener.acceptÔ  s  € Ø×Ñ×%Ñ% d×&6Ñ&6Ó&8Ô9Ø×'Ñ'×+Ñ+¨AÓ.ˆFð$Ü×-Ñ-¨fÀÔF�ð	$Ü×2Ñ2ØŸ™˜
 E¬8õ5ð  ×3Ñ3°DÓ9‘F�A�sØ !š8�O˜8Ü! &Ó)Ð)øðØ—I‘I”KÜ×'Ñ'¨Ô/Øûà×3Ñ3°DÓ9‘F�A�sØ !š8�O™8ûô ò Ø—:‘:¤×!6Ñ!6Ò6Øó 7ô " &Ó)Ð)ûð!ús0   ÁC6 Á&B+ Â+(CÃC ÃC3Ã6	D1Ã?D,Ä,D1c                 óh   — t        j                  d|«       | D ]  }t        j                  |«       Œ y )Nz closing listener with address=%r)r   rT  r   rÐ   )Úqueuer<   rS   s      r   rU  z$PipeListener._finalize_pipe_listenerë  s)   € ä�N‰NÐ=¸wÔGÛ�Ü×#Ñ# FÕ+ñ  r   r   )F)	rE   rF   rG   rÏ   rD   rR  rþ   ÚstaticmethodrU  rH   r   r   rö   rö   ¹  s*   „ ñ	ó		ó
	ò	*ð. 
ñ	,ó 
ñ	,r   rö   c           	      óð  — t        «       }	 	 t        j                  | d«       t        j                  | t        j                  t        j
                  z  dt        j                  t        j                  t        j                  t        j                  «      }	 t        j                  |t        j                  dd«       t        |«      S # t        $ r$}|j                  |vst        |«      r‚ Y d}~nd}~ww xY wŒì)zU
        Return a connection object connected to the pipe given by `address`
        éè  r   N)r   r   ÚWaitNamedPiper.  r"  r#  r-  r/  r'  r\   r¿   r    r0  r*  r¡   )r<   Ú_ignorer   ÚhrÆ   s        r   r  r  ñ  sÍ   € ô
 ‹OˆØðÜ×%Ñ% g¨tÔ4Ü×&Ñ&ØœW×1Ñ1´G×4IÑ4IÑIØ”w—|‘|¤W×%:Ñ%:Ü×0Ñ0´'·,±,ó�ð ô 	×'Ñ'ØŒw×,Ñ,¨d°Dô	
ô ˜aÓ Ð øô ò Ø—:‘: WÑ,´¸qÔ0AØô 1Bûðúð s   �BC Ã	C4ÃC/Ã/C4é   s   #CHALLENGE#s	   #WELCOME#s	   #FAILURE#c                 ój  — dd l }t        |t        «      sJ ‚t        j                  t
        «      }| j                  t        |z   «       |j                  ||d«      j                  «       }| j                  d«      }||k(  r| j                  t        «       y | j                  t        «       t        d«      ‚)Nr   Úmd5é   zdigest received was wrong)ÚhmacrL   rp   r)   ÚurandomÚMESSAGE_LENGTHrx   Ú	CHALLENGEÚnewÚdigestr‚   ÚWELCOMEÚFAILUREr   ©Ú
connectionrü   ri  Úmessagern  Úresponses         r   rÿ   rÿ     s‘   € ÛÜ�gœuÔ%Ð%Ð%Ü�j‰jœÓ(€GØ×Ñœ) gÑ-Ô.Ø�X‰X�g˜w¨Ó.×5Ñ5Ó7€FØ×$Ñ$ SÓ)€HØ�6ÒØ×ÑœgÕ&à×ÑœgÔ&Ü!Ð"=Ó>Ð>r   c                 ój  — dd l }t        |t        «      sJ ‚| j                  d«      }|d t	        t
        «       t
        k(  s
J d|z  «       ‚|t	        t
        «      d  }|j                  ||d«      j                  «       }| j                  |«       | j                  d«      }|t        k7  rt        d«      ‚y )Nr   rh  zmessage = %rrg  zdigest sent was rejected)ri  rL   rp   r‚   rq   rl  rm  rn  rx   ro  r   rq  s         r   r   r   %  sª   € ÛÜ�gœuÔ%Ð%Ð%Ø×#Ñ# CÓ(€GØ�?”Cœ	“NÐ#¤yÒ0ÐJ°.À7Ñ2JÓJÐ0Ø”cœ)“n�oÐ&€GØ�X‰X�g˜w¨Ó.×5Ñ5Ó7€FØ×Ñ˜&Ô!Ø×$Ñ$ SÓ)€HØ”7ÒÜ!Ð"<Ó=Ð=ð r   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚConnectionWrapperc                 ón   — || _         || _        || _        dD ]  }t        ||«      }t	        | ||«       Œ y )N)rN   rc   r�   r‚   rx   )Ú_connÚ_dumpsÚ_loadsrÛ   Úsetattr)rC   Úconnrz   ÚloadsÚattrr|   s         r   rD   zConnectionWrapper.__init__8  s:   € ØˆŒ
ØˆŒØˆŒÛKˆDÜ˜$ Ó%ˆCÜ�D˜$ Õ$ñ Lr   c                 ó\   — | j                  |«      }| j                  j                  |«       y r   )rz  ry  rx   )rC   r|   rK  s      r   r}   zConnectionWrapper.send@  s"   € Ø�K‰K˜ÓˆØ�
‰
×Ñ˜aÕ r   c                 óX   — | j                   j                  «       }| j                  |«      S r   )ry  r‚   r{  )rC   rK  s     r   rŒ   zConnectionWrapper.recvD  s"   € Ø�J‰J×!Ñ!Ó#ˆØ�{‰{˜1‹~Ðr   N)rE   rF   rG   rD   r}   rŒ   rH   r   r   rw  rw  6  s   „ ò%ò!ór   rw  c                 óX   — t         j                  | fd d d d«      }|j                  d«      S )Nr   úutf-8)Ú	xmlrpclibrz   Úencode)r|   Úos     r   Ú
_xml_dumpsr‡  I  s)   € Ü�‰˜˜  t¨T°1Ó5€AØ�8‰8�GÓÐr   c                 óX   — t         j                  | j                  d«      «      \  \  }}|S )Nrƒ  )r„  r~  Údecode)rK  r|   Úmethods      r   Ú
_xml_loadsr‹  N  s$   € Ü—_‘_ Q§X¡X¨gÓ%6Ó7�N�F€SˆFØ€Jr   c                   ó   — e Zd Zd„ Zy)ÚXmlListenerc                 ób   — dd l ma t        j	                  | «      }t        |t        t        «      S ©Nr   )Úxmlrpc.clientÚclientr„  r   rþ   rw  r‡  r‹  r{   s     r   rþ   zXmlListener.acceptU  s"   € å)Ü�o‰o˜dÓ#ˆÜ  ¤j´*Ó=Ð=r   N)rE   rF   rG   rþ   rH   r   r   r�  r�  S  s   „ ó>r   r�  c                  óJ   — dd l ma t        t	        | i |¤Žt
        t        «      S r�  )r�  r‘  r„  rw  r   r‡  r‹  )r=  Úkwdss     r   Ú	XmlClientr”  \  s   € å%ÜœV TÐ2¨TÑ2´JÄ
ÓKÐKr   c                 ó†  — t        | «      }g }|r±t        j                  |d|«      }|t        k(  r	 |S t        |cxk  rt        t        |«      z   k  rn n
|t        z  }nAt        |cxk  rt        t        |«      z   k  rn t        d«      ‚|t        z  }nt        d«      ‚|j                  ||   «       ||dz   d  }d}|rŒ±|S )NFzShould not get herer   r   )	Úlistr   r©   ÚWAIT_TIMEOUTr¬   rq   ÚWAIT_ABANDONED_0rÂ   rZ  )Úhandlesr   ÚLÚreadyÚress        r   Ú_exhaustive_waitr�  g  sË   € ô �‹MˆØˆÙÜ×0Ñ0°°E¸7ÓCˆCØ”lÒ"Øð ˆô  #Ô>¬¼¸A»Ñ(>Õ>Ø”}Ñ$‘Ü! SÔDÔ+;¼cÀ!»fÑ+DÔDô #Ð#8Ó9Ð9ð Ô'Ñ'‘ä"Ð#8Ó9Ð9Ø�L‰L˜˜3™Ô Ø�#˜‘'�(�ˆAØˆGò ð ˆr   c                 ó~  ‡— |€t         }n|dk  rd}nt        |dz  dz   «      }t        | «      } i Šg }t        «       }t        «       }	 | D ]v  }	 t	        |d«      }	 t        j                   |«       dd«      \  }}|t
        j                  k(  r!|j                  «       |‰|j                  <   Œd|j                  |«       d}Œx t!        ‰j#                  «       |«      }|D ]  }|j%                  «        Œ |D ]e  }	 |j'                  d«      \  }
}|t
        j(                  k7  sŒ,‰|j                     }|j                  |«       |dk(  sŒRt+        |d«      sŒ_d|_        Œg 	 |j/                  ˆfd„|D «       «       | D �cg c]	  }||v sŒ|‘Œ c}S # t        $ r }	|	j                  }|t        vr‚ Y d}	~	�Œ8d}	~	ww xY w# t        $ r |‰|j                  «       <   Y �Œ�w xY w# t        $ r}	|	j                  }|t        vr‚ Y d}	~	Œòd}	~	ww xY w# |D ]  }|j%                  «        Œ |D ]‘  }	 |j'                  d«      \  }
}n+# t        $ r}	|	j                  }|t        vr‚ Y d}	~	nd}	~	ww xY w|t
        j(                  k7  sŒX‰|j                     }|j                  |«       |dk(  sŒ~t+        |d«      sŒ‹d|_        Œ“ w xY wc c}w )	ú—
        Wait till an object in object_list is ready/readable.

        Returns list of those objects in object_list which are ready/readable.
        Nr   ra  g      à?rN   Trµ   c              3   ó(   •K  — | ]	  }‰|   –— Œ y ­wr   rH   )Ú.0rd  Úwaithandle_to_objs     €r   Ú	<genexpr>zwait.<locals>.<genexpr>¿  s   øè ø€ ÐI¹=°aÐ.¨qÕ1¹=ùs   ƒ)r«   Úintr–  ÚsetrÛ   r   r¹   r\   r¿   Ú_ready_errorsr¨   rZ  rª   ÚaddÚAttributeErrorrO   r�  Úkeysr­   r®   ÚERROR_OPERATION_ABORTEDr4   rµ   Úupdate)Úobject_listr   Úov_listÚready_objectsÚready_handlesr†  rN   r¯   r°   rÆ   r8  Úpr¢  s               @r   r   r   }  sÃ  ø€ ð ˆ?Ü‰GØ�qŠ[Ø‰Gä˜' D™.¨3Ñ.Ó/ˆGä˜;Ó'ˆØÐØˆÜ›ˆÜ›ˆð-	8Û �ð$Ü$ Q¨Ó1�Fð
"Ü")×"2Ñ"2±6³8¸QÀÓ"E™˜˜Cð
 œg×6Ñ6Ò6ØŸ™ rÔ*Ø67Ð)¨"¯(©(Ò3ð
 &×)Ñ)¨!Ô,Ø"#™ð+ !ô. -Ð->×-CÑ-CÓ-EÀwÓOˆMó �Ø—	‘	•ð ó �ðØ×3Ñ3°DÓ9‘F�A�sð
 œ'×9Ñ9Ó9Ø)¨"¯(©(Ñ3�AØ!×%Ñ% aÔ(Ø˜a“xô # 1Ð&:Õ;Ø37˜AÕ0ñ ð  	×ÑÓI¹=ÓIÔIÙ&Ó=™;�a¨!¨}Ò*<’˜;Ñ=Ð=øôM #ò "ØŸj™j˜Ø¤mÑ3Ø!õ 4ûð"ûô &ò 9Ø78Ð% a§k¡k£mÔ4ð9ûô< ò ØŸ*™*�CØ¤-Ñ/Øô 0ûðûó �Ø—	‘	•ð ó �ðØ×3Ñ3°DÓ9‘F�A‘søÜò ØŸ*™*�CØ¤-Ñ/Øô 0ûðúð œ'×9Ñ9Ó9Ø)¨"¯(©(Ñ3�AØ!×%Ñ% aÔ(Ø˜a“xô # 1Ð&:Õ;Ø37˜AÕ0ñ üò" >sµ   ÁH ÁF:ÁFÁ:A#H Ã:GÅ=	J:ÆJ:Æ	F7ÆF2Æ,H Æ2F7Æ7H Æ:GÇH ÇGÇH Ç	HÇ&H È HÈJ7È&H;È:J7È;	I#	ÉI	ÉJ7ÉI#	É#J7É:%J7Ê J7Ê-
J7r�   c                 óŠ  — |�t        |dz  «      }i }t        j                  «       }| D ]G  }|j                  |t        j                  «       t        |d«      r|||j                  «       <   ŒC|||<   ŒI g }|j                  |«      D ]:  \  }}|t        j                  z  rt        d|z  «      ‚|j                  ||   «       Œ< |S )Nra  rN   zinvalid file descriptor %i)
r¤  Úselectr�   ÚregisterÚPOLLINr4   rN   ÚPOLLNVALr-   rZ  )Úfdsr   Úfd_mapÚpollsterÚfdÚlsrª   s          r   rŽ   rŽ   Å  s¹   € ØÐ"Ü˜g¨™nÓ-�ØˆFÜ—{‘{“}ˆHÛ�Ø×!Ñ! "¤f§m¡mÔ4Ü˜2˜xÔ(Ø*,�F˜2Ÿ9™9›;Ò'à!#�F˜2’Jð ð ˆBØ%Ÿ]™]¨7Ö3‘	��EØœ6Ÿ?™?Ò*Ü$Ð%AÀBÑ%FÓGÐGØ—	‘	˜& ™*Õ%ð 4ð ˆIr   c                 ó8   — t        j                   | g g |«      d   S r�  )r²  )r¶  r   s     r   rŽ   rŽ   ×  s   € Ü—=‘=  b¨"¨gÓ6°qÑ9Ð9r   c                 ó  — |�|dk  rt        | d«      S t        «       |z   }	 	 t        | |«      S # t        t        t        j
                  f$ r(}|j                  t        j                  k7  r‚ Y d}~nd}~ww xY w|�t        «       z
  }Œf)rŸ  Nr   )rŽ   r   r\   rÙ   r5   rÚ   rØ   rÜ   )r¬  r   ÚdeadlinerÆ   s       r   r   r   Ú  s‹   € ð ÐØ˜!Š|Ü˜[¨!Ó,Ð,ä$›;¨Ñ0�ØðÜ˜[¨'Ó2Ð2øÜœW¤f§l¡lÐ3ò Ø—7‘7œeŸk™kÒ)Øô *ûðúð Ð"Ø"¤Y£[Ñ0�ð s   £/ ¯A5ÁA0Á0A5c                 ó   — | j                  «       }t        j                  |t        j                  t        j                  «      5 }ddlm} |j                  |«      }t        || j                  | j                  ffcd d d «       S # 1 sw Y   y xY w)Nr   )Úresource_sharer)rN   r5   Úfromfdr   ÚSOCK_STREAMr%   r¿  Ú	DupSocketÚrebuild_connectionrT   rU   )r}  rS   rK  r¿  Údss        r   Úreduce_connectionrÅ  ó  s`   € Ø—‘“ˆÜ�]‰]˜6¤6§>¡>´6×3EÑ3EÔFÈ!Ý)Ø ×*Ñ*¨1Ó-ˆBÜ%¨¨D¯M©M¸4¿=¹=Ð'IÐI÷ G×FÒFús   Á6BÂBc                 óN   — | j                  «       }t        t        |«      ||«      S r   )r  rÒ   )rÄ  rT   rU   rB   s       r   rÃ  rÃ  ú  s    € Ø�y‰y‹{ˆÜœ& ›,¨°(Ó;Ð;r   c                 ó  — | j                   rt        j                  nd| j                  rt        j                  ndz  }t        j                  | j                  «       |«      }t        || j                   | j                  ffS r�  )	rT   r   ÚFILE_GENERIC_READrU   ÚFILE_GENERIC_WRITEr   Ú	DupHandlerN   Úrebuild_pipe_connection)r}  r3  Údhs      r   Úreduce_pipe_connectionrÍ  ÿ  s^   € Ø04·²”7×,Ò,À1Ø15·²”7×-Ò-ÀAñGˆä× Ñ  §¡£°Ó7ˆÜ&¨¨T¯]©]¸D¿M¹MÐ(JÐJÐJr   c                 ó.   — t        t        | «      ||«      S r   )r¡   r  )rÌ  rT   rU   s      r   rË  rË    s   € Üœf R›j¨(°HÓ=Ð=r   c                 ó†   — t        j                  | j                  «       «      }t        || j                  | j
                  ffS r   )r   ÚDupFdrN   rÃ  rT   rU   )r}  Údfs     r   rÅ  rÅ  
  s0   € Ü�_‰_˜TŸ[™[›]Ó+ˆÜ! B¨¯©°t·}±}Ð#EÐEÐEr   c                 ó.   — t        t        | «      ||«      S r   )rÒ   r  )rÑ  rT   rU   s      r   rÃ  rÃ    s   € Üœ& ›* h°Ó9Ð9r   )NN)TFFr   )OrØ   r¶   r)   r2   r5   r²  ræ   r&   Ú	itertoolsr%   r   r   r   r   Ú_extr   Úcompatr	   r
   Útimer   r   r   r3   r¬   r˜  r—  r«   ÚImportErrorÚ__all__r4   Úis_pypyr$  ÚCONNECTION_TIMEOUTÚcountr,   rõ   Úfamiliesr   r    r0   r6   r=   r?   rJ   r¡   rÒ   r   r   r  r   rø   r  rö   ÚERROR_SEM_TIMEOUTÚERROR_PIPE_BUSYr  rk  rl  ro  rp  rÿ   r   rw  r‡  r‹  r�  r”  r�  rÀ   ÚERROR_NETNAME_DELETEDr¦  r   rŽ   rÅ  rÃ  r³  rÍ  rË  rH   r   r   Ú<module>rà     sÝ  ðó Û 	Û 	Û 
Û Û Û Û Û å Ý ç 1Ý ß ,Ý Ý %ð$Ýð ‡|�|�wÒØ×-Ñ-ˆØ"×3Ñ3Ðà×+Ñ+ˆØ×#Ñ#‰â
0€á
�#Ð*Ó
+€ð €àÐ à�	—‘Ó!€à€Øˆ;€á
ˆ6�9ÔØ€NØ��Ñ€Hà‡<�<�7ÒØ€NØ��Ñ€Hð -ó !òò0ò
FòF÷(ñ ÷_-ñ _-ñD ôV˜ô VôrO�ô O÷l5ñ 5ópò*"ð ‡<�<�7Òôó.(÷^/ñ /òd!ð ‡<�<�7Ò÷6,ñ 6,ðp &-×%>Ñ%>Ø%,×%<Ñ%<ð%>ó !ð> €à€	Ø
€Ø
€ò?ò
>÷"ñ ò&ò
ô
>�(ô >òLð ‡<�<�7Òòð( ×.Ñ.°×0MÑ0MÐN€MôC>ñN ˆv�vÔó	ò$	:ó1ð0 ‡<�<�7ÒòJò<ð €I×Ñ�zÐ#4Ô5òKò>à€I×Ñ�~Ð'=Õ>òFò:à€I×Ñ�zÐ#4Õ5øðc ò Ø
‡|�|�wÒØØƒGðús   ÁI ÉI6É5I6