U e5di€ã@sœdZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z ddl m Z ddl m Z ddl mZddl mZdd l mZdd l mZdd l mZdd lmZd ZdZdZdZdZdZdZGdd„de jƒZGdd„de jƒZGdd„deƒZGdd„deƒZ Gdd„de!ƒZ"Gdd„dej#ƒZ$Gdd „d ej%ƒZ&Gd!d"„d"ƒZ'Gd#d$„d$e j(ƒZ)e$Z*Gd%d&„d&e j+ƒZ,Gd'd(„d(e j+ƒZ-e-Z.dS))z.Selector and proactor event loops for Windows.éNé)Úevents)Úbase_subprocess)Úfutures)Ú exceptions)Úproactor_events)Úselector_events)Útasks)Ú windows_utils)Úlogger)ÚSelectorEventLoopÚProactorEventLoopÚ IocpProactorÚDefaultEventLoopPolicyÚWindowsSelectorEventLoopPolicyÚWindowsProactorEventLoopPolicyìÿÿiÉiÔgü©ñÒMbP?gš™™™™™¹?cs^eZdZdZddœ‡fdd„ Z‡fdd„Zdd „Z‡fd d „Z‡fd d „Z‡fdd„Z ‡Z S)Ú_OverlappedFuturez†Subclass of Future which represents an overlapped operation. Cancelling it will immediately cancel the overlapped operation. N©Úloopcs&tƒj|d�|jr|jd=||_dS©Nréÿÿÿÿ)ÚsuperÚ__init__Ú_source_tracebackÚ_ov)ÚselfÚovr©Ú __class__©ú./usr/lib64/python3.8/asyncio/windows_events.pyr1sz_OverlappedFuture.__init__csHtƒ ¡}|jdk rD|jjr dnd}| dd|›d|jjd›d�¡|S)NÚpendingZ completedrz overlapped=)rÚ _repr_inforr"ÚinsertÚaddress©rÚinfoÚstaterr r!r%7s    z_OverlappedFuture._repr_infoc Csr|jdkrdSz|j ¡WnJtk rf}z,d||dœ}|jrJ|j|d<|j |¡W5d}~XYnXd|_dS)Nz&Cancelling an overlapped future failed©ÚmessageÚ exceptionÚfutureÚsource_traceback)rÚcancelÚOSErrorrÚ_loopÚcall_exception_handler)rÚexcÚcontextr r r!Ú_cancel_overlapped>s ý z$_OverlappedFuture._cancel_overlappedcs| ¡tƒ ¡S©N)r6rr0©rrr r!r0Nsz_OverlappedFuture.cancelcstƒ |¡| ¡dSr7)rÚ set_exceptionr6©rr-rr r!r9Rs z_OverlappedFuture.set_exceptioncstƒ |¡d|_dSr7)rÚ set_resultr©rÚresultrr r!r;Vs z_OverlappedFuture.set_result) Ú__name__Ú __module__Ú __qualname__Ú__doc__rr%r6r0r9r;Ú __classcell__r r rr!r+s   rcsneZdZdZddœ‡fdd„ Zdd„Z‡fdd „Zd d „Zd d „Z‡fdd„Z ‡fdd„Z ‡fdd„Z ‡Z S)Ú_BaseWaitHandleFuturez2Subclass of Future which represents a wait handle.Nrcs8tƒj|d�|jr|jd=||_||_||_d|_dS)NrrT)rrrrÚ_handleÚ _wait_handleÚ _registered)rrÚhandleÚ wait_handlerrr r!r^sz_BaseWaitHandleFuture.__init__cCst |jd¡tjkS©Nr)Ú_winapiZWaitForSingleObjectrDZ WAIT_OBJECT_0r8r r r!Ú_pollls ÿz_BaseWaitHandleFuture._pollcsdtƒ ¡}| d|jd›�¡|jdk rB| ¡r4dnd}| |¡|jdk r`| d|jd›�¡|S)Nzhandle=r#ZsignaledZwaitingz wait_handle=)rr%ÚappendrDrKrEr(rr r!r%qs    z _BaseWaitHandleFuture._repr_infocCs d|_dSr7)r©rÚfutr r r!Ú_unregister_wait_cb{sz)_BaseWaitHandleFuture._unregister_wait_cbc Csš|js dSd|_|j}d|_zt |¡Wn`tk rŠ}zB|jtjkrzd||dœ}|jrd|j|d<|j  |¡WY¢dSW5d}~XYnX|  d¡dS©NFz$Failed to unregister the wait handler+r/) rFrEÚ _overlappedZUnregisterWaitr1ÚwinerrorÚERROR_IO_PENDINGrr2r3rO©rrHr4r5r r r!Ú_unregister_wait€s$ ý  z&_BaseWaitHandleFuture._unregister_waitcs| ¡tƒ ¡Sr7)rUrr0r8rr r!r0˜sz_BaseWaitHandleFuture.cancelcs| ¡tƒ |¡dSr7)rUrr9r:rr r!r9œsz#_BaseWaitHandleFuture.set_exceptioncs| ¡tƒ |¡dSr7)rUrr;r<rr r!r; sz _BaseWaitHandleFuture.set_result) r>r?r@rArrKr%rOrUr0r9r;rBr r rr!rC[s   rCcsFeZdZdZddœ‡fdd„ Zdd„Z‡fdd „Z‡fd d „Z‡ZS) Ú_WaitCancelFuturezoSubclass of Future which represents a wait for the cancellation of a _WaitHandleFuture using an event. Nrcstƒj||||d�d|_dS)Nr)rrÚ_done_callback)rrÚeventrHrrr r!rªsz_WaitCancelFuture.__init__cCs tdƒ‚dS)Nz'_WaitCancelFuture must not be cancelled)Ú RuntimeErrorr8r r r!r0¯sz_WaitCancelFuture.cancelcs$tƒ |¡|jdk r | |¡dSr7)rr;rWr<rr r!r;²s  z_WaitCancelFuture.set_resultcs$tƒ |¡|jdk r | |¡dSr7)rr9rWr:rr r!r9·s  z_WaitCancelFuture.set_exception) r>r?r@rArr0r;r9rBr r rr!rV¥s  rVcs6eZdZddœ‡fdd„ Z‡fdd„Zdd„Z‡ZS) Ú_WaitHandleFutureNrcs<tƒj||||d�||_d|_t dddd¡|_d|_dS)NrTF)rrÚ _proactorZ_unregister_proactorrQZ CreateEventÚ_eventÚ _event_fut)rrrGrHÚproactorrrr r!r¾s z_WaitHandleFuture.__init__csF|jdk r"t |j¡d|_d|_|j |j¡d|_tƒ |¡dSr7) r\rJÚ CloseHandler]r[Ú _unregisterrrrOrMrr r!rOÅs   z%_WaitHandleFuture._unregister_wait_cbc Cs¨|js dSd|_|j}d|_zt ||j¡Wn`tk rŽ}zB|jtjkr~d||dœ}|jrh|j|d<|j   |¡WY¢dSW5d}~XYnX|j   |j|j ¡|_dSrP)rFrErQZUnregisterWaitExr\r1rRrSrr2r3r[Ú _wait_cancelrOr]rTr r r!rU×s( ý   ÿz"_WaitHandleFuture._unregister_wait)r>r?r@rrOrUrBr r rr!rZ½s rZc@s<eZdZdZdd„Zdd„Zdd„Zdd „Zd d „ZeZ d S) Ú PipeServerzXClass representing a pipe server. This is much like a bound, listening socket. cCs,||_t ¡|_d|_d|_| d¡|_dS©NT)Ú_addressÚweakrefÚWeakSetÚ_free_instancesÚ_pipeÚ_accept_pipe_futureÚ_server_pipe_handle)rr'r r r!rös  zPipeServer.__init__cCs|j| d¡}|_|S)NF)rhrj)rÚtmpr r r!Ú_get_unconnected_pipesz PipeServer._get_unconnected_pipec Csr| ¡r dStjtjB}|r&|tjO}t |j|tjtjBtj Btj t j t j tj tj¡}t  |¡}|j |¡|Sr7)ÚclosedrJZPIPE_ACCESS_DUPLEXZFILE_FLAG_OVERLAPPEDZFILE_FLAG_FIRST_PIPE_INSTANCEZCreateNamedPiperdZPIPE_TYPE_MESSAGEZPIPE_READMODE_MESSAGEZ PIPE_WAITZPIPE_UNLIMITED_INSTANCESr ZBUFSIZEZNMPWAIT_WAIT_FOREVERÚNULLÚ PipeHandlergÚadd)rÚfirstÚflagsÚhÚpiper r r!rjs(   ÿú  zPipeServer._server_pipe_handlecCs |jdkSr7)rdr8r r r!rmszPipeServer.closedcCsR|jdk r|j ¡d|_|jdk rN|jD] }| ¡q*d|_d|_|j ¡dSr7)rir0rdrgÚcloserhÚclear)rrtr r r!rus     zPipeServer.closeN) r>r?r@rArrlrjrmruÚ__del__r r r r!rbñs  rbc@seZdZdZdS)Ú_WindowsSelectorEventLoopz'Windows version of selector event loop.N)r>r?r@rAr r r r!rx,srxcsHeZdZdZd ‡fdd„ Z‡fdd„Zdd„Zd d „Zdd d „Z‡Z S)r z2Windows version of proactor event loop using IOCP.Ncs|dkrtƒ}tƒ |¡dSr7)rrr)rr^rr r!r3szProactorEventLoop.__init__c sXz| |j¡tƒ ¡W5|jdk rR|jj}|j ¡|dk rL|j |¡d|_XdSr7) Z_self_reading_futurerr0r[r`Ú call_soonZ_loop_self_readingrÚ run_forever©rrrr r!rz8s    zProactorEventLoop.run_forevercÃs8|j |¡}|IdH}|ƒ}|j||d|id�}||fS)NÚaddr©Úextra)r[Ú connect_pipeÚ_make_duplex_pipe_transport)rÚprotocol_factoryr'ÚfrtÚprotocolÚtransr r r!Úcreate_pipe_connectionKs  ÿz(ProactorEventLoop.create_pipe_connectioncƒs.tˆƒ‰d‡‡‡‡‡fdd„ ‰ˆ ˆ¡ˆgS)Nc s d}zn|rN| ¡}ˆj |¡ˆ ¡r4| ¡WdSˆƒ}ˆj||dˆid�ˆ ¡}|dkrdWdSˆj |¡}Wn„t k rÖ}zF|r°|  ¡dkr°ˆ  d||dœ¡| ¡nˆj rÆt jd|dd�W5d}~XYn2tjk rö|rò| ¡YnX|ˆ_| ˆ¡dS) Nr|r}rzPipe accept failed)r,r-rtzAccept pipe failed on pipe %rT)Úexc_info)r=rgÚdiscardrmrur€rlr[Ú accept_piper1Úfilenor3Z_debugr ZwarningrÚCancelledErrorriÚadd_done_callback)r‚rtrƒr4©r'Úloop_accept_piper�rZserverr r!r�VsH ÿý ÿz>ProactorEventLoop.start_serving_pipe..loop_accept_pipe)N)rbry)rr�r'r rŒr!Ústart_serving_pipeSs( z$ProactorEventLoop.start_serving_pipec Ës„| ¡} t||||||||f| |dœ| —Ž} z| IdHWnDttfk rT‚Yn,tk r~|  ¡|  ¡IdH‚YnX| S)N)Úwaiterr~)Ú create_futureÚ_WindowsSubprocessTransportÚ SystemExitÚKeyboardInterruptÚ BaseExceptionruZ_wait) rrƒÚargsÚshellÚstdinÚstdoutÚstderrÚbufsizer~Úkwargsr�Ztranspr r r!Ú_make_subprocess_transport�s* ÿþýz,ProactorEventLoop._make_subprocess_transport)N)N) r>r?r@rArrzr…rŽrœrBr r rr!r 0s 0þr c@súeZdZdZd;dd„Zdd„Zdd„Zd d „Zddd„Z d?dd„Z d@dd„Z dAdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„ZdBd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„ZdCd3d4„Zd5d6„Zd7d8„Zd9d:„Zd S)Drz#Proactor implementation using IOCP.rcCsDd|_g|_t tjtd|¡|_i|_t  ¡|_ g|_ t  ¡|_ dSrI) r2Ú_resultsrQÚCreateIoCompletionPortÚINVALID_HANDLE_VALUErnÚ_iocpÚ_cachererfrFÚ _unregisteredÚ_stopped_serving)rZ concurrencyr r r!r˜sÿ zIocpProactor.__init__cCs|jdkrtdƒ‚dS)NzIocpProactor is closed)r rYr8r r r!Ú _check_closed¢s zIocpProactor._check_closedcCsFdt|jƒdt|jƒg}|jdkr0| d¡d|jjd |¡fS)Nzoverlapped#=%sz result#=%srmz<%s %s>ú )Úlenr¡r�r rLrr>Újoin)rr)r r r!Ú__repr__¦s   ÿ  zIocpProactor.__repr__cCs ||_dSr7)r2)rrr r r!Úset_loop­szIocpProactor.set_loopNcCs |js| |¡|j}g|_|Sr7)r�rK)rÚtimeoutrkr r r!Úselect°s  zIocpProactor.selectcCs|j ¡}| |¡|Sr7)r2r�r;)rÚvaluerNr r r!Ú_result·s  zIocpProactor._resultrcCs~| |¡t t¡}z4t|tjƒr6| | ¡||¡n| | ¡|¡Wnt k rf|  d¡YSXdd„}|  |||¡S)Nóc SsRz | ¡WStk rL}z$|jtjtjfkr:t|jŽ‚n‚W5d}~XYnXdSr7©Ú getresultr1rRrQZERROR_NETNAME_DELETEDZERROR_OPERATION_ABORTEDÚConnectionResetErrorr•©r„Úkeyrr4r r r!Ú finish_recvÇs ÿ z&IocpProactor.recv..finish_recv) Ú_register_with_iocprQÚ OverlappedrnÚ isinstanceÚsocketZWSARecvr‰ZReadFileÚBrokenPipeErrorr­Ú _register©rÚconnÚnbytesrrrr´r r r!Úrecv¼s    zIocpProactor.recvcCs~| |¡t t¡}z4t|tjƒr6| | ¡||¡n| | ¡|¡Wnt k rf|  d¡YSXdd„}|  |||¡S)Nrc SsRz | ¡WStk rL}z$|jtjtjfkr:t|jŽ‚n‚W5d}~XYnXdSr7r¯r²r r r!r´Þs ÿ z+IocpProactor.recv_into..finish_recv) rµrQr¶rnr·r¸Z WSARecvIntor‰Z ReadFileIntor¹r­rº)rr¼Úbufrrrr´r r r!Ú recv_intoÓs    zIocpProactor.recv_intocCs`| |¡t t¡}z| | ¡||¡Wntk rH| d¡YSXdd„}| |||¡S)N)r®Nc SsRz | ¡WStk rL}z$|jtjtjfkr:t|jŽ‚n‚W5d}~XYnXdSr7r¯r²r r r!r´òs ÿ z*IocpProactor.recvfrom..finish_recv) rµrQr¶rnZ WSARecvFromr‰r¹r­rºr»r r r!Úrecvfromês   zIocpProactor.recvfromcCs>| |¡t t¡}| | ¡|||¡dd„}| |||¡S)Nc SsRz | ¡WStk rL}z$|jtjtjfkr:t|jŽ‚n‚W5d}~XYnXdSr7r¯r²r r r!Ú finish_sends ÿ z(IocpProactor.sendto..finish_send)rµrQr¶rnZ WSASendTor‰rº)rr¼r¿rrr|rrÂr r r!Úsendtoþs    zIocpProactor.sendtocCsZ| |¡t t¡}t|tjƒr4| | ¡||¡n| | ¡|¡dd„}|  |||¡S)Nc SsRz | ¡WStk rL}z$|jtjtjfkr:t|jŽ‚n‚W5d}~XYnXdSr7r¯r²r r r!rÂs ÿ z&IocpProactor.send..finish_send) rµrQr¶rnr·r¸ZWSASendr‰Z WriteFilerº)rr¼r¿rrrrÂr r r!Úsends    zIocpProactor.sendcsv| ˆ¡| ˆj¡‰t t¡}| ˆ ¡ˆ ¡¡‡‡fdd„}dd„}| |ˆ|¡}||ˆƒ}t j ||j d�|S)NcsD| ¡t dˆ ¡¡}ˆ tjtj|¡ˆ  ˆ  ¡¡ˆˆ  ¡fS)Nz@P) r°ÚstructZpackr‰Ú setsockoptr¸Ú SOL_SOCKETrQZSO_UPDATE_ACCEPT_CONTEXTÚ settimeoutZ gettimeoutZ getpeername)r„r³rr¿©r¼Úlistenerr r!Ú finish_accept*sÿz*IocpProactor.accept..finish_acceptcÓs4z|IdHWn tjk r.| ¡‚YnXdSr7)rrŠru)r.r¼r r r!Ú accept_coro3s z(IocpProactor.accept..accept_coror) rµÚ_get_accept_socketÚfamilyrQr¶rnZAcceptExr‰rºr Z ensure_futurer2)rrÊrrËrÌr.Úcoror rÉr!Úaccept$s     zIocpProactor.acceptc s̈jtjkr4t ˆ ¡|¡|j ¡}| d¡|S|  ˆ¡zt  ˆ ¡ˆj ¡WnBt k r–}z$|j tjkrt‚ˆ ¡ddkr†‚W5d}~XYnXt t¡}| ˆ ¡|¡‡fdd„}| |ˆ|¡S)Nrrcs| ¡ˆ tjtjd¡ˆSrI)r°rÆr¸rÇrQZSO_UPDATE_CONNECT_CONTEXT©r„r³r©r¼r r!Úfinish_connectVs ÿz,IocpProactor.connect..finish_connect)Útyper¸Z SOCK_DGRAMrQZ WSAConnectr‰r2r�r;rµZ BindLocalrÎr1rRÚerrnoZ WSAEINVALZ getsocknamer¶rnZ ConnectExrº)rr¼r'rNÚerrÓr rÒr!Úconnect@s"       zIocpProactor.connectc Csb| |¡t t¡}|d@}|d?d@}| | ¡t | ¡¡|||dd¡dd„}| |||¡S)Nré rc SsRz | ¡WStk rL}z$|jtjtjfkr:t|jŽ‚n‚W5d}~XYnXdSr7r¯r²r r r!Úfinish_sendfileis ÿ z.IocpProactor.sendfile..finish_sendfile) rµrQr¶rnZ TransmitFiler‰ÚmsvcrtZ get_osfhandlerº) rZsockÚfileÚoffsetÚcountrZ offset_lowZ offset_highrÙr r r!Úsendfile_s     ý zIocpProactor.sendfilecsJ| ˆ¡t t¡}| ˆ ¡¡}|r0| ˆ¡S‡fdd„}| |ˆ|¡S)Ncs | ¡ˆSr7)r°rÑ©rtr r!Úfinish_accept_pipesz4IocpProactor.accept_pipe..finish_accept_pipe)rµrQr¶rnZConnectNamedPiper‰r­rº)rrtrZ connectedràr rßr!rˆts    zIocpProactor.accept_pipec Ãsrt}zt |¡}WqhWn0tk rF}z|jtjkr6‚W5d}~XYnXt|dtƒ}t  |¡IdHqt   |¡S)Né) ÚCONNECT_PIPE_INIT_DELAYrQZ ConnectPiper1rRZERROR_PIPE_BUSYÚminÚCONNECT_PIPE_MAX_DELAYr Úsleepr ro)rr'ZdelayrGr4r r r!r…s  zIocpProactor.connect_pipecCs| ||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)rrGrªr r r!Úwait_for_handle˜szIocpProactor.wait_for_handlecCs| |dd¡}||_|Src)rærW)rrXZ done_callbackrNr r r!ra szIocpProactor._wait_cancelcs¢| ¡|dkrtj}nt |d¡}t t¡}t ||j |j |¡}|r\t ||||j d�‰nt |||||j d�‰ˆjr~ˆjd=‡fdd„}ˆ|d|f|j|j <ˆS)Nç@�@rrcsˆ ¡Sr7)rKrÑ©r‚r r!Úfinish_wait_for_handle½sz=IocpProactor._wait_for_handle..finish_wait_for_handler)r¤rJÚINFINITEÚmathÚceilrQr¶rnZRegisterWaitWithQueuer r'rVr2rZrr¡)rrGrªZ _is_cancelÚmsrrHrêr rér!ræ§s* ÿ ÿ zIocpProactor._wait_for_handlecCs0||jkr,|j |¡t | ¡|jdd¡dSrI)rFrprQržr‰r ©rÚobjr r r!rµÉs  z IocpProactor._register_with_iocpc CsŠ| ¡t||jd�}|jr$|jd=|jsrz|dd|ƒ}Wn,tk rf}z| |¡W5d}~XYn X| |¡||||f|j|j <|Sr) r¤rr2rr"r1r9r;r¡r')rrrðÚcallbackr‚r¬rÖr r r!rºÓs zIocpProactor._registercCs| ¡|j |¡dS)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¢rLr{r r r!r`ószIocpProactor._unregistercCst |¡}| d¡|SrI)r¸rÈ)rrÎÚsr r r!rÍýs  zIocpProactor._get_accept_socketc Cs†|dkrt}n0|dkr tdƒ‚nt |d¡}|tkr>tdƒ‚t |j|¡}|dkrX�qZd}|\}}}}z|j |¡\}} } } WnXt k rØ|j   ¡r¸|j   dd||||fdœ¡|dtj fkrÐt |¡Yq>YnX| |jkrî| ¡q>| ¡s>z| ||| ƒ} Wn:tk �r@} z| | ¡|j |¡W5d} ~ XYq>X| | ¡|j |¡q>|jD]} |j | jd¡�q`|j ¡dS)Nrznegative timeoutrèztimeout too bigz8GetQueuedCompletionStatus() returned an unexpected eventz)err=%s transferred=%s key=%#x address=%#x)r,Ústatus)rëÚ ValueErrorrìrírQZGetQueuedCompletionStatusr r¡ÚpopÚKeyErrorr2Z get_debugr3rŸrJr_r£r0Zdoner1r9r�rLr;r¢r'rv)rrªrîróÚerrZ transferredr³r'r‚rrðrñr¬rÖr r r!rKsL    ÿý        zIocpProactor._pollcCs|j |¡dSr7)r£rprïr r r!Ú _stop_serving9szIocpProactor._stop_servingc Cs|jdkrdSt|j ¡ƒD]ˆ\}\}}}}| ¡r6qt|tƒrBqz | ¡Wqtk r¢}z6|j dk r’d||dœ}|j r†|j |d<|j   |¡W5d}~XYqXqd}t   ¡} | |} |jrú| t   ¡krît d|t   ¡| ¡t   ¡|} | |¡qºg|_t |j¡d|_dS)NzCancelling a future failedr+r/gð?z,%r is running after closing for %.1f seconds)r Úlistr¡ÚitemsZ cancelledr·rVr0r1r2rr3ÚtimeÚ monotonicr ÚdebugrKr�rJr_) rr'rNrrðrñr4r5Z msg_updateZ start_timeZnext_msgr r r!ru?s@    ý    ÿ   zIocpProactor.closecCs | ¡dSr7)rur8r r r!rwnszIocpProactor.__del__)r)N)r)r)r)rN)r)N)N)r>r?r@rArr¤r¨r©r«r­r¾rÀrÁrÃrÄrÐr×rÞrˆrrçrarærµrºr`rÍrKrørurwr r r r!r•s8        "    7/rc@seZdZdd„ZdS)r‘c  sPtj|f|||||dœ|—Žˆ_‡fdd„}ˆjj tˆjjƒ¡} |  |¡dS)N)r–r—r˜r™ršcsˆj ¡}ˆ |¡dSr7)Ú_procZpollZ_process_exited)r‚Ú returncoder8r r!rñys z4_WindowsSubprocessTransport._start..callback) r ÚPopenrþr2r[rçÚintrDr‹) rr•r–r—r˜r™ršr›rñr‚r r8r!Ú_starttsÿþþ z"_WindowsSubprocessTransport._startN)r>r?r@rr r r r!r‘rsr‘c@seZdZeZdS)rN)r>r?r@r Ú _loop_factoryr r r r!r„src@seZdZeZdS)rN)r>r?r@r rr r r r!rˆsr)/rArQrJrÕrìrÚr¸rÅrûreÚrrrrrrr r Úlogr Ú__all__rnrëZERROR_CONNECTION_REFUSEDZERROR_CONNECTION_ABORTEDrâräZFuturerrCrVrZÚobjectrbZBaseSelectorEventLooprxZBaseProactorEventLoopr rZBaseSubprocessTransportr‘r ZBaseDefaultEventLoopPolicyrrrr r r r!ÚsR         0J4;e`