§
    ç·jA…  ã                   ó¢  — d Z ddlZej        dk    r ed¦  «        ‚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 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 dZej        Zej        ZdZdZdZdZ G d„ dej        ¦  «        Z  G d„ dej        ¦  «        Z! G d„ de!¦  «        Z" G d„ de!¦  «        Z# G d„ de$¦  «        Z% G d„ dej&        ¦  «        Z' G d „ d!ej(        ¦  «        Z) G d"„ d#¦  «        Z* G d$„ d%ej+        ¦  «        Z,e'Z- G d&„ d'ej.        ¦  «        Z/ G d(„ d)ej.        ¦  «        Z0e0Z1dS )*z.Selector and proactor event loops for Windows.é    NÚwin32z
win32 onlyé   )Úevents)Úbase_subprocess)Úfutures)Ú
exceptions)Úproactor_events)Úselector_events)Útasks)Úwindows_utils)Úlogger)ÚSelectorEventLoopÚProactorEventLoopÚIocpProactorÚDefaultEventLoopPolicyÚWindowsSelectorEventLoopPolicyÚWindowsProactorEventLoopPolicyiÉ  iÔ  gü©ñÒMbP?gš™™™™™¹?c                   óX   ‡ — e Zd ZdZddœˆ fd„
Zˆ fd„Zd„ Zd
ˆ fd„	Zˆ fd„Zˆ fd	„Z	ˆ xZ
S )Ú_OverlappedFuturez†Subclass of Future which represents an overlapped operation.

    Cancelling it will immediately cancel the overlapped operation.
    N©Úloopc                óx   •— t          ¦   «                              |¬¦  «         | j        r| j        d= || _        d S ©Nr   éÿÿÿÿ)ÚsuperÚ__init__Ú_source_tracebackÚ_ov)ÚselfÚovr   Ú	__class__s      €ú-/usr/lib/python3.11/asyncio/windows_events.pyr   z_OverlappedFuture.__init__6   s?   ø€ Ý‰Œ×Ò˜dÐÑ#Ô#Ð#ØÔ!ð 	+ØÔ& rÐ*ØˆŒˆˆó    c                 óÆ   •— t          ¦   «                              ¦   «         }| j        �8| j        j        rdnd}|                     dd|› d| j        j        d›d�¦  «         |S )NÚpendingÚ	completedr   zoverlapped=<z, ú#xú>)r   Ú
_repr_infor   r%   ÚinsertÚaddress©r   ÚinfoÚstater!   s      €r"   r)   z_OverlappedFuture._repr_info<   sh   ø€ Ý‰wŒw×!Ò!Ñ#Ô#ˆØŒ8ÐØ!%¤Ô!1ÐB�I�I°{ˆEØ�KŠK˜ÐI¨%ÐIÐI°4´8Ô3CÐIÐIÐIÐIÑJÔJÐJØˆr#   c                 óì   — | j         €d S 	 | j                              ¦   «          nH# t          $ r;}d|| dœ}| j        r
| j        |d<   | j                             |¦  «         Y d }~nd }~ww xY wd | _         d S )Nz&Cancelling an overlapped future failed©ÚmessageÚ	exceptionÚfutureÚsource_traceback)r   ÚcancelÚOSErrorr   Ú_loopÚcall_exception_handler)r   ÚexcÚcontexts      r"   Ú_cancel_overlappedz$_OverlappedFuture._cancel_overlappedC   s«   € ØŒ8ÐØˆFð
	7ØŒH�OŠOÑÔÐÐøÝð 	7ð 	7ð 	7àCØ Øðð ˆGð
 Ô%ð EØ.2Ô.D�Ð*Ñ+ØŒJ×-Ò-¨gÑ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6øøøøð	7øøøð ˆŒˆˆs   ‹% ¥
A*¯1A%Á%A*c                 óp   •— |                       ¦   «          t          ¦   «                              |¬¦  «        S ©N)Úmsg)r;   r   r5   ©r   r>   r!   s     €r"   r5   z_OverlappedFuture.cancelS   s-   ø€ Ø×ÒÑ!Ô!Ð!Ý‰wŒw�~Š~ #ˆ~Ñ&Ô&Ð&r#   c                 ór   •— t          ¦   «                              |¦  «         |                      ¦   «          d S ©N)r   Úset_exceptionr;   ©r   r2   r!   s     €r"   rB   z_OverlappedFuture.set_exceptionW   s3   ø€ Ý‰Œ×Ò˜iÑ(Ô(Ð(Ø×ÒÑ!Ô!Ð!Ð!Ð!r#   c                 óX   •— t          ¦   «                              |¦  «         d | _        d S rA   )r   Ú
set_resultr   ©r   Úresultr!   s     €r"   rE   z_OverlappedFuture.set_result[   s&   ø€ Ý‰Œ×Ò˜6Ñ"Ô"Ð"ØˆŒˆˆr#   rA   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r)   r;   r5   rB   rE   Ú__classcell__©r!   s   @r"   r   r   0   sÉ   ø€ € € € € ðð ð
 $(ð ð ð ð ð ð ð ðð ð ð ð ðð ð ð 'ð 'ð 'ð 'ð 'ð 'ð"ð "ð "ð "ð "ðð ð ð ð ð ð ð ð r#   r   c                   ód   ‡ — e Zd ZdZddœˆ fd„
Zd„ Zˆ fd„Zd„ Zd„ Zdˆ fd	„	Z	ˆ fd
„Z
ˆ fd„Zˆ xZS )Ú_BaseWaitHandleFuturez2Subclass of Future which represents a wait handle.Nr   c                ó¢   •— t          ¦   «                              |¬¦  «         | j        r| j        d= || _        || _        || _        d| _        d S )Nr   r   T)r   r   r   r   Ú_handleÚ_wait_handleÚ_registered)r   r    ÚhandleÚwait_handler   r!   s        €r"   r   z_BaseWaitHandleFuture.__init__c   s\   ø€ Ý‰Œ×Ò˜dÐÑ#Ô#Ð#ØÔ!ð 	+ØÔ& rÐ*ð ˆŒØˆŒØ'ˆÔð  ˆÔÐÐr#   c                 óR   — t          j        | j        d¦  «        t           j        k    S ©Nr   )Ú_winapiÚWaitForSingleObjectrQ   ÚWAIT_OBJECT_0©r   s    r"   Ú_pollz_BaseWaitHandleFuture._pollq   s$   € åÔ+¨D¬L¸!Ñ<Ô<ÝÔ%ò&ð 	'r#   c                 ó6  •— t          ¦   «                              ¦   «         }|                     d| j        d›�¦  «         | j        �-|                      ¦   «         rdnd}|                     |¦  «         | j        �|                     d| j        d›�¦  «         |S )Nzhandle=r'   ÚsignaledÚwaitingzwait_handle=)r   r)   ÚappendrQ   r\   rR   r,   s      €r"   r)   z _BaseWaitHandleFuture._repr_infov   s—   ø€ Ý‰wŒw×!Ò!Ñ#Ô#ˆØ�ŠÐ/˜dœlÐ/Ð/Ð/Ñ0Ô0Ð0ØŒ<Ð#Ø"&§*¢*¡,¤,Ð=�J�J°IˆEØ�KŠK˜ÑÔÐØÔÐ(Ø�KŠKÐ= tÔ'8Ð=Ð=Ð=Ñ>Ô>Ð>Øˆr#   c                 ó   — d | _         d S rA   )r   )r   Úfuts     r"   Ú_unregister_wait_cbz)_BaseWaitHandleFuture._unregister_wait_cb€   s   € ð ˆŒˆˆr#   c                 ó^  — | j         sd S d| _         | j        }d | _        	 t          j        |¦  «         nc# t          $ rV}|j        t          j        k    r7d|| dœ}| j        r
| j        |d<   | j         	                    |¦  «         Y d }~d S Y d }~nd }~ww xY w|  
                    d ¦  «         d S ©NFz$Failed to unregister the wait handler0   r4   )rS   rR   Ú_overlappedÚUnregisterWaitr6   ÚwinerrorÚERROR_IO_PENDINGr   r7   r8   rc   ©r   rU   r9   r:   s       r"   Ú_unregister_waitz&_BaseWaitHandleFuture._unregister_wait…   só   € ØÔð 	ØˆFØ ˆÔàÔ'ˆØ ˆÔð	ÝÔ& {Ñ3Ô3Ð3Ð3øÝð 
	ð 
	ð 
	ØŒ|�{Ô;Ò;Ð;àEØ!$Ø"ðð �ð
 Ô)ð IØ26Ô2H�GÐ.Ñ/Ø”
