Ë
    è×ïiœN  ã                   ó¢  — d Z dg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 ddlm	Z	 dd	lm
Z
 dd
lmZ  G d„ de
j                  e
j                  «      Z G d„ dee
j                   «      Z G d„ dee
j$                  «      Z G d„ de«      Z G d„ deee
j*                  «      Z G d„ deee
j*                  «      Z G d„ dej0                  «      Zy)z¦Event loop using a proactor and related classes.

A proactor is a "notify-on-completion" multiplexer.  Currently a
proactor is only implemented on Windows with IOCP.
ÚBaseProactorEventLoopé    Né   )Úbase_events)Ú	constants)Úfutures)Ússlproto)Ú
transports)Úloggerc                   óx   ‡ — e Zd ZdZ	 	 dˆ fd„	Zd„ Zd„ Zd„ Zej                  dk\  rd„ Z
dd„Zd	„ Zd
„ Zd„ Zˆ xZS )Ú_ProactorBasePipeTransportz*Base class for pipe and socket transports.c                 óÒ  •— t         ‰| �  ||«       | j                  |«       || _        || _        || _        d | _        d | _        d | _        d| _	        d| _
        d| _        d| _        | j
                  �| j
                  j                  «        | j                  j                  | j                  j                   | «       |�'| j                  j                  |j"                  d «       y y )Nr   F)ÚsuperÚ__init__Ú
_set_extraÚ_sockÚ	_protocolÚ_serverÚ_bufferÚ	_read_futÚ
_write_futÚ_pending_writeÚ
_conn_lostÚ_closingÚ_eof_writtenÚ_attachÚ_loopÚ	call_soonÚconnection_madeÚ_set_result_unless_cancelled©ÚselfÚloopÚsockÚprotocolÚwaiterÚextraÚserverÚ	__class__s          €úQ/var/www/html/aiagents/fe/lib/python3.12/site-packages/asyncio/proactor_events.pyr   z#_ProactorBasePipeTransport.__init__   sÃ   ø€ ä‰Ñ˜ Ô%Ø�‰˜ÔØˆŒ
Ø!ˆŒØˆŒØˆŒØˆŒØˆŒØˆÔØˆŒØˆŒØ!ˆÔØ�<‰<Ð#Ø�L‰L× Ñ Ô"Ø�
‰
×Ñ˜TŸ^™^×;Ñ;¸TÔBØÐà�J‰J× Ñ  ×!DÑ!DÀdÕKð ó    c                 óŠ  — | j                   j                  g}| j                  €|j                  d«       n| j                  r|j                  d«       | j                  �,|j                  d| j                  j                  «       z  «       | j                  �|j                  d| j                  z  «       | j                  �|j                  d| j                  z  «       | j                  r)t        | j                  «      }|j                  d|z  «       | j                  r|j                  d«       dd	j                  |«      z  S )
NÚclosedÚclosingzfd=%szread=%szwrite=%rzwrite_bufsize=%szEOF writtenz<%s>ú )r(   Ú__name__r   Úappendr   Úfilenor   r   r   Úlenr   Újoin)r!   ÚinfoÚbufsizes      r)   Ú__repr__z#_ProactorBasePipeTransport.__repr__.   sò   € Ø—‘×'Ñ'Ð(ˆØ�:‰:ÐØ�K‰K˜Õ!Ø�]Š]Ø�K‰K˜	Ô"Ø�:‰:Ð!Ø�K‰K˜ $§*¡*×"3Ñ"3Ó"5Ñ5Ô6Ø�>‰>Ð%Ø�K‰K˜	 D§N¡NÑ2Ô3Ø�?‰?Ð&Ø�K‰K˜
 T§_¡_Ñ4Ô5Ø�<Š<Ü˜$Ÿ,™,Ó'ˆGØ�K‰KÐ*¨WÑ4Ô5Ø×ÒØ�K‰K˜Ô&Ø˜Ÿ™ ›Ñ&Ð&r*   c                 ó"   — || j                   d<   y )NÚpipe)Ú_extra©r!   r#   s     r)   r   z%_ProactorBasePipeTransport._set_extraA   s   € Ø"ˆ�‰�FÒr*   c                 ó.  — | j                   ry d| _         | xj                  dz  c_        | j                  s2| j                  €&| j                  j                  | j                  d «       | j                  �"| j                  j                  «        d | _        y y )NTr   )	r   r   r   r   r   r   Ú_call_connection_lostr   Úcancel©r!   s    r)   Úclosez _ProactorBasePipeTransport.closeD   sq   € Ø�=Š=ØØˆŒØ�Š˜1Ñ�Ø�|Š| §¡Ð 7Ø�J‰J× Ñ  ×!;Ñ!;¸TÔBØ�>‰>Ð%Ø�N‰N×!Ñ!Ô#Ø!ˆD�Nð &r*   )é   é   c                 óx   — | j                   �.t        j                  d| z  t        «       | j	                  «        y y )Nzunclosed transport %r)r   ÚwarningsÚwarnÚResourceWarningr?   r>   s    r)   Ú__del__z"_ProactorBasePipeTransport.__del__S   s.   € Ø�z‰zÐ%Ü—‘Ð5¸Ñ<¼oÔNØ—