×1Ò1°'Ñ:Ô:Ð:Ø�����ð <Ð;Ð;Ð;Ð;øøøøð
	øøøð 	× Ò  Ñ&Ô&Ð&Ð&Ð&s    5 µ
B¿ABÂBc                 óp   •— |                       ¦   «          t          ¦   «                              |¬¦  «        S r=   )rk   r   r5   r?   s     €r"   r5   z_BaseWaitHandleFuture.cancel�   s-   ø€ Ø×ÒÑÔÐÝ‰wŒw�~Š~ #ˆ~Ñ&Ô&Ð&r#   c                 ór   •— |                       ¦   «          t          ¦   «                              |¦  «         d S rA   )rk   r   rB   rC   s     €r"   rB   z#_BaseWaitHandleFuture.set_exception¡   s3   ø€ Ø×ÒÑÔÐÝ‰Œ×Ò˜iÑ(Ô(Ð(Ð(Ð(r#   c                 ór   •— |                       ¦   «          t          ¦   «                              |¦  «         d S rA   )rk   r   rE   rF   s     €r"   rE   z _BaseWaitHandleFuture.set_result¥   s3   ø€ Ø×ÒÑÔÐÝ‰Œ×Ò˜6Ñ"Ô"Ð"Ð"Ð"r#   rA   )rH   rI   rJ   rK   r   r\   r)   rc   rk   r5   rB   rE   rL   rM   s   @r"   rO   rO   `   sá   ø€ € € € € Ø<Ð<à8<ð  ð  ð  ð  ð  ð  ð  ð'ð 'ð 'ð
ð ð ð ð ðð ð ð
'ð 'ð 'ð0'ð 'ð 'ð 'ð 'ð 'ð)ð )ð )ð )ð )ð#ð #ð #ð #ð #ð #ð #ð #ð #r#   rO   c                   óB   ‡ — e Zd ZdZddœˆ fd„
Zd„ Zˆ fd„Zˆ fd„Zˆ xZS )Ú_WaitCancelFuturezoSubclass of Future which represents a wait for the cancellation of a
    _WaitHandleFuture using an event.
    Nr   c                ó`   •— t          ¦   «                              ||||¬¦  «         d | _        d S )Nr   )r   r   Ú_done_callback)r   r    ÚeventrU   r   r!   s        €r"   r   z_WaitCancelFuture.__init__¯   s2   ø€ Ý‰Œ×Ò˜˜U K°dÐÑ;Ô;Ð;à"ˆÔÐÐr#   c                 ó    — t          d¦  «        ‚)Nz'_WaitCancelFuture must not be cancelled)ÚRuntimeErrorr[   s    r"   r5   z_WaitCancelFuture.cancel´   s   € ÝÐDÑEÔEÐEr#   c                 ó†   •— t          ¦   «                              |¦  «         | j        �|                      | ¦  «         d S d S rA   )r   rE   rr   rF   s     €r"   rE   z_WaitCancelFuture.set_result·   sF   ø€ Ý‰Œ×Ò˜6Ñ"Ô"Ð"ØÔÐ*Ø×Ò Ñ%Ô%Ð%Ð%Ð%ð +Ð*r#   c                 ó†   •— t          ¦   «                              |¦  «         | j        �|                      | ¦  «         d S d S rA   )r   rB   rr   rC   s     €r"   rB   z_WaitCancelFuture.set_exception¼   sF   ø€ Ý‰Œ×Ò˜iÑ(Ô(Ð(ØÔÐ*Ø×Ò Ñ%Ô%Ð%Ð%Ð%ð +Ð*r#   )	rH   rI   rJ   rK   r   r5   rE   rB   rL   rM   s   @r"   rp   rp   ª   s•   ø€ € € € € ðð ð 8<ð #ð #ð #ð #ð #ð #ð #ð
Fð Fð Fð&ð &ð &ð &ð &ð
&ð &ð &ð &ð &ð &ð &ð &ð &r#   rp   c                   ó4   ‡ — e Zd Zddœˆ fd„
Zˆ fd„Zd„ Zˆ xZS )Ú_WaitHandleFutureNr   c                ó´   •— t          ¦   «                              ||||¬¦  «         || _        d| _        t	          j        d ddd ¦  «        | _        d | _        d S )Nr   TF)r   r   Ú	_proactorÚ_unregister_proactorrf   ÚCreateEventÚ_eventÚ
_event_fut)r   r    rT   rU   Úproactorr   r!   s         €r"   r   z_WaitHandleFuture.__init__Ã   sV   ø€ Ý‰Œ×Ò˜˜V [°tÐÑ<Ô<Ð<Ø!ˆŒØ$(ˆÔ!Ý!Ô-¨d°D¸%ÀÑFÔFˆŒØˆŒˆˆr#   c                 óò   •— | j         �'t          j        | j         ¦  «         d | _         d | _        | j                             | j        ¦  «         d | _        t          ¦   «                              |¦  «         d S rA   )	r~   rX   ÚCloseHandler   r{   Ú_unregisterr   r   rc   )r   rb   r!   s     €r"   rc   z%_WaitHandleFuture._unregister_wait_cbÊ   sk   ø€ ØŒ;Ð"ÝÔ ¤Ñ,Ô,Ð,ØˆDŒKØ"ˆDŒOð 	Œ×"Ò" 4¤8Ñ,Ô,Ð,ØˆŒå‰Œ×#Ò# CÑ(Ô(Ð(Ð(Ð(r#   c                 ó”  — | j         sd S d| _         | j        }d | _        	 t          j        || j        ¦  «         nc# t
          $ rV}|j        t          j        k    r7d|| dœ}| j        r
| j        |d<   | j	         
                    |¦  «         Y d }~d S Y d }~nd }~ww xY w| j                             | j        | j        ¦  «        | _        d S re   )rS   rR   rf   ÚUnregisterWaitExr~   r6   rh   ri   r   r7   r8   r{   Ú_wait_cancelrc   r   rj   s       r"   rk   z"_WaitHandleFuture._unregister_waitÜ   s  € ØÔð 	ØˆFØ ˆÔàÔ'ˆØ ˆÔð	ÝÔ(¨°d´kÑBÔBÐBÐBøÝð 
	ð 
	ð 
	ØŒ|�{Ô;Ò;Ð;àEØ!$Ø"ðð �ð
 Ô)ð IØ26Ô2H�GÐ.Ñ/Ø”
×1Ò1°'Ñ:Ô:Ð:Ø�����ð <Ð;Ð;Ð;Ð;øøøøð
	øøøð œ.×5Ò5°d´kØ6:Ô6NñPô PˆŒˆˆs    ; »
BÁABÂB)rH   rI   rJ   r   rc   rk   rL   rM   s   @r"   ry   ry   Â   st   ø€ € € € € ØBFð ð ð ð ð ð ð ð)ð )ð )ð )ð )ð$Pð Pð Pð Pð Pð Pð Pr#   ry   c                   ó4   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ ZeZ	dS )Ú
PipeServerzXClass representing a pipe server.

    This is much like a bound, listening socket.
    c                 ó”   — || _         t          j        ¦   «         | _        d | _        d | _        |                      d¦  «        | _        d S ©NT)Ú_addressÚweakrefÚWeakSetÚ_free_instancesÚ_pipeÚ_accept_pipe_futureÚ_server_pipe_handle)r   r+   s     r"   r   zPipeServer.__init__û   sC   € ØˆŒÝ&œÑ0Ô0ˆÔð ˆŒ
Ø#'ˆÔ Ø×-Ò-¨dÑ3Ô3ˆŒ
ˆ
ˆ
r#   c                 óJ   — | j         |                      d¦  «        c}| _         |S )NF)r�   r‘   )r   Útmps     r"   Ú_get_unconnected_pipez PipeServer._get_unconnected_pipe  s&   € ð
 œ* d×&>Ò&>¸uÑ&EÔ&EˆˆˆTŒZØˆ
r#   c           
      óÎ  — |                       ¦   «         rd S t          j        t          j        z  }|r|t          j        z  }t          j        | j        |t          j        t          j        z  t          j	        z  t          j
        t          j        t          j        t          j        t          j        ¦  «        }t          j        |¦  «        }| j                             |¦  «         |S rA   )ÚclosedrX   ÚPIPE_ACCESS_DUPLEXÚFILE_FLAG_OVERLAPPEDÚFILE_FLAG_FIRST_PIPE_INSTANCEÚCreateNamedPiper‹   ÚPIPE_TYPE_MESSAGEÚPIPE_READMODE_MESSAGEÚ	PIPE_WAITÚPIPE_UNLIMITED_INSTANCESr   ÚBUFSIZEÚNMPWAIT_WAIT_FOREVERÚNULLÚ
PipeHandlerŽ   Úadd)r   ÚfirstÚflagsÚhÚpipes        r"   r‘   zPipeServer._server_pipe_handle  s·   € à�;Š;‰=Œ=ð 	Ø�4ÝÔ*­WÔ-IÑIˆØð 	;Ø•WÔ:Ñ:ˆEÝÔ#ØŒM˜5ÝÔ%­Ô(EÑEÝÔñåÔ,ÝÔ!¥=Ô#8ÝÔ(­'¬,ñ8ô 8ˆõ Ô'¨Ñ*Ô*ˆØÔ× Ò  Ñ&Ô&Ð&Øˆr#   c                 ó   — | j         d u S rA   )r‹   r[   s    r"   r–   zPipeServer.closed  s   € Ø” Ð%Ð&r#   c                 óð   — | j         � | j                              ¦   «          d | _         | j        �G| j        D ]}|                     ¦   «          Œd | _        d | _        | j                             ¦   «          d S d S rA   )r�   r5   r‹   rŽ   Úcloser�   Úclear)r   r§   s     r"   rª   zPipeServer.close"  s‚   € ØÔ#Ð/ØÔ$×+Ò+Ñ-Ô-Ð-Ø'+ˆDÔ$àŒ=Ð$ØÔ,ð ð �Ø—
’
‘”��ØˆDŒJØ ˆDŒMØÔ ×&Ò&Ñ(Ô(Ð(Ð(Ð(ð %Ð$r#   N)
rH   rI   rJ   rK   r   r”   r‘   r–   rª   Ú__del__© r#   r"   rˆ   rˆ   ö   sj   € € € € € ðð ð4ð 4ð 4ðð ð ðð ð ð$'ð 'ð 'ð
)ð 
)ð 
)ð €G€G€Gr#   rˆ   c                   ó   — e Zd ZdZdS )Ú_WindowsSelectorEventLoopz'Windows version of selector event loop.N)rH   rI   rJ   rK   r­   r#   r"   r¯   r¯   1  s   € € € € € Ø1Ð1Ð1Ð1r#   r¯   c                   óD   ‡ — e Zd ZdZdˆ fd„	Zˆ fd„Zd„ Zd„ Z	 dd„Zˆ xZ	S )	r   z2Windows version of proactor event loop using IOCP.Nc                 ój   •— |€t          ¦   «         }t          ¦   «                              |¦  «         d S rA   )r   r   r   )r   r€   r!   s     €r"   r   zProactorEventLoop.__init__8  s0   ø€ ØÐÝ#‘~”~ˆHÝ‰Œ×Ò˜Ñ"Ô"Ð"Ð"Ð"r#   c                 óÚ  •— 	 | j         �J ‚|                      | j        ¦  «         t          ¦   «                              ¦   «          | j         �J| j         j        }| j                              ¦   «          |�| j                             |¦  «         d | _         d S d S # | j         �H| j         j        }| j                              ¦   «          |�| j                             |¦  «         d | _         w xY wrA   )	Ú_self_reading_futureÚ	call_soonÚ_loop_self_readingr   Úrun_foreverr   r5   r{   rƒ   )r   r    r!   s     €r"   r¶   zProactorEventLoop.run_forever=  sø   ø€ ð	1ØÔ,Ð4Ð4Ð4Ø�NŠN˜4Ô2Ñ3Ô3Ð3Ý‰GŒG×ÒÑ!Ô!Ð!àÔ(Ð4ØÔ.Ô2�ØÔ)×0Ò0Ñ2Ô2Ð2ð �>Ø”N×.Ò.¨rÑ2Ô2Ð2Ø,0�Ô)Ð)Ð)ð 5Ð4øˆtÔ(Ð4ØÔ.Ô2�ØÔ)×0Ò0Ñ2Ô2Ð2ð �>Ø”N×.Ò.¨rÑ2Ô2Ð2Ø,0�Ô)Ð0Ð0Ð0Ð0s   ƒAB ÂAC*c              ƒ   óš   K  — | j                              |¦  «        }|ƒ d {V —†} |¦   «         }|                      ||d|i¬¦  «        }||fS )NÚaddr©Úextra)r{   Úconnect_pipeÚ_make_duplex_pipe_transport)r   Úprotocol_factoryr+   Úfr§   ÚprotocolÚtranss          r"   Úcreate_pipe_connectionz(ProactorEventLoop.create_pipe_connectionP  sl   è è € ØŒN×'Ò'¨Ñ0Ô0ˆØˆwˆwˆwˆwˆwˆwˆØ#Ð#Ñ%Ô%ˆØ×0Ò0°°xØ8>ÀÐ7Hð 1ñ Jô Jˆà�hˆÐr#   c              ƒ   ór   ‡ ‡‡‡‡K  — t          ‰¦  «        Šdˆˆˆˆ ˆfd„	Š‰                      ‰¦  «         ‰gS )Nc                 ó¾  •— d }	 | r||                       ¦   «         }‰j                             |¦  «         ‰                     ¦   «         r|                     ¦   «          d S  ‰¦   «         }‰                     ||d‰i¬¦  «         ‰                     ¦   «         }|€d S ‰j                             |¦  «        } | ‰_	        |  
                    ‰¦  «         d S # t          $ rG |r,|                     ¦   «         dk    r|                     ¦   «          ‰                     ‰¦  «         Y d S t          $ r†}|rF|                     ¦   «         dk    r.‰                     d||dœ¦  «         |                     ¦   «          n‰j        rt#          j        d|d¬¦  «         ‰                     ‰¦  «         Y d }~d S d }~wt&          j        $ r |r|                     ¦   «          Y d S Y d S w xY w)	Nr¸   r¹   r   zPipe accept failed)r1   r2   r§   zAccept pipe failed on pipe %rT)Úexc_info)rG   rŽ   Údiscardr–   rª   r¼   r”   r{   Úaccept_piper�   Úadd_done_callbackÚBrokenPipeErrorÚfilenor´   r6   r8   Ú_debugr   Úwarningr   ÚCancelledError)	r¾   r§   r¿   r9   r+   Úloop_accept_piper½   r   Úservers	       €€€€€r"   rÍ   z>ProactorEventLoop.start_serving_pipe.<locals>.loop_accept_pipe[  sJ  ø€ ØˆDð)6Øð AØŸ8š8™:œ:�DØÔ*×2Ò2°4Ñ8Ô8Ð8à—}’}‘”ð ð Ÿ
š
™œ˜Ø˜à/Ð/Ñ1Ô1�HØ×4Ò4Ø˜h¨v°wÐ.?ð 5ñ Aô Að Að ×3Ò3Ñ5Ô5�Ø�<Ø�Fà”N×.Ò.¨tÑ4Ô4�ð* ./�Ô*Ø×#Ò#Ð$4Ñ5Ô5Ð5Ð5Ð5øõ+ #ð 1ð 1ð 1Øð !˜DŸKšK™MœM¨RÒ/Ð/Ø—J’J‘L”L�LØ—’Ð/Ñ0Ô0Ð0Ð0Ð0Ð0Ýð 1ð 1ð 1Øð 	8˜DŸKšK™MœM¨RÒ/Ð/Ø×/Ò/Ø#7Ø%(Ø $ð1ð 1ñ ô ð ð
 —J’J‘L”L�L�LØ”[ð 8Ý”NÐ#BØ#'°$ð8ñ 8ô 8ð 8à—’Ð/Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0øøøøÝÔ,ð !ð !ð !Øð !Ø—J’J‘L”L�L�L�L�Lð!ð !ð !ð!øøøs2   …AC Á:C ÂC ÃAGÄ#	GÄ,A;F-Æ-(GÇGrA   )rˆ   r´   )r   r½   r+   rÍ   rÎ   s   ```@@r"   Ústart_serving_pipez$ProactorEventLoop.start_serving_pipeX  sg   øøøøøè è € Ý˜GÑ$Ô$ˆð+	6ð +	6ð +	6ð +	6ð +	6ð +	6ð +	6ð +	6ð +	6ð +	6ðZ 	�ŠÐ'Ñ(Ô(Ð(Øˆxˆr#   c	           
   ‹   ó  K  — |                       ¦   «         }
t          | |||||||f|
|dœ|	¤Ž}	 |
ƒ d {V —† nN# t          t          f$ r ‚ t          $ r0 |                     ¦   «          |                     ¦   «         ƒ d {V —† ‚ w xY w|S )N)Úwaiterrº   )Úcreate_futureÚ_WindowsSubprocessTransportÚ
SystemExitÚKeyboardInterruptÚBaseExceptionrª   Ú_wait)r   r¿   ÚargsÚshellÚstdinÚstdoutÚstderrÚbufsizerº   ÚkwargsrÑ   Útransps               r"   Ú_make_subprocess_transportz,ProactorEventLoop._make_subprocess_transport‹  s×   è è € ð ×#Ò#Ñ%Ô%ˆÝ,¨T°8¸TÀ5Ø-2°F¸FÀGð7à4:À%ð7ð 7ð 06ð7ð 7ˆð	ØˆLˆLˆLˆLˆLˆLˆLˆLøÝÕ-Ð.ð 	ð 	ð 	ØÝð 	ð 	ð 	Ø�LŠL‰NŒNˆNØ—,’,‘.”.Ð Ð Ð Ð Ð Ð Ð Øð	øøøð
 ˆs
   ¯8 ¸ABrA   )
rH   rI   rJ   rK   r   r¶   rÁ   rÏ   rà   rL   rM   s   @r"   r   r   5  s”   ø€ € € € € Ø<Ð<ð#ð #ð #ð #ð #ð #ð
1ð 1ð 1ð 1ð 1ð&ð ð ð1ð 1ð 1ðj 04ðð ð ð ð ð ð ð r#   r   c                   óÐ   — e Zd ZdZefd„Zd„ Zd„ Zd„ Zd d„Z	d„ Z
d!d
„Zd!d„Zd!d„Zd!d„Zd"d„Zd!d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd d„Zd„ Zd„ Zd„ Z dS )#r   z#Proactor implementation using IOCP.c                 óô   — d | _         g | _        t          j        t          j        t
          d|¦  «        | _        i | _        t          j	        ¦   «         | _
        g | _        t          j	        ¦   «         | _        d S rW   )r7   Ú_resultsrf   ÚCreateIoCompletionPortÚINVALID_HANDLE_VALUEr¡   Ú_iocpÚ_cacherŒ   r�   rS   Ú_unregisteredÚ_stopped_serving)r   Úconcurrencys     r"   r   zIocpProactor.__init__¢  sg   € ØˆŒ