‘
•ð &r*   c                 ó  — t        |t        t        f«      r4| j                  j	                  «       rDt        j                  d| |d¬«       n*| j                  j                  ||| | j                  dœ«       | j                  |«       y )Nz%r: %sT©Úexc_info)ÚmessageÚ	exceptionÚ	transportr$   )
Ú
isinstanceÚBrokenPipeErrorÚConnectionResetErrorr   Ú	get_debugr
   ÚdebugÚcall_exception_handlerr   Ú_force_close)r!   ÚexcrJ   s      r)   Ú_fatal_errorz'_ProactorBasePipeTransport._fatal_errorX   sk   € Ü�cœOÔ-AÐBÔCØ�z‰z×#Ñ#Ô%Ü—‘˜X t¨W¸tÖDà�J‰J×-Ñ-Ø"Ø Ø!Ø ŸN™Nñ	/ô ð 	×Ñ˜#Õr*   c                 ór  — | j                   ry d| _         | xj                  dz  c_        | j                  r!| j                  j                  «        d | _        | j                  r!| j                  j                  «        d | _        d| _        d | _        | j                  j                  | j                  |«       y )NTr   r   )
r   r   r   r=   r   r   r   r   r   r<   )r!   rT   s     r)   rS   z'_ProactorBasePipeTransport._force_closee   s†   € Ø�=Š=ØØˆŒØ�Š˜1Ñ�Ø�?Š?Ø�O‰O×"Ñ"Ô$Ø"ˆDŒOØ�>Š>Ø�N‰N×!Ñ!Ô#Ø!ˆDŒNØˆÔØˆŒØ�
‰
×Ñ˜T×7Ñ7¸Õ=r*   c                 ó^  — 	 | j                   j                  |«       t        | j                  d«      r)| j                  j	                  t
        j                  «       | j                  j                  «        d | _        | j                  }|�|j                  «        d | _        y y # t        | j                  d«      r)| j                  j	                  t
        j                  «       | j                  j                  «        d | _        | j                  }|�|j                  «        d | _        w w xY w)NÚshutdown)
r   Úconnection_lostÚhasattrr   rX   ÚsocketÚ	SHUT_RDWRr?   r   Ú_detach)r!   rT   r'   s      r)   r<   z0_ProactorBasePipeTransport._call_connection_lostt   sã   € ð	$Ø�N‰N×*Ñ*¨3Ô/ô �t—z‘z :Ô.Ø—
‘
×#Ñ#¤F×$4Ñ$4Ô5Ø�J‰J×ÑÔØˆDŒJØ—\‘\ˆFØÐ!Ø—‘Ô Ø#�•ð "øô �t—z‘z :Ô.Ø—
‘
×#Ñ#¤F×$4Ñ$4Ô5Ø�J‰J×ÑÔØˆDŒJØ—\‘\ˆFØÐ!Ø—‘Ô Ø#�•ð "ús   ‚B$ Â$BD,c                 óf   — | j                   }| j                  �|t        | j                  «      z  }|S ©N)r   r   r2   )r!   Úsizes     r)   Úget_write_buffer_sizez0_ProactorBasePipeTransport.get_write_buffer_size…   s/   € Ø×"Ñ"ˆØ�<‰<Ð#Ø”C˜Ÿ™Ó%Ñ%ˆDØˆr*   ©NNN)zFatal error on pipe transport)r/   Ú
__module__Ú__qualname__Ú__doc__r   r6   r   r?   ÚsysÚversion_inforF   rU   rS   r<   ra   Ú__classcell__©r(   s   @r)   r   r      sJ   ø„ á4à48Ø$(õLò*'ò&#ò	"ð ×Ñ˜6Ò!ò	ó
ò>ò$ö"r*   r   c                   ó<   ‡ — e Zd ZdZ	 	 dˆ fd„	Zd„ Zd„ Zdd„Zˆ xZS )Ú_ProactorReadPipeTransportzTransport for read pipes.c                 ó†   •— t         ‰| �  ||||||«       d| _        | j                  j	                  | j
                  «       y ©NF)r   r   Ú_pausedr   r   Ú_loop_readingr    s          €r)   r   z#_ProactorReadPipeTransport.__init__�   s9   ø€ ä‰Ñ˜˜t X¨v°u¸fÔEØˆŒØ�
‰
×Ñ˜T×/Ñ/Õ0r*   c                 óÐ   — | j                   rt        d«      ‚| j                  rt        d«      ‚d| _        | j                  j	                  «       rt        j                  d| «       y y )Nz#Cannot pause_reading() when closingzAlready pausedTz%r pauses reading)r   ÚRuntimeErrorrn   r   rP   r
   rQ   r>   s    r)   Úpause_readingz(_ProactorReadPipeTransport.pause_reading–   sS   € Ø�=Š=ÜÐDÓEÐEØ�<Š<ÜÐ/Ó0Ð0ØˆŒØ�:‰:×ÑÔ!Ü�L‰LÐ,¨dÕ3ð "r*   c                 ó  — | j                   st        d«      ‚d| _         | j                  ry | j                  j	                  | j
                  | j                  «       | j                  j                  «       rt        j                  d| «       y y )Nz
Not pausedFz%r resumes reading)
rn   rq   r   r   r   ro   r   rP   r
   rQ   r>   s    r)   Úresume_readingz)_ProactorReadPipeTransport.resume_readingŸ   sg   € Ø�|Š|Ü˜|Ó,Ð,ØˆŒØ�=Š=ØØ�
‰
×Ñ˜T×/Ñ/°·±Ô@Ø�:‰:×ÑÔ!Ü�L‰LÐ-¨tÕ4ð "r*   c                 ó  — | j                   ry d }	 |�?| j                  |u s| j                  €| j                  sJ ‚d | _        |j                  «       }| j                  r‚d }	 |r| j                  j                  |«       y |�^| j                  j                  «       rt        j                  d| «       | j                  j                  «       }|s| j                  «        y y y |dk(  r€	 |r| j                  j                  |«       y |�^| j                  j                  «       rt        j                  d| «       | j                  j                  «       }|s| j                  «        y y y | j                  j                  j                  | j                  d«      | _        | j                  j                  | j                   «       |r| j                  j                  |«       y |�^| j                  j                  «       rt        j                  d| «       | j                  j                  «       }|s| j                  «        y y y # t"        $ rZ}| j                  s| j%                  |d«       n1| j                  j                  «       rt        j                  dd¬«       Y d }~ŒÝd }~wt&        $ r}| j)                  |«       Y d }~Œÿd }~wt*        $ r}| j%                  |d«       Y d }~�Œ#d }~wt,        j.                  $ r | j                  s‚ Y �ŒIw xY w# |r| j                  j                  |«       w |�^| j                  j                  «       rt        j                  d| «       | j                  j                  «       }|s| j                  «        w w w xY w)Nz%r received EOFr*   é   z"Fatal read error on pipe transportz*Read error on pipe transport while closingTrH   )rn   r   r   Úresultr   Údata_receivedr   rP   r
   rQ   Úeof_receivedr?   Ú	_proactorÚrecvr   Úadd_done_callbackro   ÚConnectionAbortedErrorrU   rO   rS   ÚOSErrorr   ÚCancelledError)r!   ÚfutÚdataÚ	keep_openrT   s        r)   ro   z(_ProactorReadPipeTransport._loop_reading©   sß  € Ø�<Š<ØØˆð)	!ØˆØ—~‘~¨Ñ,°·±Ð1GØ15·²ð@ð @à!%�”Ø—z‘z“|�à�}Š}à�Øñ0 Ø—‘×,Ñ,¨TÕ2ØÐ!Ø—:‘:×'Ñ'Ô)Ü—L‘LÐ!2°DÔ9Ø ŸN™N×7Ñ7Ó9�	Ù Ø—J‘J•Lð !ð	 "ð1 �sŠ{àñ( Ø—‘×,Ñ,¨TÕ2ØÐ!Ø—:‘:×'Ñ'Ô)Ü—L‘LÐ!2°DÔ9Ø ŸN™N×7Ñ7Ó9�	Ù Ø—J‘J•Lð !ð	 "ð' "ŸZ™Z×1Ñ1×6Ñ6°t·z±zÀ4ÓHˆDŒNð �N‰N×,Ñ,¨T×-?Ñ-?Ô@áØ—‘×,Ñ,¨TÕ2ØÐ!Ø—:‘:×'Ñ'Ô)Ü—L‘LÐ!2°DÔ9Ø ŸN™N×7Ñ7Ó9�	Ù Ø—J‘J•Lð !ð	 "øô% &ò 	,Ø—=’=Ø×!Ñ! #Ð'KÕLØ—‘×%Ñ%Ô'Ü—‘ÐIØ&*õ,ÿøä#ò 	#Ø×Ñ˜c×"Ñ"ûÜò 	IØ×Ñ˜cÐ#G×HÒHûÜ×%Ñ%ò 	Ø—=’=Øò !ð	ûñ Ø—‘×,Ñ,¨TÕ2ØÐ!Ø—:‘:×'Ñ'Ô)Ü—L‘LÐ!2°DÔ9Ø ŸN™N×7Ñ7Ó9�	Ù Ø—J‘J•Lð !ð	 "úsn   ‘AH> Ã H> Å%5H> Æ%L È>	L	ÉAJÊL ÊL	Ê(J>Ê9L Ê>L	Ë