ØˆŒÝ Ô7ÝÔ,­d°A°{ñDô DˆŒ
àˆŒÝ"œ?Ñ,Ô,ˆÔØˆÔÝ '¤Ñ 1Ô 1ˆÔÐÐr#   c                 ó2   — | j         €t          d¦  «        ‚d S )NzIocpProactor is closed)ræ   ru   r[   s    r"   Ú_check_closedzIocpProactor._check_closed¬  s!   € ØŒ:ÐÝÐ7Ñ8Ô8Ð8ð Ðr#   c                 óâ   — dt          | j        ¦  «        z  dt          | j        ¦  «        z  g}| j        €|                     d¦  «         d| j        j        ›dd                     |¦  «        ›d�S )Nzoverlapped#=%sz
result#=%sr–   ú<ú r(   )Úlenrç   rã   ræ   r`   r!   rH   Újoin)r   r-   s     r"   Ú__repr__zIocpProactor.__repr__°  sl   € Ø ¥3 t¤{Ñ#3Ô#3Ñ3Ø�s 4¤=Ñ1Ô1Ñ1ð3ˆàŒ:ÐØ�KŠK˜Ñ!Ô!Ð!øØ œNÔ3Ð3Ð3°S·X²X¸d±^´^°^°^ÐDÐDr#   c                 ó   — || _         d S rA   )r7   )r   r   s     r"   Úset_loopzIocpProactor.set_loop·  s   € ØˆŒ
ˆ
ˆ
r#   Nc                 ón   — | j         s|                      |¦  «         | j         }g | _         	 |d }S # d }w xY wrA   )rã   r\   )r   Útimeoutr“   s      r"   ÚselectzIocpProactor.selectº  sJ   € ØŒ}ð 	 Ø�JŠJ�wÑÔÐØŒmˆØˆŒð	Øð ˆCˆCø�$ˆCˆJˆJˆJˆJs   ¬0 °4c                 ób   — | j                              ¦   «         }|                     |¦  «         |S rA   )r7   rÒ   rE   )r   Úvaluerb   s      r"   Ú_resultzIocpProactor._resultÅ  s,   € ØŒj×&Ò&Ñ(Ô(ˆØ�Š�uÑÔÐØˆ
r#   r   c                 ó¸  — |                       |¦  «         t          j        t          ¦  «        }	 t	          |t
          j        ¦  «        r*|                     |                     ¦   «         ||¦  «         n(|                     |                     ¦   «         |¦  «         n%# t          $ r |  
                    d¦  «        cY S w xY wd„ }|                      |||¦  «        S )Nr#   c                 ó¬   — 	 |                      ¦   «         S # t          $ r3}|j        t          j        t          j        fv rt          |j        Ž ‚‚ d }~ww xY wrA   ©Ú	getresultr6   rh   rf   ÚERROR_NETNAME_DELETEDÚERROR_OPERATION_ABORTEDÚConnectionResetErrorrØ   ©rÀ   Úkeyr    r9   s       r"   Úfinish_recvz&IocpProactor.recv.<locals>.finish_recvÕ  óf   € ðØ—|’|‘~”~Ð%øÝð ð ð Ø”<¥KÔ$EÝ$/Ô$Gð$Ið Ið Iå.°´Ð9Ð9àøøøøðøøøó   ‚ –