K"ËL Ë"#L	ÌL ÌL	Ì	L ÌB Nrb   r_   )	r/   rc   rd   re   r   rr   rt   ro   rh   ri   s   @r)   rk   rk   Œ   s    ø„ á#à48Ø$(õ1ò4ò5÷.!r*   rk   c                   ó0   — e Zd ZdZd„ Zdd„Zd„ Zd„ Zd„ Zy)	Ú_ProactorBaseWritePipeTransportzTransport for write pipes.c                 ó\  — t        |t        t        t        f«      st	        dt        |«      «      ‚| j                  rt        d«      ‚|sy | j                  rH| j                  t        j                  k\  rt        j                  d«       | xj                  dz  c_        y | j                  €*| j                  �J ‚| j                  t        |«      ¬«       y | j                  s!t        |«      | _        | j!                  «        y | j                  j#                  |«       | j!                  «        y )Nz#data argument must be byte-ish (%r)zwrite_eof() already calledzsocket.send() raised exception.r   )r�   )rM   ÚbytesÚ	bytearrayÚ
memoryviewÚ	TypeErrorÚtyper   rq   r   r   Ú!LOG_THRESHOLD_FOR_CONNLOST_WRITESr
   Úwarningr   r   Ú_loop_writingÚ_maybe_pause_protocolÚextend)r!   r�   s     r)   Úwritez%_ProactorBaseWritePipeTransport.writeÞ   së   € Ü˜$¤¬	´:Ð >Ô?ÜÐAÜ  ›Jó(ð (à×ÒÜÐ;Ó<Ð<áØà�?Š?Ø�‰¤)×"MÑ"MÒMÜ—‘Ð@ÔAØ�OŠO˜qÑ �OØð �?‰?Ð"Ø—<‘<Ð'Ð'Ð'à×Ñ¤E¨$£KÐÕ0Ø—’ä$ T›?ˆDŒLØ×&Ñ&Õ(ð �L‰L×Ñ Ô%Ø×&Ñ&Õ(r*   Nc                 ó®  — 	 || j                   u sJ ‚d | _         d| _        |r|j                  «        |€| j                  }d | _        |sx| j                  r&| j
                  j                  | j                  d «       | j                  r)| j                  j                  t        j                  «       | j                  «        y | j
                  j                  j                  | j                  |«      | _         | j                   j!                  «       sW| j                  dk(  sJ ‚t#        |«      | _        | j                   j%                  | j&                  «       | j)                  «        y | j                   j%                  | j&                  «       y # t*        $ r}| j-                  |«       Y d }~y d }~wt.        $ r}| j1                  |d«       Y d }~y d }~ww xY w)Nr   z#Fatal write error on pipe transport)r   r   rw   r   r   r   r   r<   r   r   rX   r[   ÚSHUT_WRÚ_maybe_resume_protocolrz   ÚsendÚdoner2   r|   r�   rŽ   rO   rS   r~   rU   )r!   Úfr�   rT   s       r)   r�   z-_ProactorBaseWritePipeTransport._loop_writing  si  € ð 	JØ˜Ÿ™Ñ'Ð'Ð'Ø"ˆDŒOØ"#ˆDÔÙØ—‘”
Øˆ|Ø—|‘|�Ø#�”ÙØ—=’=Ø—J‘J×(Ñ(¨×)CÑ)CÀTÔJØ×$Ò$Ø—J‘J×'Ñ'¬¯©Ô7ð ×+Ñ+Õ-à"&§*¡*×"6Ñ"6×";Ñ";¸D¿J¹JÈÓ"M�”Ø—‘×+Ñ+Ô-Ø×.Ñ.°!Ò3Ð3Ð3Ü*-¨d«)�DÔ'Ø—O‘O×5Ñ5°d×6HÑ6HÔIØ×.Ñ.Õ0à—O‘O×5Ñ5°d×6HÑ6HÕIøÜ#ò 	#Ø×Ñ˜c×"Ñ"ûÜò 	JØ×Ñ˜cÐ#H×IÑIûð	Jús1   ‚B>F ÃB%F Å'%F Æ	GÆF,Æ,GÆ8GÇGc                  ó   — y©NT© r>   s    r)   Úcan_write_eofz-_ProactorBaseWritePipeTransport.can_write_eof$  ó   € Ør*   c                 ó$   — | j                  «        y r_   )r?   r>   s    r)   Ú	write_eofz)_ProactorBaseWritePipeTransport.write_eof'  s   € Ø�
‰
�r*   c                 ó&   — | j                  d «       y r_   )rS   r>   s    r)   Úabortz%_ProactorBaseWritePipeTransport.abort*  s   € Ø×Ñ˜$Õr*   ©NN)	r/   rc   rd   re   r�   r�   rš   r�   rŸ   r™   r*   r)   r„   r„   Ú   s!   „ á$ò!)óF!JòFòó r*   r„   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )Ú_ProactorWritePipeTransportc                 óØ   •— t        ‰| �  |i |¤Ž | j                  j                  j	                  | j
                  d«      | _        | j                  j                  | j                  «       y )Né   )	r   r   r   rz   r{   r   r   r|   Ú_pipe_closed)r!   ÚargsÚkwr(   s      €r)   r   z$_ProactorWritePipeTransport.__init__/  sO   ø€ Ü‰Ñ˜$Ð% "Ò%ØŸ™×-Ñ-×2Ñ2°4·:±:¸rÓBˆŒØ�‰×(Ñ(¨×):Ñ):Õ;r*   c                 óB  — |j                  «       ry |j                  «       dk(  sJ ‚| j                  r| j                  �J ‚y || j                  u sJ || j                  f«       ‚d | _        | j                  �| j                  t        «       «       y | j                  «        y )Nr*   )Ú	cancelledrw   r   r   r   rS   rN   r?   )r!   r€   s     r)   r¥   z(_ProactorWritePipeTransport._pipe_closed4  s‡   € Ø�=‰=Œ?àØ�z‰z‹|˜sÒ"Ð"Ð"Ø�=Š=Ø—>‘>Ð)Ð)Ð)ØØ�d—n‘nÑ$Ð; s¨D¯N©NÐ&;Ó;Ð$ØˆŒØ�?‰?Ð&Ø×ÑœoÓ/Õ0à�J‰J�Lr*   )r/   rc   rd   r   r¥   rh   ri   s   @r)   r¢   r¢   .  s   ø„ ô<ö