A .AÁA)Ú_register_with_iocprf   Ú
Overlappedr¡   Ú
isinstanceÚsocketÚWSARecvrÉ   ÚReadFilerÈ   rú   Ú	_register©r   ÚconnÚnbytesr¥   r    r  s         r"   ÚrecvzIocpProactor.recvÊ  s×   € Ø× Ò  Ñ&Ô&Ð&ÝÔ#¥DÑ)Ô)ˆð	%Ý˜$¥¤Ñ.Ô.ð 3Ø—
’
˜4Ÿ;š;™=œ=¨&°%Ñ8Ô8Ð8Ð8à—’˜DŸKšK™MœM¨6Ñ2Ô2Ð2øøÝð 	%ð 	%ð 	%Ø—<’< Ñ$Ô$Ð$Ð$Ð$ð	%øøøð	ð 	ð 	ð �~Š~˜b $¨Ñ4Ô4Ð4ó   °A,B ÂB?Â>B?c                 ó¸  — |                       |¦  «         t          j        t          ¦  «        }	 t	          |t
          j        ¦  «        r*|                     |                     ¦   «         ||¦  «         n(|                     |                     ¦   «         |¦  «         n%# t          $ r |  
                    d¦  «        cY S w xY wd„ }|                      |||¦  «        S )Nr   c                 ó¬   — 	 |                      ¦   «         S # t          $ r3}|j        t          j        t          j        fv rt          |j        Ž ‚‚ d }~ww xY wrA   rý   r  s       r"   r  z+IocpProactor.recv_into.<locals>.finish_recvì  r  r  )r  rf   r  r¡   r	  r
  ÚWSARecvIntorÉ   ÚReadFileIntorÈ   rú   r  ©r   r  Úbufr¥   r    r  s         r"   Ú	recv_intozIocpProactor.recv_intoá  sÕ   € Ø× Ò  Ñ&Ô&Ð&ÝÔ#¥DÑ)Ô)ˆð	#Ý˜$¥¤Ñ.Ô.ð 4Ø—’˜tŸ{š{™}œ}¨c°5Ñ9Ô9Ð9Ð9à—’ §¢¡¤¨sÑ3Ô3Ð3øøÝð 	#ð 	#ð 	#Ø—<’< ‘?”?Ð"Ð"Ð"ð	#øøøð	ð 	ð 	ð �~Š~˜b $¨Ñ4Ô4Ð4r  c                 ó2  — |                       |¦  «         t          j        t          ¦  «        }	 |                     |                     ¦   «         ||¦  «         n%# t          $ r |                      d¦  «        cY S w xY wd„ }|                      |||¦  «        S )N)r#   Nc                 ó¬   — 	 |                      ¦   «         S # t          $ r3}|j        t          j        t          j        fv rt          |j        Ž ‚‚ d }~ww xY wrA   rý   r  s       r"   r  z*IocpProactor.recvfrom.<locals>.finish_recv   r  r  )	r  rf   r  r¡   ÚWSARecvFromrÉ   rÈ   rú   r  r  s         r"   ÚrecvfromzIocpProactor.recvfromø  s¦   € Ø× Ò  Ñ&Ô&Ð&ÝÔ#¥DÑ)Ô)ˆð	-Ø�NŠN˜4Ÿ;š;™=œ=¨&°%Ñ8Ô8Ð8Ð8øÝð 	-ð 	-ð 	-Ø—<’< Ñ,Ô,Ð,Ð,Ð,ð	-øøøð	ð 	ð 	ð �~Š~˜b $¨Ñ4Ô4Ð4ó   °)A ÁA<Á;A<c                 ó2  — |                       |¦  «         t          j        t          ¦  «        }	 |                     |                     ¦   «         ||¦  «         n%# t          $ r |                      d¦  «        cY S w xY wd„ }|                      |||¦  «        S )N©r   Nc                 ó¬   — 	 |                      ¦   «         S # t          $ r3}|j        t          j        t          j        fv rt          |j        Ž ‚‚ d }~ww xY wrA   rý   r  s       r"   r  z/IocpProactor.recvfrom_into.<locals>.finish_recv  r  r  )	r  rf   r  r¡   ÚWSARecvFromIntorÉ   rÈ   rú   r  r  s         r"   Úrecvfrom_intozIocpProactor.recvfrom_into  s¨   € Ø× Ò  Ñ&Ô&Ð&ÝÔ#¥DÑ)Ô)ˆð	+Ø×Ò˜tŸ{š{™}œ}¨c°5Ñ9Ô9Ð9Ð9øÝð 	+ð 	+ð 	+Ø—<’< 	Ñ*Ô*Ð*Ð*Ð*ð	+øøøð	ð 	ð 	ð �~Š~˜b $¨Ñ4Ô4Ð4r  c                 óæ   — |                       |¦  «         t          j        t          ¦  «        }|                     |                     ¦   «         |||¦  «         d„ }|                      |||¦  «        S )Nc                 ó¬   — 	 |                      ¦   «         S # t          $ r3}|j        t          j        t          j        fv rt          |j        Ž ‚‚ d }~ww xY wrA   rý   r  s       r"   Úfinish_sendz(IocpProactor.sendto.<locals>.finish_send&  r  r  )r  rf   r  r¡   Ú	WSASendTorÉ   r  )r   r  r  r¥   r¸   r    r&  s          r"   ÚsendtozIocpProactor.sendto   sm   € Ø× Ò  Ñ&Ô&Ð&ÝÔ#¥DÑ)Ô)ˆà
�Š�T—[’[‘]”] C¨°Ñ5Ô5Ð5ð	ð 	ð 	ð �~Š~˜b $¨Ñ4Ô4Ð4r#   c                 ój  — |                       |¦  «         t          j        t          ¦  «        }t	          |t
          j        ¦  «        r*|                     |                     ¦   «         ||¦  «         n(|                     |                     ¦   «         |¦  «         d„ }|  	                    |||¦  «        S )Nc                 ó¬   — 	 |                      ¦   «         S # t          $ r3}|j        t          j        t          j        fv rt          |j        Ž ‚‚ d }~ww xY wrA   rý   r  s       r"   r&  z&IocpProactor.send.<locals>.finish_send:  r  r  )
r  rf   r  r¡   r	  r
  ÚWSASendrÉ   Ú	WriteFiler  )r   r  r  r¥   r    r&  s         r"   ÚsendzIocpProactor.send2  sž   € Ø× Ò  Ñ&Ô&Ð&ÝÔ#¥DÑ)Ô)ˆÝ�d�FœMÑ*Ô*ð 	-Ø�JŠJ�t—{’{‘}”} c¨5Ñ1Ô1Ð1Ð1à�LŠL˜Ÿš™œ¨Ñ,Ô,Ð,ð	ð 	ð 	ð �~Š~˜b $¨Ñ4Ô4Ð4r#   c                 óœ  ‡‡— |                       ‰¦  «         |                      ‰j        ¦  «        Št          j        t
          ¦  «        }|                     ‰                     ¦   «         ‰                     ¦   «         ¦  «         ˆˆfd„}d„ }|                      |‰|¦  «        } ||‰¦  «        }t          j
        || j        ¬¦  «         |S )Nc                 óJ  •— |                      ¦   «          t          j        d‰                     ¦   «         ¦  «        }‰                     t
          j        t          j        |¦  «         ‰ 	                    ‰ 
                    ¦   «         ¦  «         ‰‰                     ¦   «         fS )Nz@P)rþ   ÚstructÚpackrÉ   Ú
setsockoptr
  Ú