r*   r¢   c                   ó   — e Zd ZdZd„ Zd„ Zy)Ú_ProactorDuplexPipeTransportzTransport for duplex pipes.c                  ó   — yrm   r™   r>   s    r)   rš   z*_ProactorDuplexPipeTransport.can_write_eofI  s   € Ør*   c                 ó   — t         ‚r_   ©ÚNotImplementedErrorr>   s    r)   r�   z&_ProactorDuplexPipeTransport.write_eofL  ó   € Ü!Ð!r*   N)r/   rc   rd   re   rš   r�   r™   r*   r)   r«   r«   D  s   „ ñ &òó"r*   r«   c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)Ú_ProactorSocketTransportz Transport for connected sockets.c                 ó   — || j                   d<   	 |j                  «       | j                   d<   d| j                   vr	 |j                  «       | j                   d<   y y # t        j                  t        f$ r5 | j
                  j                  «       rt        j                  d|d¬«       Y Œ{w xY w# t        j                  t        f$ r7 | j
                  j                  «       rt        j                  d|d¬«       Y y Y y w xY w)Nr[   Úsocknamezgetsockname() failed on %rTrH   Úpeernamezgetpeername() failed on %r)
r9   Úgetsocknamer[   ÚerrorÚAttributeErrorr   rP   r
   rŒ   Úgetpeernamer:   s     r)   r   z#_ProactorSocketTransport._set_extraU  sÜ   € Ø $ˆ�‰�HÑð	2Ø&*×&6Ñ&6Ó&8ˆD�K‰K˜
Ñ#ð
 ˜TŸ[™[Ñ(ð8Ø*.×*:Ñ*:Ó*<�—‘˜JÒ'ð )øô	 —‘œnÐ-ò 	2Ø�z‰z×#Ñ#Ô%Ü—‘Ð;Ø!¨Dõ2ùð	2ûô —L‘L¤.Ð1ò 8Ø—:‘:×'Ñ'Ô)Ü—N‘NÐ#?Ø#'°$÷8ñ *ð8ús$   ‘A ½B- ÁAB*Â)B*Â-AC=Ã<C=c                  ó   — yr˜   r™   r>   s    r)   rš   z&_ProactorSocketTransport.can_write_eofe  r›   r*   c                 ó°   — | j                   s| j                  ry d| _        | j                  €*| j                  j	                  t
        j                  «       y y r˜   )r   r   r   r   rX   r[   r’   r>   s    r)   r�   z"_ProactorSocketTransport.write_eofh  sA   € Ø�=Š=˜D×-Ò-ØØ ˆÔØ�?‰?Ð"Ø�J‰J×Ñ¤§¡Õ/ð #r*   N)r/   rc   rd   re   r   rš   r�   r™   r*   r)   r²   r²   P  s   „ ñ +ò8ò ó0r*   r²   c                   óÀ   ‡ — e Zd Zˆ fd„Z	 	 dd„Zddddddœd„Z	 	 dd„Z	 	 dd„Z	 	 dd	„Zˆ fd
„Z	d„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zd„ Z	 dd„Zd„ Zd„ Zd„ Zˆ xZS )r   c                 óð   •— t         ‰| �  «        t        j                  d|j                  j
                  «       || _        || _        d | _        i | _	        |j                  | «       | j                  «        y )NzUsing proactor: %s)r   r   r
   rQ   r(   r/   rz   Ú	_selectorÚ_self_reading_futureÚ_accept_futuresÚset_loopÚ_make_self_pipe)r!   Úproactorr(   s     €r)   r   zBaseProactorEventLoop.__init__r  sa   ø€ Ü‰ÑÔÜ�‰Ð)¨8×+=Ñ+=×+FÑ+FÔGØ!ˆŒØ!ˆŒØ$(ˆÔ!Ø!ˆÔØ×Ñ˜$ÔØ×ÑÕr*   Nc                 ó"   — t        | |||||«      S r_   )r²   )r!   r#   r$   r%   r&   r'   s         r)   Ú_make_socket_transportz,BaseProactorEventLoop._make_socket_transport|  s   € ä'¨¨d°H¸fØ(-¨vó7ð 	7r*   F)Úserver_sideÚserver_hostnamer&   r'   c                ó¬   — t        j                  «       st        d«      ‚t        j                  | |||||«      }	t	        | ||	||¬«       |	j
                  S )NzOProactor event loop requires Python 3.5 or newer (ssl.MemoryBIO) to support SSL©r&   r'   )r   Ú_is_sslproto_availabler¯   ÚSSLProtocolr²   Ú_app_transport)
r!   Úrawsockr$   Ú
sslcontextr%   rÆ   rÇ   r&   r'   Ússl_protocols
             r)   Ú_make_ssl_transportz)BaseProactorEventLoop._make_ssl_transport�  sa   € ô ×.Ñ.Ô0Ü%ð ',ó -ð -ô  ×+Ñ+¨D°(¸JÈØ,7¸óJˆä   w°Ø',°Võ	=à×*Ñ*Ð*r*   c                 ó    — t        | ||||«      S r_   )r«   ©r!   r#   r$   r%   r&   s        r)   Ú_make_duplex_pipe_transportz1BaseProactorEventLoop._make_duplex_pipe_transport�  s   € ä+¨DØ,0°(¸FÀEóKð 	Kr*   c                 ó    — t        | ||||«      S r_   )rk   rÒ   s        r)   Ú_make_read_pipe_transportz/BaseProactorEventLoop._make_read_pipe_transport”  s   € ä)¨$°°hÀÈÓNÐNr*   c                 ó    — t        | ||||«      S r_   )r¢   rÒ   s        r)   Ú_make_write_pipe_transportz0BaseProactorEventLoop._make_write_pipe_transport˜  s   € ô +¨4Ø+/°¸6À5óJð 	Jr*   c                 ó
  •— | j                  «       rt        d«      ‚| j                  «       ry | j                  «        | j	                  «        | j
                  j                  «        d | _        d | _        t        ‰| �  «        y )Nz!Cannot close a running event loop)	Ú