SOL_SOCKETrf   ÚSO_UPDATE_ACCEPT_CONTEXTÚ
settimeoutÚ
gettimeoutÚgetpeername)rÀ   r  r    r  r  Úlisteners       €€r"   Úfinish_acceptz*IocpProactor.accept.<locals>.finish_acceptL  s†   ø€ Ø�LŠL‰NŒNˆNå”+˜d H§O¢OÑ$5Ô$5Ñ6Ô6ˆCØ�OŠO�FÔ-Ý'Ô@À#ñGô Gð Gà�OŠO˜H×/Ò/Ñ1Ô1Ñ2Ô2Ð2Ø˜×)Ò)Ñ+Ô+Ð+Ð+r#   c              “   ól   K  — 	 | ƒ d {V —† d S # t           j        $ r |                     ¦   «          ‚ w xY wrA   )r   rÌ   rª   )r3   r  s     r"   Úaccept_coroz(IocpProactor.accept.<locals>.accept_coroU  sN   è è € ðØ���������øÝÔ,ð ð ð Ø—
’
‘”�Øðøøøs   „ Ž%3r   )r  Ú_get_accept_socketÚfamilyrf   r  r¡   ÚAcceptExrÉ   r  r   Úensure_futurer7   )r   r8  r    r9  r;  r3   Úcoror  s    `     @r"   ÚacceptzIocpProactor.acceptF  sÕ   øø€ Ø× Ò  Ñ*Ô*Ð*Ø×&Ò& x¤Ñ7Ô7ˆÝÔ#¥DÑ)Ô)ˆØ
�Š�H—O’OÑ%Ô% t§{¢{¡}¤}Ñ5Ô5Ð5ð	,ð 	,ð 	,ð 	,ð 	,ð 	,ð	ð 	ð 	ð —’  H¨mÑ<Ô<ˆØˆ{˜6 4Ñ(Ô(ˆÝÔ˜D t¤zÐ2Ñ2Ô2Ð2Øˆr#   c                 ó´  ‡— ‰j         t          j        k    rWt          j        ‰                     ¦   «         |¦  «         | j                             ¦   «         }|                     d ¦  «         |S |  	                    ‰¦  «         	 t          j
        ‰                     ¦   «         ‰j        ¦  «         nL# t          $ r?}|j        t          j        k    r‚ ‰                     ¦   «         d         dk    r‚ Y d }~nd }~ww xY wt          j        t$          ¦  «        }|                     ‰                     ¦   «         |¦  «         ˆfd„}|                      |‰|¦  «        S )Nr   r   c                 ó†   •— |                      ¦   «          ‰                     t          j        t          j        d¦  «         ‰S rW   )rþ   r2  r
  r3  rf   ÚSO_UPDATE_CONNECT_CONTEXT)rÀ   r  r    r  s      €r"   Úfinish_connectz,IocpProactor.connect.<locals>.finish_connectx  s;   ø€ Ø�LŠL‰NŒNˆNà�OŠO�FÔ-Ý'ÔAÀ1ñFô Fð FàˆKr#   )Útyper
  Ú
SOCK_DGRAMrf   Ú
WSAConnectrÉ   r7   rÒ   rE   r  Ú	BindLocalr=  r6   rh   ÚerrnoÚ	WSAEINVALÚgetsocknamer  r¡   Ú	ConnectExr  )r   r  r+   rb   Úer    rE  s    `     r"   ÚconnectzIocpProactor.connectb  sS  ø€ ØŒ9�Ô)Ò)Ð)õ Ô" 4§;¢;¡=¤=°'Ñ:Ô:Ð:Ø”*×*Ò*Ñ,Ô,ˆCØ�NŠN˜4Ñ Ô Ð ØˆJà× Ò  Ñ&Ô&Ð&ð	ÝÔ! $§+¢+¡-¤-°´Ñ=Ô=Ð=Ð=øÝð 	ð 	ð 	ØŒz�Uœ_Ò,Ð,Øà×ÒÑ!Ô! !Ô$¨Ò)Ð)Øð *Ð)Ð)Ð)Ð)øøøøð		øøøõ Ô#¥DÑ)Ô)ˆØ
�Š�T—[’[‘]”] GÑ,Ô,Ð,ð	ð 	ð 	ð 	ð 	ð �~Š~˜b $¨Ñ7Ô7Ð7s   Â,B1 Â1
C:Â;5C5Ã5C:c           	      óN  — |                       |¦  «         t          j        t          ¦  «        }|dz  }|dz	  dz  }|                     |                     ¦   «         t          j        |                     ¦   «         ¦  «        |||dd¦  «         d„ }|                      |||¦  «        S )Nl   ÿÿ é    r   c                 ó¬   — 	 |                      ¦   «         S # t          $ r3}|j        t          j        t          j        fv rt          |j        Ž ‚‚ d }~ww xY wrA   rý   r  s       r"   Úfinish_sendfilez.IocpProactor.sendfile.<locals>.finish_sendfile‹  r  r  )	r  rf   r  r¡   ÚTransmitFilerÉ   ÚmsvcrtÚget_osfhandler  )	r   ÚsockÚfileÚoffsetÚcountr    Ú
offset_lowÚoffset_highrS  s	            r"   ÚsendfilezIocpProactor.sendfile�  s§   € Ø× Ò  Ñ&Ô&Ð&ÝÔ#¥DÑ)Ô)ˆØ˜kÑ)ˆ
Ø ‘| {Ñ2ˆØ
�Š˜Ÿš™œÝÔ,¨T¯[ª[©]¬]Ñ;Ô;Ø" KØ˜q !ñ	%ô 	%ð 	%ð
	ð 	ð 	ð �~Š~˜b $¨Ñ8Ô8Ð8r#   c                 ó  ‡— |                       ‰¦  «         t          j        t          ¦  «        }|                     ‰                     ¦   «         ¦  «        }|r|                      ‰¦  «        S ˆfd„}|                      |‰|¦  «        S )Nc                 ó0   •— |                      ¦   «          ‰S rA   )rþ   )rÀ   r  r    r§   s      €r"   Úfinish_accept_pipez4IocpProactor.accept_pipe.<locals>.finish_accept_pipe¡  s   ø€ Ø�LŠL‰NŒNˆNØˆKr#   )r  rf   r  r¡   ÚConnectNamedPiperÉ   rú   r  )r   r§   r    Ú	connectedr`  s    `   r"   rÆ   zIocpProactor.accept_pipe–  s�   ø€ Ø× Ò  Ñ&Ô&Ð&ÝÔ#¥DÑ)Ô)ˆØ×'Ò'¨¯ª©¬Ñ6Ô6ˆ	àð 	&ð —<’< Ñ%Ô%Ð%ð	ð 	ð 	ð 	ð 	ð �~Š~˜b $Ð(:Ñ;Ô;Ð;r#   c              ƒ   ó*  K  — t           }	 	 t          j        |¦  «        }n`# t          $ r }|j        t          j        k    r‚ Y d }~nd }~ww xY wt          |dz  t          ¦  «        }t          j	        |¦  «        ƒ d {V —† Œvt          j        |¦  «        S )NTé   )ÚCONNECT_PIPE_INIT_DELAYrf   ÚConnectPiper6   rh   ÚERROR_PIPE_BUSYÚminÚCONNECT_PIPE_MAX_DELAYr   Úsleepr   r¢   )r   r+   ÚdelayrT   r9   s        r"   r»   zIocpProactor.connect_pipe§  s»   è è € Ý'ˆð	%ðÝ$Ô0°Ñ9Ô9�ØøÝð ð ð Ø”<¥;Ô#>Ò>Ð>Øð ?Ð>Ð>Ð>Ð>øøøøðøøøõ
 ˜ ™	Õ#9Ñ:Ô:ˆEÝ”+˜eÑ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$ð	%õ Ô'¨Ñ/Ô/Ð/s   Œ! ¡
A«AÁAc                 ó0   — |                       ||d¦  «        S )z°Wait for a handle.

        Return a Future object. The result of the future is True if the wait
        completed, or False if the wait did not complete (on timeout).
        F)Ú_wait_for_handle)r   rT   rö   s      r"   Úwait_for_handlezIocpProactor.wait_for_handleº  s   € ð ×$Ò$ V¨W°eÑ<Ô<Ð<r#   c                 óB   — |                       |d d¦  «        }||_        |S rŠ   )rm  rr   )r   rs   Údone_callbackrb   s       r"   r†   zIocpProactor._wait_cancelÂ  s(   € Ø×#Ò# E¨4°Ñ6Ô6ˆð +ˆÔØˆ
r#   c                 ó¦  ‡— |                       ¦   «          |€t          j        }nt          j        |dz  ¦  «        }t          j        t          ¦  «        }t          j        || j	        |j
        |¦  «        }|rt          |||| j        ¬¦  «        Šnt          |||| | j        ¬¦  «        Š‰j        r‰j        d= ˆfd„}‰|d|f| j        |j
        <   ‰S )Nç     @�@r   r   c                 ó,   •— ‰                      ¦   «         S rA   )r\   )rÀ   r  r    r¾   s      €r"   Úfinish_wait_for_handlez=IocpProactor._wait_for_handle.<locals>.finish_wait_for_handleß  s   ø€ ð —7’7‘9”9Ðr#   r   )rì   rX   ÚINFINITEÚmathÚceilrf   r  r¡   ÚRegisterWaitWithQueueræ   r+   rp   r7   ry   r   rç   )	r   rT   rö   Ú
_is_cancelÚmsr    rU   rt  r¾   s	           @r"   rm  zIocpProactor._wait_for_handleÉ  sû   ø€ Ø×ÒÑÔÐàˆ?ÝÔ!ˆBˆBõ ”˜7 S™=Ñ)Ô)ˆBõ Ô#¥DÑ)Ô)ˆÝ!Ô7Ø�D”J ¤
¨Bñ0ô 0ˆàð 	3Ý! " f¨kÀÄ
ÐKÑKÔKˆAˆAå! " f¨k¸4Ø'+¤zð3ñ 3ô 3ˆAàÔð 	(ØÔ# BÐ'ð	ð 	ð 	ð 	ð 	ð $% b¨!Ð-CÐ"DˆŒ�B”JÑØˆr#   c                 ó¬   — || j         vrJ| j                              |¦  «         t          j        |                     ¦   «         | j        dd¦  «         d S d S rW   )rS   r£   rf   rä   rÉ   ræ   ©r   Úobjs     r"   r  z IocpProactor._register_with_iocpë  sX   € ð �dÔ&Ð&Ð&ØÔ× Ò  Ñ%Ô%Ð%ÝÔ.¨s¯zªz©|¬|¸T¼ZÈÈAÑNÔNÐNÐNÐNð 'Ð&r#   c                 óL  — |                       ¦   «          t          || j        ¬¦  «        }|j        r|j        d= |j        sP	  |d d |¦  «        }|                     |¦  «         n,# t          $ r}|                     |¦  «         Y d }~nd }~ww xY w||||f| j        |j	        <   |S r   )
rì   r   r7   r   r%   rE   r6   rB   rç   r+   )r   r    r}  Úcallbackr¾   rù   rN  s          r"   r  zIocpProactor._registerõ  sÙ   € Ø×ÒÑÔÐõ
 ˜b t¤zÐ2Ñ2Ô2ˆØÔð 	(ØÔ# BÐ'ØŒzð 
	$ð
$Ø ˜  t¨RÑ0Ô0�ð —’˜UÑ#Ô#Ð#Ð#øõ ð #ð #ð #Ø—’ Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"øøøøð#øøøð $% b¨#¨xÐ"8ˆŒ�B”JÑØˆs   ÁA% Á%
BÁ/B	Â	Bc                 ób   — |                       ¦   «          | j                             |¦  «         dS )a  Unregister an overlapped object.

        Call this method when its future has been cancelled. The event can
        already be signalled (pending in the proactor event queue). It is also
        safe if the event is never signalled (because it was cancelled).
        N)rì   rè   r`   )r   r    s     r"   rƒ   zIocpProactor._unregister  s3   € ð 	×ÒÑÔÐØÔ×!Ò! "Ñ%Ô%Ð%Ð%Ð%r#   c                 óX   — t          j         |¦  «        }|                     d¦  «         |S rW   )r
  r5  )r   r=  Úss      r"   r<  zIocpProactor._get_accept_socket  s%   € ÝŒM˜&Ñ!Ô!ˆØ	�Š�Q‰ŒˆØˆr#   c           	      ó$  — |€t           }nF|dk     rt          d¦  «        ‚t          j        |dz  ¦  «        }|t           k    rt          d¦  «        ‚	 t	          j        | j        |¦  «        }|€�n]d}|\  }}}}	 | j                             |¦  «        \  }}	}
}nq# t          $ rd | j
                             ¦   «         r$| j
                             dd||||fz  dœ¦  «         |dt          j        fvrt          j        |¦  «         Y Œ¶w xY w|
| j        v r|                     ¦   «          n¢|                     ¦   «         sŽ	  ||||	¦  «        }|                     |¦  «         | j                             |¦  «         nF# t,          $ r9}|                     |¦  «         | j                             |¦  «         Y d }~nd }~ww xY wd }n# d }w xY w�Œ{| j        D ]"}	| j                             |	j        d ¦  «         Œ#| j                             ¦   «          d S )	Nr   znegative timeoutrr  ztimeout too bigTz8GetQueuedCompletionStatus() returned an unexpected eventz)err=%s transferred=%s key=%#x address=%#x)r1   Ústatus)ru  Ú
ValueErrorrv  rw  rf   ÚGetQueuedCompletionStatusræ   rç   ÚpopÚKeyErrorr7   Ú	get_debugr8   rå   rX   r‚   ré   r5   ÚdonerE   rã   r`   r6   rB   rè   r+   r«   )r   rö   rz  r„  ÚerrÚtransferredr  r+   r¾   r    r}  r  rù   rN  s                 r"   r\   zIocpProactor._poll$  sy  € Øˆ?ÝˆBˆBØ�qŠ[ˆ[ÝÐ/Ñ0Ô0Ð0õ ”˜7 S™=Ñ)Ô)ˆBØ•XŠ~ˆ~Ý Ð!2Ñ3Ô3Ð3ð&	Ý Ô:¸4¼:ÀrÑJÔJˆFØˆ~ÙØˆBà-3Ñ*ˆC�˜c 7ðØ'+¤{§¢°wÑ'?Ô'?Ñ$��2�s˜H˜HøÝð ð ð Ø”:×'Ò'Ñ)Ô)ð Ø”J×5Ò5ð%7à#NØ&)¨;¸¸WÐ%Eñ$Fð7ð 7ñ ô ð ð ˜q¥+Ô"BÐCÐCÐCÝÔ'¨Ñ,Ô,Ð,Ø�ðøøøð �dÔ+Ð+Ð+Ø—’‘
”
�
�
ð —V’V‘X”Xð 
ð	Ø$˜H [°#°rÑ:Ô:�Eð
 —L’L Ñ'Ô'Ð'Ø”M×(Ò(¨Ñ+Ô+Ð+Ð+øõ ð ,ð ,ð ,Ø—O’O AÑ&Ô&Ð&Ø”M×(Ò(¨Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+øøøøð,øøøð �A�Aø˜�A�H�H�H�HñM&	ðR Ô$ð 	.ð 	.ˆBØŒK�OŠO˜BœJ¨Ñ-Ô-Ð-Ð-ØÔ× Ò Ñ"Ô"Ð"Ð"Ð"sC   Á:B ÂA+DÄDÄ>E; Å0G Å;
F>Æ/F9Æ4G Æ9F>Æ>G ÇGc                 ó:   — | j                              |¦  «         d S rA   )ré   r£   r|  s     r"   Ú_stop_servingzIocpProactor._stop_serving]  s!   € ð 	Ô×!Ò! #Ñ&Ô&Ð&Ð&Ð&r#   c                 ó  — | j         €d S t          | j                             ¦   «         ¦  «        D ]–\  }}}}|                     ¦   «         rŒt          |t          ¦  «        rŒ2	 |                     ¦   «          ŒH# t          $ rB}| j	        �1d||dœ}|j
        r