is_runningrq   Ú	is_closedÚ_stop_accept_futuresÚ_close_self_piperz   r?   r¾   r   )r!   r(   s    €r)   r?   zBaseProactorEventLoop.closež  si   ø€ Ø�?‰?ÔÜÐBÓCÐCØ�>‰>ÔØð
 	×!Ñ!Ô#Ø×ÑÔØ�‰×ÑÔØˆŒØˆŒô 	‰‰�r*   c                 ó:   — | j                   j                  ||«      S r_   )rz   r{   )r!   r#   Úns      r)   Ú	sock_recvzBaseProactorEventLoop.sock_recv°  s   € Ø�~‰~×"Ñ" 4¨Ó+Ð+r*   c                 ó:   — | j                   j                  ||«      S r_   )rz   r”   )r!   r#   r�   s      r)   Úsock_sendallz"BaseProactorEventLoop.sock_sendall³  s   € Ø�~‰~×"Ñ" 4¨Ó.Ð.r*   c                 óþ   — 	 | j                   rt        j                  ||«       | j                  j	                  ||«      S # t
        $ r3}t        j                  | ¬«      }|j                  |«       |cY d }~S d }~ww xY w)N)r"   )	Ú_debugr   Ú_check_resolved_addressrz   ÚconnectÚ