|j
        |d<   | j	                             |¦  «         Y d }~Œ�d }~ww xY wd}t          j        ¦   «         }||z   }	| j        rs|	t          j        ¦   «         k    r@t          j        d| t          j        ¦   «         |z
  ¦  «         t          j        ¦   «         |z   }	|                      |¦  «         | j        °sg | _        t%          j        | j         ¦  «         d | _         d S )NzCancelling a future failedr0   r4   g      ð?z,%r is running after closing for %.1f seconds)ræ   Úlistrç   ÚvaluesÚ	cancelledr	  rp   r5   r6   r7   r   r8   ÚtimeÚ	monotonicr   Údebugr\   rã   rX   r‚   )
r   rb   r    r}  r  r9   r:   Ú
msg_updateÚ
start_timeÚnext_msgs
             r"   rª   zIocpProactor.closec  s¸  € ØŒ:ÐàˆFõ '+¨4¬;×+=Ò+=Ñ+?Ô+?Ñ&@Ô&@ð 	Cð 	CÑ"ˆC��S˜(Ø�}Š}‰Œð CàÝ˜CÕ!2Ñ3Ô3ð CàðCØ—J’J‘L”L�L�LøÝð 	Cð 	Cð 	CØ”zÐ-à'CØ),Ø&)ð#ð #˜ð
 Ô0ð PØ:=Ô:O˜GÐ$6Ñ7Øœ
×9Ò9¸'ÑBÔBÐBøøøøøøøøøð	Cøøøð ˆ
Ý”^Ñ%Ô%ˆ
Ø 
Ñ*ˆØŒkð 	#Ø�4œ>Ñ+Ô+Ò+Ð+Ý”ÐKØ!¥4¤>Ñ#3Ô#3°jÑ#@ñBô Bð Båœ>Ñ+Ô+¨jÑ8�ð �JŠJ�zÑ"Ô"Ð"ð Œkð 	#ð ˆŒåÔ˜DœJÑ'Ô'Ð'ØˆŒ
ˆ
ˆ
s   Á#A8Á8
CÂ8B?Â?Cc                 ó.   — |                       ¦   «          d S rA   )rª   r[   s    r"   r¬   zIocpProactor.__del__’  s   € Ø�
Š
‰Œˆˆˆr#   rA   )r   r   )!rH   rI   rJ   rK   ru  r   rì   rò   rô   r÷   rú   r  r  r  r#  r(  r-  rA  rO  r]  rÆ   r»   rn  r†   rm  r  r  rƒ   r<  r\   rŽ  rª   r¬   r­   r#   r"   r   r   Ÿ  sý  € € € € € Ø-Ð-à#+ð 2ð 2ð 2ð 2ð9ð 9ð 9ðEð Eð Eðð ð ð	ð 	ð 	ð 	ðð ð ð
5ð 5ð 5ð 5ð.5ð 5ð 5ð 5ð.5ð 5ð 5ð 5ð(5ð 5ð 5ð 5ð(5ð 5ð 5ð 5ð$5ð 5ð 5ð 5ð(ð ð ð88ð 8ð 8ð>9ð 9ð 9ð*<ð <ð <ð"0ð 0ð 0ð&=ð =ð =ð =ðð ð ð ð  ð  ðDOð Oð Oðð ð ð@&ð &ð &ðð ð ð
7#ð 7#ð 7#ð 7#ðr'ð 'ð 'ð-ð -ð -ð^ð ð ð ð r#   r   c                   ó   — e Zd Zd„ ZdS )rÓ   c           	      óâ   ‡ — t          j        |f|||||dœ|¤Ž‰ _        ˆ fd„}‰ j        j                             t          ‰ j        j        ¦  «        ¦  «        }	|	                     |¦  «         d S )N)rÙ   rÚ   rÛ   rÜ   rÝ   c                 ód   •— ‰j                              ¦   «         }‰                     |¦  «         d S rA   )Ú_procÚpollÚ_process_exited)r¾   Ú
returncoder   s     €r"   r  z4_WindowsSubprocessTransport._start.<locals>.callback�  s.   ø€ ØœŸšÑ*Ô*ˆJØ× Ò  Ñ,Ô,Ð,Ð,Ð,r#   )	r   ÚPopenr�  r7   r{   rn  ÚintrQ   rÇ   )
r   rØ   rÙ   rÚ   rÛ   rÜ   rÝ   rÞ   r  r¾   s
   `         r"   Ú_startz"_WindowsSubprocessTransport._start˜  s’   ø€ Ý"Ô(Øð'Ø U°6À&Øð'ð 'à%ð'ð 'ˆŒ
ð	-ð 	-ð 	-ð 	-ð 	-ð ŒJÔ ×0Ò0µ°T´ZÔ5GÑ1HÔ1HÑIÔIˆØ	×Ò˜HÑ%Ô%Ð%Ð%Ð%r#   N)rH   rI   rJ   r£  r­   r#   r"   rÓ   rÓ   –  s#   € € € € € ð
&ð 
&ð 
&ð 
&ð 
&r#   rÓ   c                   ó   — e Zd ZeZdS )r   N)rH   rI   rJ   r   Ú_loop_factoryr­   r#   r"   r   r   ¨  ó   € € € € € Ø%€M€M€Mr#   r   c                   ó   — e Zd ZeZdS )r   N)rH   rI   rJ   r   r¥  r­   r#   r"   r   r   ¬  r¦  r#   r   )2rK   ÚsysÚplatformÚImportErrorrf   rX   rJ  rv  rU  r
  r0  r“  rŒ   Ú r   r   r   r   r	   r
   r   r   Úlogr   Ú__all__r¡   ru  ÚERROR_CONNECTION_REFUSEDÚERROR_CONNECTION_ABORTEDre  ri  ÚFuturer   rO   rp   ry   Úobjectrˆ   ÚBaseSelectorEventLoopr¯   ÚBaseProactorEventLoopr   r   ÚBaseSubprocessTransportrÓ   r   ÚBaseDefaultEventLoopPolicyr   r   r   r­   r#   r"   ú<module>r¶     sx  ðØ 4Ð 4à 
€
€
€
à„<�7ÒÐØ
ˆ+�lÑ
#Ô
#Ð#à Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø €€€Ø €€€Ø €€€Ø €€€Ø €€€à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð€ð „|€ØÔ€ØÐ ØÐ ð  Ð ð Ð ð-ð -ð -ð -ð -˜œñ -ô -ð -ð`G#ð G#ð G#ð G#ð G#˜GœNñ G#ô G#ð G#ðT&ð &ð &ð &ð &Ð-ñ &ô &ð &ð01Pð 1Pð 1Pð 1Pð 1PÐ-ñ 1Pô 1Pð 1Pðh8ð 8ð 8ð 8ð 8�ñ 8ô 8ð 8ðv2ð 2ð 2ð 2ð 2 Ô Eñ 2ô 2ð 2ðgð gð gð gð g˜Ô=ñ gô gð gðTtð tð tð tð tñ tô tð tðn&ð &ð &ð &ð & /Ô"Iñ &ô &ð &ð .Ð ð&ð &ð &ð &ð & VÔ%Fñ &ô &ð &ð&ð &ð &ð &ð & VÔ%Fñ &ô &ð &ð 8Ð Ð Ð r#   