ValueErrorr   ÚFutureÚset_exception)r!   r#   ÚaddressÚerrr€   s        r)   Úsock_connectz"BaseProactorEventLoop.sock_connect¶  sj   € ð	9Ø�{Š{Ü×3Ñ3°D¸'ÔBð —>‘>×)Ñ)¨$°Ó8Ð8øô ò 	Ü—.‘. dÔ+ˆCØ×Ñ˜cÔ"Ø�Jûð	ús   ‚"A  Á 	A<Á	(A7Á1A<Á7A<c                 ó8   — | j                   j                  |«      S r_   )rz   Úacceptr:   s     r)   Úsock_acceptz!BaseProactorEventLoop.sock_acceptÁ  s   € Ø�~‰~×$Ñ$ TÓ*Ð*r*   c                 ó   — t         ‚r_   r®   r>   s    r)   Ú_socketpairz!BaseProactorEventLoop._socketpairÄ  r°   r*   c                 ó  — | j                   �!| j                   j                  «        d | _         | j                  j                  «        d | _        | j                  j                  «        d | _        | xj
                  dz  c_        y )Nr   )r¿   r=   Ú_ssockr?   Ú_csockÚ_internal_fdsr>   s    r)   rÜ   z&BaseProactorEventLoop._close_self_pipeÇ  sg   € Ø×$Ñ$Ð0Ø×%Ñ%×,Ñ,Ô.Ø(,ˆDÔ%Ø�‰×ÑÔØˆŒØ�‰×ÑÔØˆŒØ×Ò˜aÑÖr*   c                 ó
  — | j                  «       \  | _        | _        | j                  j                  d«       | j                  j                  d«       | xj                  dz  c_        | j                  | j                  «       y )NFr   )rð   rò   ró   Úsetblockingrô   r   Ú_loop_self_readingr>   s    r)   rÂ   z%BaseProactorEventLoop._make_self_pipeÑ  s`   € à#'×#3Ñ#3Ó#5Ñ ˆŒ�T”[Ø�‰×Ñ Ô&Ø�‰×Ñ Ô&Ø×Ò˜aÑÕØ�‰�t×.Ñ.Õ/r*   c                 ó8  — 	 |�|j                  «        | j                  j                  | j                  d«      }|| _        |j                  | j                  «       y # t        j                  $ r Y y t        $ r}| j                  d|| dœ«       Y d }~y d }~ww xY w)Nrv   z.Error on reading from the event loop self pipe)rJ   rK   r"   )rw   rz   r{   rò   r¿   r|   r÷   r   r   Ú	ExceptionrR   )r!   r–   rT   s      r)   r÷   z(BaseProactorEventLoop._loop_self_readingÙ  s‘   € ð	9Øˆ}Ø—‘”
Ø—‘×#Ñ# D§K¡K°Ó6ˆAð )*ˆDÔ%Ø×Ñ × 7Ñ 7Õ8øô ×%Ñ%ò 	áÜò 	Ø×'Ñ'ØKØ Øñ)÷ ñ ûð	ús   ‚8A ÁBÁ2BÁ:BÂBc                 ó:   — | j                   j                  d«       y )Nó    )ró   r”   r>   s    r)   Ú_write_to_selfz$BaseProactorEventLoop._write_to_selfë  s   € Ø�‰×Ñ˜Õr*   c                 óH   ‡ ‡‡‡‡‡— dˆˆˆ ˆˆˆfd„	Š‰ j                  ‰«       y )Nc                 óä  •— 	 | �q| j                  «       \  }}‰j                  rt        j                  d‰||«        ‰«       }‰
�‰j	                  ||‰
dd|i‰¬«       n‰j                  ||d|i‰¬«       ‰j                  «       ry ‰j                  j                  ‰	«      } | ‰j                  ‰	j                  «       <   | j                  ‰«       y # t        $ rq}‰	j                  «       dk7  r&‰j                  d|‰	dœ«       ‰	j                  «        n.‰j                  rt        j                  d	‰	d¬
«       Y d }~y Y d }~y Y d }~y d }~wt        j                   $ r ‰	j                  «        Y y w xY w)Nz#%r got a new connection from %r: %rTrµ   )rÆ   r&   r'   rÉ   éÿÿÿÿzAccept failed on a socket)rJ   rK   r[   zAccept failed on socket %rrH   )rw   rã   r
   rQ   rÐ   rÅ   rÚ   rz   rí   rÀ   r1   r|   r~   rR   r?   r   r   )r–   ÚconnÚaddrr$   rT   r"   Úprotocol_factoryr!   r'   r#   rÎ   s        €€€€€€r)   r"   z2BaseProactorEventLoop._start_serving.<locals>.loopñ  sf  ø€ ð!*Ø�=Ø!"§¡£‘J�D˜$Ø—{’{ÜŸ™Ð%JØ%+¨T°4ô9á/Ó1�HØ!Ð-Ø×0Ñ0Ø  (¨JÀDØ#-¨tÐ"4¸Vð 1õ Eð ×3Ñ3Ø  (Ø#-¨tÐ"4¸Vð 4ô Eð —>‘>Ô#ØØ—N‘N×)Ñ)¨$Ó/�ð 78�×$Ñ$ T§[¡[£]Ñ3Ø×#Ñ# DÕ)øô ò 
6Ø—;‘;“= BÒ&Ø×/Ñ/Ø#>Ø%(Ø"&ñ1ô ð
 —J‘J•LØ—[’[Ü—L‘LÐ!=Ø!%°÷6ò 6ô !ô !ûô ×)Ñ)ò Ø—
‘
–ðús%   ƒBC ÂC Ã	E/ÃAEÅ&E/Å.E/r_   )r   )r!   r  r#   rÎ   r'   r"   s   `````@r)   Ú_start_servingz$BaseProactorEventLoop._start_servingî  s   ý€ ÷"	*ò "	*ðH 	�‰�tÕr*   c                  ó   — y r_   r™   )r!   Ú
event_lists     r)   Ú_process_eventsz%BaseProactorEventLoop._process_events  s   € àr*   c                 ó–   — | j                   j                  «       D ]  }|j                  «        Œ | j                   j                  «        y r_   )rÀ   Úvaluesr=   Úclear)r!   Úfutures     r)   rÛ   z*BaseProactorEventLoop._stop_accept_futures  s;   € Ø×*Ñ*×1Ñ1Ó3ò 	ˆFØ�M‰M�Oð	à×Ñ×"Ñ"Õ$r*   c                 óz   — | j                  «        | j                  j                  |«       |j                  «        y r_   )rÛ   rz   Ú_stop_servingr?   r:   s     r)   r  z#BaseProactorEventLoop._stop_serving   s)   € Ø×!Ñ!Ô#Ø�‰×$Ñ$ TÔ*Ø�
‰
�r*   rb   r_   r    )r/   rc   rd   r   rÅ   rÐ   rÓ   rÕ   r×   r?   rß   rá   rë   rî   rð   rÜ   rÂ   r÷   rü   r  r  rÛ   r  rh   ri   s   @r)   r   r   p  s¦   ø„ ôð =AØ26ó7ð
+Ø+0À$Ø"&¨tô+ð BFØ*.óKð
 @DØ(,óOð AEØ)-óJôò$,ò/ò	9ò+ò"ò ò0ó9ò$ ð 04ó'òRò%ö
r*   )re   Ú__all__r[   rf   rC   Ú r   r   r   r   r	   Úlogr
   Ú_FlowControlMixinÚBaseTransportr   ÚReadTransportrk   ÚWriteTransportr„   r¢   Ú	Transportr«   r²   ÚBaseEventLoopr   r™   r*   r)   ú<module>r     sÓ   ðñð #Ð
#€ã Û 
Û å Ý Ý Ý Ý Ý ôt ×!=Ñ!=Ø!+×!9Ñ!9ôtônK!Ð!;Ø!+×!9Ñ!9ôK!ô\Q Ð&@Ø&0×&?Ñ&?ôQ ôhÐ"Aô ô,	"Ð#=Ø#BØ#-×#7Ñ#7ô	"ô0Ð9Ø>Ø)×3Ñ3ô0ô@s˜K×5Ñ5õ sr*   