
    2\hx&                    4   	 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
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n# e$ r dZY nw xY w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dlmZ ddlmZ ddl m!Z! dZ"dZ#dZ$ e%e	d          Z&dZ'd Z(d Z)d Z*d$dZ+d%dZ,d Z- e%e	d          rd Z.nd Z.d Z/ G d dej0                  Z1 G d  d!ej2                  Z3 G d" d#ej4                  Z5dS )&    N   )	constants)
coroutines)events)
exceptions)futures)	protocols)sslproto)	staggered)tasks)
transports)trsock)logger)BaseEventLoopServerd   g      ?AF_INET6iQ c                     | j         }t          t          |dd           t          j                  rt          |j                  S t          |           S )N__self__)	_callback
isinstancegetattrr   Taskreprr   str)handlecbs     =/opt/python-3.11.14/usr/lib/python3.11/asyncio/base_events.py_format_handler   G   sF    		B'"j$//<< BK   6{{    c                 h    | t           j        k    rdS | t           j        k    rdS t          |           S )Nz<pipe>z<stdout>)
subprocessPIPESTDOUTr   )fds    r   _format_piper&   P   s2    	Z_x	z 	 	 zBxxr    c                     t          t          d          st          d          	 |                     t          j        t          j        d           d S # t          $ r t          d          w xY w)NSO_REUSEPORTz)reuse_port not supported by socket moduler   zTreuse_port not supported by socket module, SO_REUSEPORT defined but not implemented.)hasattrsocket
ValueError
setsockopt
SOL_SOCKETr(   OSErrorsocks    r   _set_reuseportr1   Y   s    6>** JDEEE	JOOF-v/BAFFFFF 	J 	J 	J I J J J	Js   +A A-c           	      ^   t          t          d          sd S |dt          j        t          j        hvs| d S |t          j        k    rt          j        }n|t          j        k    rt          j        }nd S |d}net          |t                    r	|dk    rd}nGt          |t                    r	|dk    rd}n)	 t          |          }n# t          t          f$ r Y d S w xY w|t          j        k    r4t          j        g}t          r|                    t          j                   n|g}t          | t                    r|                     d          } d| v rd S |D ]V}	 t          j        ||            t          r|t          j        k    r|||d| |||ffc S |||d| |ffc S # t&          $ r Y Sw xY wd S )N	inet_ptonr   r     idna%)r)   r*   IPPROTO_TCPIPPROTO_UDPSOCK_STREAM
SOCK_DGRAMr   bytesr   int	TypeErrorr+   	AF_UNSPECAF_INET	_HAS_IPv6appendr   decoder3   r.   )	hostportfamilytypeprotoflowinfoscopeidafsafs	            r   _ipaddr_inforL   d   s    6;'' Q*F,>???Ltv!!!"	"	"	""t|	D%	 	  	TS[[	D#		 42::	t99DD:& 	 	 	44	 !!!~ 	(JJv'''h$ #{{6""
d{{ t 	 		R&&& 9R6?224T47,KKKKK4T4L8888 	 	 	D	 4s*   5C CC6FF
F*)F*c                    	 t          j                    }| D ].}|d         }||vrg ||<   ||                             |           /t          |                                          }g }|dk    r4|                    |d         d |dz
                      |d         d |dz
  = |                    d t          j                            t          j	        |           D                        |S )Nr   r   c              3      K   | ]}||V  	d S N ).0as     r   	<genexpr>z(_interleave_addrinfos.<locals>.<genexpr>   s0        ] 	
]]] r    )
collectionsOrderedDictrA   listvaluesextend	itertoolschainfrom_iterablezip_longest)	addrinfosfirst_address_family_countaddrinfos_by_familyaddrrE   addrinfos_lists	reordereds          r   _interleave_addrinfosrc      s%   7%133 1 1a,,,*,'F#**40000.557788OI!A%%+,K-G!-K,KLMMMA> :Q >>?  ?00!?3
 
      r    c                     |                                  s2|                                 }t          |t          t          f          rd S t          j        |                                            d S rO   )	cancelled	exceptionr   
SystemExitKeyboardInterruptr   	_get_loopstop)futexcs     r   _run_until_complete_cbrm      sa    ==?? mmoocJ(9:;; 	 Fc!!!!!r    TCP_NODELAYc                     | j         t          j        t          j        hv rW| j        t          j        k    rD| j        t          j        k    r1|                     t          j        t          j	        d           d S d S d S d S Nr   )
rE   r*   r?   r   rF   r9   rG   r7   r,   rn   r/   s    r   _set_nodelayrq      sn    KFNFO<<<	V///
f000OOF.0BAFFFFF =<//00r    c                     d S rO   rP   r/   s    r   rq   rq      s    r    c                 j    t           )t          | t           j                  rt          d          d S d S )Nz"Socket cannot be of type SSLSocket)sslr   	SSLSocketr=   r/   s    r   _check_ssl_socketrv      s1    
:dCM::<=== r    c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )_SendfileFallbackProtocolc                    t          |t          j                  st          d          || _        |                                | _        |                                | _        |j	        | _
        |                                 |                    |            | j
        r%| j        j                                        | _        d S d | _        d S )Nz.transport should be _FlowControlMixin instance)r   r   _FlowControlMixinr=   
_transportget_protocol_proto
is_reading_should_resume_reading_protocol_paused_should_resume_writingpause_readingset_protocol_loopcreate_future_write_ready_fut)selftransps     r   __init__z"_SendfileFallbackProtocol.__init__   s    &*">?? 	NLMMM ))++&,&7&7&9&9#&,&=#D!!!& 	)$(O$9$G$G$I$ID!!!$(D!!!r    c                    K   | j                                         rt          d          | j        }|d S | d {V  d S )NzConnection closed by peer)r{   
is_closingConnectionErrorr   )r   rk   s     r   drainz_SendfileFallbackProtocol.drain   sR      ?%%'' 	?!"=>>>#;F									r    c                      t          d          )Nz?Invalid state: connection should have been established already.RuntimeError)r   	transports     r   connection_madez)_SendfileFallbackProtocol.connection_made   s     N O O 	Or    c                     | j         D|(| j                             t          d                     n| j                             |           | j                            |           d S )NzConnection is closed by peer)r   set_exceptionr   r}   connection_lost)r   rl   s     r   r   z)_SendfileFallbackProtocol.connection_lost   sw     , {%33#$BCCE E E E %33C888##C(((((r    c                 ^    | j         d S | j        j                                        | _         d S rO   )r   r{   r   r   r   s    r   pause_writingz'_SendfileFallbackProtocol.pause_writing   s/     ,F $ 5 C C E Er    c                 Z    | j         d S | j                             d           d | _         d S )NF)r   
set_resultr   s    r   resume_writingz(_SendfileFallbackProtocol.resume_writing   s5     (F((/// $r    c                      t          d          Nz'Invalid state: reading should be pausedr   )r   datas     r   data_receivedz'_SendfileFallbackProtocol.data_received       DEEEr    c                      t          d          r   r   r   s    r   eof_receivedz&_SendfileFallbackProtocol.eof_received  r   r    c                   K   | j                             | j                   | j        r| j                                          | j        | j                                         | j        r| j                                         d S d S rO   )	r{   r   r}   r   resume_readingr   cancelr   r   r   s    r   restorez!_SendfileFallbackProtocol.restore  s      $$T[111& 	-O**,,, , !((***& 	)K&&(((((	) 	)r    N)__name__
__module____qualname__r   r   r   r   r   r   r   r   r   rP   r    r   rx   rx      s        ) ) )  O O O	) 	) 	)F F F
% % %F F FF F F
) 
) 
) 
) 
)r    rx   c                   p    e Zd Z	 ddZd Zd Zd Zd Zd Zd Z	d	 Z
ed
             Zd Zd Zd Zd ZdS )r   Nc                     || _         || _        d| _        g | _        || _        || _        || _        || _        || _        d| _	        d | _
        d S )Nr   F)r   _sockets_active_count_waiters_protocol_factory_backlog_ssl_context_ssl_handshake_timeout_ssl_shutdown_timeout_serving_serving_forever_fut)r   loopsocketsprotocol_factoryssl_contextbacklogssl_handshake_timeoutssl_shutdown_timeouts           r   r   zServer.__init__  s[    
!1'&;#%9"$(!!!r    c                 2    d| j         j         d| j        dS )N<z	 sockets=>)	__class__r   r   r   s    r   __repr__zServer.__repr__#  s"    F4>*FFT\FFFFr    c                 &    | xj         dz  c_         d S rp   )r   r   s    r   _attachzServer._attach&  s    ar    c                 z    | xj         dz  c_         | j         dk    r| j        |                                  d S d S d S )Nr   r   )r   r   _wakeupr   s    r   _detachzServer._detach*  sJ    a""t}'<LLNNNNN #"'<'<r    c                 ~    | j         }d | _         |D ]+}|                                s|                    |           ,d S rO   )r   doner   )r   waiterswaiters      r   r   zServer._wakeup0  sN    - 	* 	*F;;== *!!&)))	* 	*r    c           
          | j         rd S d| _         | j        D ]U}|                    | j                   | j                            | j        || j        | | j        | j        | j	                   Vd S NT)
r   r   listenr   r   _start_servingr   r   r   r   )r   r0   s     r   r   zServer._start_serving7  s    = 	FM 	, 	,DKK&&&J%%&d.?dmT%@*, , , ,	, 	,r    c                     | j         S rO   )r   r   s    r   get_loopzServer.get_loopB  s
    zr    c                     | j         S rO   )r   r   s    r   
is_servingzServer.is_servingE  s
    }r    c                 P    | j         dS t          d | j         D                       S )NrP   c              3   >   K   | ]}t          j        |          V  d S rO   )r   TransportSocket)rQ   ss     r   rS   z!Server.sockets.<locals>.<genexpr>L  s-      FF1V+A..FFFFFFr    )r   tupler   s    r   r   zServer.socketsH  s.    = 2FFFFFFFFr    c                 8   | j         }|d S d | _         |D ]}| j                            |           d| _        | j        9| j                                        s | j                                         d | _        | j        dk    r|                                  d S d S )NFr   )	r   r   _stop_servingr   r   r   r   r   r   )r   r   r0   s      r   closezServer.closeN  s    -?F 	+ 	+DJ$$T****%1-2244 2%,,...(,D%""LLNNNNN #"r    c                 f   K   |                                   t          j        d           d {V  d S )Nr   )r   r   sleepr   s    r   start_servingzServer.start_servinga  s@       k!nnr    c                   K   | j         t          d| d          | j        t          d| d          |                                  | j                                        | _         	 | j          d {V  nH# t          j        $ r6 	 |                                  | 	                                 d {V   #  xY ww xY w	 d | _         d S # d | _         w xY w)Nzserver z, is already being awaited on serve_forever()z
 is closed)
r   r   r   r   r   r   r   CancelledErrorr   wait_closedr   s    r   serve_foreverzServer.serve_foreverg  s(     $0N$NNNP P P= ;;;;<<<$(J$<$<$>$>!		-+++++++++( 	 	 	

&&(((((((((	 , )-D%%%D%,,,,s6   *A8 7C
 8B=.B76B=7B99B==C
 
	Cc                    K   | j         | j        d S | j                                        }| j                            |           | d {V  d S rO   )r   r   r   r   rA   )r   r   s     r   r   zServer.wait_closed|  sX      = DM$9F))++V$$$r    rO   )r   r   r   r   r   r   r   r   r   r   r   propertyr   r   r   r   r   rP   r    r   r   r     s         >B) ) ) )G G G       * * *	, 	, 	,     G G XG
  &  - - -*    r    r   c                   J   e Zd Zd Zd Zd ZddddZd Zd Zd\ddd	d
Z		 d\ddddddd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 Zd Zd Zd Zd Zd Zd Zd Zd  Zd! Zej        fd"Z d# Z!d$ Z"dd%d&Z#dd%d'Z$dd%d(Z%d) Z&d* Z'd+ Z(dd%d,Z)d- Z*d. Z+d/ Z,d0d0d0d0d1d2Z-d_d3Z.d`dd4d5Z/d6 Z0d7 Z1d8 Z2d\d9Z3	 d^dd0d0d0dddddddd:d;Z4	 	 	 dad<Z5d`dd4d=Z6d> Z7d? Z8ddddd@dAZ9	 d^d0d0d0ddddBdCZ:d0e;j<        d0d0d1dDZ=dE Z>	 d^e;j?        e;j@        ddFdddddddG
dHZAddddIdJZBdK ZCdL ZDdM ZEeFjG        eFjG        eFjG        ddd0ddddN	dOZHeFjG        eFjG        eFjG        ddd0ddddN	dPZIdQ ZJdR ZKdS ZLdT ZMdU ZNdV ZOdW ZPdX ZQdY ZRdZ ZSd[ ZTdS )br   c                    d| _         d| _        d| _        t          j                    | _        g | _        d | _        d| _        d | _	        t          j        d          j        | _        d | _        |                     t!          j                               d| _        d | _        d | _        d| _        d | _        t/          j                    | _        d| _        d| _        d S )Nr   F	monotonicg?)_timer_cancelled_count_closed	_stoppingrT   deque_ready
_scheduled_default_executor_internal_fds
_thread_idtimeget_clock_info
resolution_clock_resolution_exception_handler	set_debugr   _is_debug_modeslow_callback_duration_current_handle_task_factory"_coroutine_origin_tracking_enabled&_coroutine_origin_tracking_saved_depthweakrefWeakSet
_asyncgens_asyncgens_shutdown_called_executor_shutdown_calledr   s    r   r   zBaseEventLoop.__init__  s    &'#!'))!% !%!4[!A!A!L"&z022333 '*##!27/6:3 "/++*/').&&&r    c           	          d| j         j         d|                                  d|                                  d|                                  d	S )Nr   z	 running=z closed=z debug=r   )r   r   
is_running	is_closed	get_debugr   s    r   r   zBaseEventLoop.__repr__  sp    C' C C$//2C2C C Cnn&&C C/3~~/?/?C C C	
r    c                 .    	 t          j        |           S )Nr   )r   Futurer   s    r   r   zBaseEventLoop.create_future  s    :~4((((r    N)namecontextc                   	 |                                   | j        (t          j        || ||          }|j        r|j        d= nF||                     | |          }n|                     | ||          }t          j        ||           |S )N)r   r  r	  r	  )_check_closedr   r   r   _source_traceback_set_task_name)r   coror  r	  tasks        r   create_taskzBaseEventLoop.create_task  s    	 	%:dD'JJJD% /*2.))$55))$g)FF t,,,r    c                 V    	 |t          |          st          d          || _        d S )Nz'task factory must be a callable or None)callabler=   r   )r   factorys     r   set_task_factoryzBaseEventLoop.set_task_factory  s9    	 x'8'8EFFF$r    c                     	 | j         S rO   )r   r   s    r   get_task_factoryzBaseEventLoop.get_task_factory  s    J!!r    )extraserverc                    	 t           rO   NotImplementedError)r   r0   protocolr   r  r  s         r   _make_socket_transportz$BaseEventLoop._make_socket_transport  s    &!!r    FT)server_sideserver_hostnamer  r  r   r   call_connection_madec                    	 t           rO   r  )r   rawsockr  
sslcontextr   r   r!  r  r  r   r   r"  s               r   _make_ssl_transportz!BaseEventLoop._make_ssl_transport  s     	$!!r    c                     	 t           rO   r  )r   r0   r  addressr   r  s         r   _make_datagram_transportz&BaseEventLoop._make_datagram_transport  s    (!!r    c                     	 t           rO   r  r   piper  r   r  s        r   _make_read_pipe_transportz'BaseEventLoop._make_read_pipe_transport  s    )!!r    c                     	 t           rO   r  r+  s        r   _make_write_pipe_transportz(BaseEventLoop._make_write_pipe_transport  s    *!!r    c	                    K   	 t           rO   r  )
r   r  argsshellstdinstdoutstderrbufsizer  kwargss
             r   _make_subprocess_transportz(BaseEventLoop._make_subprocess_transport  s       	+!!r    c                     	 t           rO   r  r   s    r   _write_to_selfzBaseEventLoop._write_to_self  s    	 "!r    c                     	 t           rO   r  )r   
event_lists     r   _process_eventszBaseEventLoop._process_events  s    &!!r    c                 2    | j         rt          d          d S )NzEvent loop is closed)r   r   r   s    r   r  zBaseEventLoop._check_closed  s%    < 	75666	7 	7r    c                 2    | j         rt          d          d S )Nz!Executor shutdown has been called)r   r   r   s    r   _check_default_executorz%BaseEventLoop._check_default_executor
  s)    ) 	DBCCC	D 	Dr    c                     | j                             |           |                                 s/|                     | j        |                                           d S d S rO   )r   discardr  call_soon_threadsafer  acloser   agens     r   _asyncgen_finalizer_hookz&BaseEventLoop._asyncgen_finalizer_hook  s^    %%%~~ 	G%%d&6FFFFF	G 	Gr    c                     | j         r t          j        d|dt          |            | j                            |           d S )Nzasynchronous generator z3 was scheduled after loop.shutdown_asyncgens() callsource)r   warningswarnResourceWarningr   addrE  s     r   _asyncgen_firstiter_hookz&BaseEventLoop._asyncgen_firstiter_hook  s_    * 	.M2$ 2 2 2. . . .
 	D!!!!!r    c                 p  K   	 d| _         t          | j                  sd S t          | j                  }| j                                         t          j        d |D             ddi d {V }t          ||          D ]6\  }}t          |t                    r| 
                    d|||d           7d S )NTc                 6    g | ]}|                                 S rP   )rD  )rQ   ags     r   
<listcomp>z4BaseEventLoop.shutdown_asyncgens.<locals>.<listcomp>)  s     222bbiikk222r    return_exceptionsz;an error occurred during closing of asynchronous generator )messagerf   asyncgen)r   lenr   rV   clearr   gatherzipr   	Exceptioncall_exception_handler)r   closing_agensresultsresultrF  s        r   shutdown_asyncgensz BaseEventLoop.shutdown_asyncgens  s     :*.'4?## 	 FT_--22M222$"$ $ $ $ $ $ $ $  77 	 	LFD&),, ++ B9= B  B!' $	- -   	 	r    c                    K   	 d| _         | j        d S |                                 }t          j        | j        |f          }|                                 	 | d {V  |                                 d S # |                                 w xY w)NT)targetr1  )r   r   r   	threadingThread_do_shutdownstartjoin)r   futurethreads      r   shutdown_default_executorz'BaseEventLoop.shutdown_default_executor5  s      <)-&!)F##%%!):&KKK	LLLLLLLKKMMMMMFKKMMMMs   A7 7Bc                 :   	 | j                             d           |                                 s|                     |j        d            d S d S # t
          $ r@}|                                 s!|                     |j        |           Y d }~d S Y d }~d S d }~ww xY w)NTwait)r   shutdownr  rC  r   r[  r   )r   rh  exs      r   re  zBaseEventLoop._do_shutdownB  s    	D"+++666>>## C))&*;TBBBBBC C 	D 	D 	D>>## D))&*>CCCCCCCCCD D D D D D	Ds   A
A 
B/BBc                     |                                  rt          d          t          j                    t          d          d S )Nz"This event loop is already runningz7Cannot run the event loop while another loop is running)r  r   r   _get_running_loopr   s    r   _check_runningzBaseEventLoop._check_runningK  sS    ?? 	ECDDD#%%1IK K K 21r    c                    	 |                                   |                                  |                     | j                   t	          j                    }	 t          j                    | _        t	          j	        | j
        | j                   t          j        |            	 |                                  | j        rn	 d| _        d | _        t          j        d            |                     d           t	          j	        |  d S # d| _        d | _        t          j        d            |                     d           t	          j	        |  w xY w)N)	firstiter	finalizerTF)r  rr  _set_coroutine_origin_tracking_debugsysget_asyncgen_hooksrc  	get_identr   set_asyncgen_hooksrO  rG  r   _set_running_loop	_run_oncer   )r   old_agen_hookss     r   run_foreverzBaseEventLoop.run_foreverR  s[   )++DK888/11	4'133DO"T-J-1-JL L L L $T***   >  "DN"DO$T***//666"N3333	 #DN"DO$T***//666"N333s   A*D
 
AEc                    	 |                                   |                                  t          j        |           }t	          j        ||           }|rd|_        |                    t                     	 | 	                                 nD#  |r<|
                                r(|                                s|                                  xY w	 |                    t                     n# |                    t                     w xY w|
                                st          d          |                                S )Nr  Fz+Event loop stopped before Future completed.)r  rr  r   isfuturer   ensure_future_log_destroy_pendingadd_done_callbackrm   r  r   re   rf   remove_done_callbackr   r_  )r   rh  new_tasks      r   run_until_completez BaseEventLoop.run_until_completej  sI   		 	'///$V$777 	0 +0F'  !7888
	@	 #FKKMM #&2B2B2D2D #   """  ''(>????F''(>????{{}} 	NLMMM}}s   9B C. ACC. .D
c                     	 d| _         d S r   )r   r   s    r   rj   zBaseEventLoop.stop  s    	
 r    c                 h   	 |                                  rt          d          | j        rd S | j        rt	          j        d|            d| _        | j                                         | j                                         d| _	        | j
        }|d | _
        |                    d           d S d S )Nz!Cannot close a running event loopzClose %rTFrl  )r  r   r   rw  r   debugr   rX  r   r   r   rn  r   executors     r   r   zBaseEventLoop.close  s    	 ?? 	DBCCC< 	F; 	+LT***)-&)%)D"5)))))  r    c                     	 | j         S rO   )r   r   s    r   r  zBaseEventLoop.is_closed  s    8|r    c                     |                                  s@ |d| t          |            |                                 s|                                  d S d S d S )Nzunclosed event loop rI  )r  rM  r  r   )r   _warns     r   __del__zBaseEventLoop.__del__  sk    ~~ 	E111?4PPPP??$$ 

	 	 r    c                     	 | j         d uS rO   )r   r   s    r   r  zBaseEventLoop.is_running  s    8t+,r    c                 *    	 t          j                    S rO   )r   r   r   s    r   r   zBaseEventLoop.time  s    	 ~r    r  c                    	 |t          d           | j        |                                 |z   |g|R d|i}|j        r|j        d= |S )Nzdelay must not be Noner	  r  )r=   call_atr   r  )r   delaycallbackr	  r1  timers         r   
call_laterzBaseEventLoop.call_later  su    	 =4555TYY[[50( .T . . .%,. ." 	,'+r    c                D   	 |t          d          |                                  | j        r*|                                  |                     |d           t          j        |||| |          }|j        r|j        d= t          j	        | j
        |           d|_
        |S )Nzwhen cannot be Noner  r  T)r=   r  rw  _check_thread_check_callbackr   TimerHandler  heapqheappushr   )r   whenr  r	  r1  r  s         r   r  zBaseEventLoop.call_at  s    	 <1222; 	6     9555"44wGG" 	,'+t...r    c                    	 |                                   | j        r*|                                  |                     |d           |                     |||          }|j        r|j        d= |S )N	call_soonr  )r  rw  r  r  
_call_soonr  r   r  r	  r1  r   s        r   r  zBaseEventLoop.call_soon  s}    	 	; 	8     ;777499# 	-(,r    c                     t          j        |          st          j        |          rt          d| d          t	          |          st          d| d|          d S )Nzcoroutines cannot be used with z()z"a callable object was expected by z(), got )r   iscoroutineiscoroutinefunctionr=   r  )r   r  methods      r   r  zBaseEventLoop._check_callback  s    "8,, 	>.x88	><&<<<> > >!! 	%$V $ $$ $% % %	% 	%r    c                     t          j        ||| |          }|j        r|j        d= | j                            |           |S )Nr  )r   Handler  r   rA   )r   r  r1  r	  r   s        r   r  zBaseEventLoop._call_soon  sH    xtW==# 	-(,6"""r    c                 t    	 | j         d S t          j                    }|| j         k    rt          d          d S )NzMNon-thread-safe operation invoked on an event loop other than the current one)r   rc  rz  r   )r   	thread_ids     r   r  zBaseEventLoop._check_thread  sP    	 ?"F'))	'''( ( ( ('r    c                    	 |                                   | j        r|                     |d           |                     |||          }|j        r|j        d= |                                  |S )NrC  r  )r  rw  r  r  r  r:  r  s        r   rC  z"BaseEventLoop.call_soon_threadsafe%  s{    0; 	C  +ABBB499# 	-(,r    c                 4   |                                   | j        r|                     |d           |D| j        }|                                  |'t
          j                            d          }|| _        t          j         |j	        |g|R  |           S )Nrun_in_executorasyncio)thread_name_prefixr  )
r  rw  r  r   r@  
concurrentr   ThreadPoolExecutorwrap_futuresubmit)r   r  funcr1  s       r   r  zBaseEventLoop.run_in_executor0  s    ; 	:  '8999-H((***%-@@'0 A   *2&"HOD(4(((t5 5 5 	5r    c                 p    t          |t          j        j                  st	          d          || _        d S )Nz,executor must be ThreadPoolExecutor instance)r   r  r   r  r=   r   r  s     r   set_default_executorz"BaseEventLoop.set_default_executor@  s8    (J$6$IJJ 	LJKKK!)r    c                 H   | d|g}|r|                     d|           |r|                     d|           |r|                     d|           |r|                     d|           d                    |          }t          j        d|           |                                 }t          j        ||||||          }	|                                 |z
  }
d| d	|
d
z  dd|	}|
| j        k    rt          j        |           nt          j        |           |	S )N:zfamily=ztype=zproto=zflags=, zGet address info %szGetting address info z took g     @@z.3fzms: )	rA   rg  r   r  r   r*   getaddrinfor   info)r   rC   rD   rE   rF   rG   flagsmsgt0addrinfodts              r   _getaddrinfo_debugz BaseEventLoop._getaddrinfo_debugE  sY   !!!!" 	-JJ+++,,, 	)JJ't''((( 	+JJ)))*** 	+JJ)))***iinn*C000YY[[%dD&$uMMYY[[2OcOOcOOO8OO,,,KLr    r   rE   rF   rG   r  c          
         K   | j         r| j        }nt          j        }|                     d |||||||           d {V S rO   )rw  r  r*   r  r  )r   rC   rD   rE   rF   rG   r  getaddr_funcs           r   r  zBaseEventLoop.getaddrinfo]  sr      ; 	.2LL!-L)),dFD%H H H H H H H H 	Hr    c                 V   K   |                      d t          j        ||           d {V S rO   )r  r*   getnameinfo)r   sockaddrr  s      r   r  zBaseEventLoop.getnameinfog  sH      ))&$h7 7 7 7 7 7 7 7 	7r    )fallbackc                h  K   | j         r'|                                dk    rt          d          t          |           |                     ||||           	 |                     ||||           d {V S # t          j        $ r}|s Y d }~nd }~ww xY w|                     ||||           d {V S )Nr   zthe socket must be non-blocking)	rw  
gettimeoutr+   rv   _check_sendfile_params_sock_sendfile_nativer   SendfileNotAvailableError_sock_sendfile_fallback)r   r0   fileoffsetcountr  rl   s          r   sock_sendfilezBaseEventLoop.sock_sendfilek  s9     ; 	@4??,,11>???$##D$>>>	33D$4:EC C C C C C C C C3 	 	 	     	 11$28%A A A A A A A A 	As   A7 7BBBc                 <   K   t          j        d|d|d          )Nz-syscall sendfile is not available for socket z
 and file z combinationr   r  r   r0   r  r  r  s        r   r  z#BaseEventLoop._sock_sendfile_nativez  s@       2-D - -- - -. . 	.r    c                 |  K   |r|                     |           |rt          |t          j                  nt          j        }t	          |          }d}	 	 |rt          ||z
  |          }|dk    rnft          |          d |         }|                     d |j        |           d {V }	|	sn*|                     ||d |	                    d {V  ||	z  }||dk    r)t          |d          r|                     ||z              S S S # |dk    r)t          |d          r|                     ||z              w w w xY w)Nr   Tseek)
r  minr   !SENDFILE_FALLBACK_READBUFFER_SIZE	bytearray
memoryviewr  readintosock_sendallr)   )
r   r0   r  r  r  	blocksizebuf
total_sentviewreads
             r   r  z%BaseEventLoop._sock_sendfile_fallback  s      	IIf FCyBCCC#E 	 	""
	/
#  #EJ$6	 B BI A~~!#z	z2!11$tLLLLLLLL ''d5D5k:::::::::d"

# A~~'$"7"7~		&:-.... ~zA~~'$"7"7~		&:-.... ~s   BD	 	2D;c                    dt          |dd          vrt          d          |j        t          j        k    st          d          |_t          |t                    s"t          d                    |                    |dk    r"t          d                    |                    t          |t                    s"t          d                    |                    |dk     r"t          d                    |                    d S )Nbmodez$file should be opened in binary modez+only SOCK_STREAM type sockets are supportedz+count must be a positive integer (got {!r})r   z0offset must be a non-negative integer (got {!r}))	r   r+   rF   r*   r9   r   r<   r=   formatr  s        r   r  z$BaseEventLoop._check_sendfile_params  s)   gdFC0000CDDDyF...JKKKeS)) QAHHOOQ Q Qzz AHHOOQ Q Q&#&& 	BII    A::BII    :r    c                   K   	 g } |j         |           |\  }}}}}	d }
	 t          j        |||          }
|
                    d           ||D ]\  }}}}}||k    r	 |
                    |            n# t          $ rS}d|d|j                                         }t	          |j        |          }|                     |           Y d }~d }~ww xY w|r|                                t	          d|d          | 	                    |
|	           d {V  |
d x}}S # t          $ r1}|                     |           |
|

                                  d }~w |
|

                                  xY w# d x}}w xY w)NrE   rF   rG   F*error while attempting to bind on address : z&no matching local address with family=z found)rA   r*   setblockingbindr.   strerrorlowererrnopopsock_connectr   )r   r   	addr_infolocal_addr_infosmy_exceptionsrE   type_rG   _r(  r0   lfamilyladdrrl   r  s                  r   _connect_sockzBaseEventLoop._connect_sock  s      2
-(((+4(ua$	.=U%HHHDU###+/? Y Y+GQ1e&(( 
2		%(((" 2 2 26',6 6"|11336 6 
 &ci55%,,S111111112 % Y+//111%&W&W&W&WXXX##D'222222222 *.-J  	 	 	  %%%

	

)--J----sO   ?D# !A86D# 8
CA	CD# CA	D# #
E5-,EE55E8 8E>)rt   rE   rG   r  r0   
local_addrr!  r   r   happy_eyeballs_delay
interleavec                x   K   	 |
|st          d          |
|r|st          d          |}
||st          d          ||st          d          |t          |           ||d}|||t          d                               ||f|t          j        ||            d {V }|st          d          |	=                     |	|t          j        ||            d {V st          d          nd |rt          ||          }g |5|D ]1}	                      |           d {V } n# t
          $ r Y .w xY wn/t          j	         fd	|D             | 
           d {V \  }}}|d D             	 t                    dk    rd         t          d                   t          fdD                       rd         t          d                    d                    d D                                           # d w xY wn8|t          d          |j        t          j        k    rt          d|                               ||||
||           d {V \  }} j        r.|                    d          }t'          j        d|||||           ||fS )Nz+server_hostname is only meaningful with sslz:You must set server_hostname when using ssl without a host1ssl_handshake_timeout is only meaningful with ssl0ssl_shutdown_timeout is only meaningful with sslr   8host/port and sock can not be specified at the same timerE   rF   rG   r  r   !getaddrinfo() returned empty listc              3   P   K   | ] }t          j        j        |          V  !d S rO   )	functoolspartialr  )rQ   r  r   laddr_infosr   s     r   rS   z2BaseEventLoop.create_connection.<locals>.<genexpr>5  sR       , ,! &t'9'18[J J , , , , , ,r    r  c                     g | ]	}|D ]}|
S rP   rP   )rQ   subrl   s      r   rS  z3BaseEventLoop.create_connection.<locals>.<listcomp>;  s%    GGGc3GGCcGGGGr    r   c              3   >   K   | ]}t          |          k    V  d S rO   r   )rQ   rl   models     r   rS   z2BaseEventLoop.create_connection.<locals>.<genexpr>B  s.      GGSs3xx50GGGGGGr    zMultiple exceptions: {}r  c              3   4   K   | ]}t          |          V  d S rO   r  )rQ   rl   s     r   rS   z2BaseEventLoop.create_connection.<locals>.<genexpr>G  s(      %E%E3c#hh%E%E%E%E%E%Er    z5host and port was not specified and no sock specified"A Stream Socket was expected, got )r   r   r*   z%r connected to %s:%r: (%r, %r))r+   rv   _ensure_resolvedr*   r9   r.   rc   r  r   staggered_racerW  r   allr  rg  rF   _create_connection_transportrw  get_extra_infor   r  )r   r   rC   rD   rt   rE   rG   r  r0   r  r!  r   r   r  r  infosr  r  r   r  r   r  r  s   `                   @@@r   create_connectionzBaseEventLoop.create_connection  s     
	 &s&JKKK"s"  B  "A B B B"O ,S,CE E E  +C+BD D D d###+
0BJt/ NP P P //tV'uE 0 N N N N N N N NE  CABBB%$($9$9v+5d %: %, %, , , , , , , # G!"EFFFG # A-eZ@@J#+ % ! !H!%)%7%7&+&? &?  ?  ?  ?  ?  ?  ?" ! ! ! ! $-#;, , , , , ,%*, , , )t	$5 $5 $5 5 5 5 5 5 5
a |GGZGGG
&:!++(m+ !$JqM 2 2GGGGJGGGGG 0",Q-/ &&?&F&F II%E%E*%E%E%EEE'G 'G H H H "&J%%%% $ | KM M MyF... !AAAC C C %)$E$E"C"7!5 %F %7 %7 7 7 7 7 7 7	8 ; 	@ ++H55DL:tT9h@ @ @(""s   D>>
E
EBH H#c           
      \  K   |                     d            |            }|                                 }	|r7t          |t                    rd n|}
|                     |||
|	||||          }n|                     |||	          }	 |	 d {V  n#  |                                  xY w||fS )NFr   r!  r   r   )r  r   r   boolr&  r  r   )r   r0   r   rt   r!  r   r   r   r  r   r%  r   s               r   r  z*BaseEventLoop._create_connection_transporte  s       	##%%##%% 	L!+C!6!6?CJ00h
F'&;%9	 1 ; ;II 33D(FKKI	LLLLLLLL	OO(""s   B B'c                  K   	 |                                 rt          d          t          |dt          j        j                  }|t          j        j        u rt          d|          |t          j        j        u r>	 |                     ||||           d {V S # t          j	        $ r}|s Y d }~nd }~ww xY w|st          d|          | 
                    ||||           d {V S )NzTransport is closing_sendfile_compatiblez(sendfile is not supported for transport zHfallback is disabled and native sendfile is not supported for transport )r   r   r   r   _SendfileModeUNSUPPORTED
TRY_NATIVE_sendfile_nativer   r  _sendfile_fallback)r   r   r  r  r  r  r  rl   s           r   sendfilezBaseEventLoop.sendfile  s     	, !! 	75666y"8 .:< <9*666H9HHJ J J9*555!229d395B B B B B B B B B7          	:9+49 9: : : ,,Y-3U< < < < < < < < 	<s    B B:-B55B:c                 .   K   t          j        d          )Nz!sendfile syscall is not supportedr  )r   r   r  r  r  s        r   r  zBaseEventLoop._sendfile_native  s      2/1 1 	1r    c                   K   |r|                     |           |rt          |d          nd}t          |          }d}t          |          }	 	 |rct          ||z
  |          }|dk    rJ||dk    r(t	          |d          r|                     ||z              |                                 d {V  S t          |          d |         }	|                     d |j        |	           d {V }
|
sJ||dk    r(t	          |d          r|                     ||z              |                                 d {V  S |	                                 d {V  |
                    |	d |
                    ||
z  }(# |dk    r(t	          |d          r|                     ||z              |                                 d {V  w xY w)Ni @  r   Tr  )r  r  r  rx   r)   r   r  r  r  r   write)r   r   r  r  r  r  r  r  rG   r  r  s              r   r  z BaseEventLoop._sendfile_fallback  s      	IIf).9Cu%%%E		""
)&11	"# * #EJ$6	 B BI A~~) A~~'$"7"7~		&:-...--//!!!!!!!! "#z	z2!11$tLLLLLLLL &%
 A~~'$"7"7~		&:-...--//!!!!!!!! kkmm#######T%4%[)))d"
# A~~'$"7"7~		&:-...--//!!!!!!!!s   E8 5<E8 :>E8 8A
Gr  c                  K   	 t           t          d          t          |t           j                  st	          d|          t          |dd          st	          d|d          |                                 }t          j        | |||||||d	  	        }	|	                                 |
                    |	           |                     |	j        |          }
|                     |j                  }	 | d {V  nK# t          $ r> |                                 |
                                 |                                  w xY w|	j        S )Nz"Python ssl module is not availablez@sslcontext is expected to be an instance of ssl.SSLContext, got _start_tls_compatibleFz
transport z  is not supported by start_tls())r   r   r"  )rt   r   r   
SSLContextr=   r   r   r
   SSLProtocolr   r   r  r   r   BaseExceptionr   r   _app_transport)r   r   r  r%  r   r!  r   r   r   ssl_protocol
conmade_cb	resume_cbs               r   	start_tlszBaseEventLoop.start_tls  s     
	
 ;CDDD*cn55 	'&!& &' ' ' y"95AA 	LJYJJJL L L ##%%+(J"7!5!&( ( ( 	!!!|,,,^^L$@)LL
NN9#;<<		LLLLLLLL 	 	 	OO		 **s   :D AE)rE   rG   r  
reuse_portallow_broadcastr0   c          	        K   	 |	|	j         t          j        k    rt          d|	          ss
|s|s|s|s|rZt	          |||||          }
d                    d |
                                D                       }t          d| d          |	                    d           d }ns s|dk    rt          d	          ||fd
ff}nt          t          d          r|t          j	        k    rfD ](}|$t          |t                    st          d          )rd         dvry	 t          j        t          j                  j                  rt          j                   n8# t$          $ r Y n,t&          $ r }t)          j        d|           Y d }~nd }~ww xY w||ffff}ni }dfdffD ]\  }}|t          |t,                    rt/          |          dk    st          d          |                     ||t          j        |||            d {V }|st'          d          |D ]"\  }}}}}||f}||vrd d g||<   |||         |<   #fd|                                D             }|st          d          g }|D ]\  \  }}\  }}d }	d }	 t          j        |t          j        |          }	|rt5          |	           |r+|	                    t          j        t          j        d           |	                    d           r|	                    |           r |s|                     |	|           d {V  |} n\# t&          $ r0}|	|	                                   |j!        |           Y d }~d }~w |	|	                                   xY w|d          |            }| "                                }| #                    |	|||          }| j$        r2rt)          j%        d||           nt)          j&        d||           	 | d {V  n#  |                                   xY w||fS )Nz$A datagram socket was expected, got )r  remote_addrrE   rG   r  r.  r/  r  c              3   .   K   | ]\  }}|| d | V  dS )=NrP   )rQ   kvs      r   rS   z9BaseEventLoop.create_datagram_endpoint.<locals>.<genexpr>  s5      $N$NDAqA$NZZAZZ$N$N$N$N$N$Nr    zKsocket modifier keyword arguments can not be used when sock is specified. ()Fr   zunexpected address familyNNAF_UNIXzstring is expected)r    z2Unable to check or remove stale UNIX socket %r: %rr      z2-tuple is expectedr  r  c                 F    g | ]\  }}r|d          r|d         ||fS )r   Nr   rP   )rQ   key	addr_pairr  r1  s      r   rS  z:BaseEventLoop.create_datagram_endpoint.<locals>.<listcomp>B  sU     #E #E #E)7i'#E,5aL,@( -A-6q\-A )$-A-A-Ar    zcan not get address informationr  z@Datagram endpoint local_addr=%r remote_addr=%r created: (%r, %r)z2Datagram endpoint remote_addr=%r created: (%r, %r))'rF   r*   r9   r+   dictrg  itemsr  r)   r8  r   r   r=   statS_ISSOCKosst_moderemoveFileNotFoundErrorr.   r   errorr   rW  r  r:   r1   r,   r-   SO_BROADCASTr  r  r   rA   r   r)  rw  r  r  )r   r   r  r1  rE   rG   r  r.  r/  r0   optsproblemsr_addraddr_pairs_infor`   err
addr_infosidxr  famr  pror(  r<  r   local_addressremote_addressrl   r  r   r   s     ``                           r   create_datagram_endpointz&BaseEventLoop.create_datagram_endpoint  sR     
 	*yF... C4CCE E E =k ==#=',=="1= z{#)e'1,;= = =  99$N$NDJJLL$N$N$NNN <08< < <= = = U###FF 2H+ 2HQ;;$%@AAA%+UO\#B"D++ .H&.0H0H'5 > >D'
40E0E''(<=== 
6*Q-{"B"B	6=)<)<)DEE 2Ij111,   " 6 6 6 &5%/6 6 6 6 6 6 6 66 &,UO%/$=$? #B  
#$j/A{3C!D ; ;IC' *4 7 7 CCIINN"+,A"B"BB&*&;&; f6G"'u4 '< 'A 'A !A !A !A !A !A !A  % O")*M"N"NN7< ; ;3CCG#&*C"*4437,
33:JsOC00#E #E #E #E #E;E;K;K;M;M#E #E #E
 ' H$%FGGGJ 6E$ $ 2&%0-!=%F,=UL L LD! -&t,,,& G"-v/BAG G G$$U+++! 1		-000" 0. J"&"3"3D."I"IIIIIIII!/ E  + + +'

%J%c********'

 !m###%%##%%11(FF, ,	; 	? ? 0&YJ J J J  (()X? ? ?	LLLLLLLL	OO(""sC   1?E1 1
F&=	F&F!!F&$B-M
N$&NN$P( (P?c                   K   |d d         \  }}t          |||||g|dd          R  }	|	|	gS |                    ||||||           d {V S )Nr:  r  )rL   r  )
r   r(  rE   rF   rG   r  r   rC   rD   r  s
             r   r  zBaseEventLoop._ensure_resolved  s       RaR[
dD$eJgabbkJJJ6M))$V$05U * D D D D D D D D Dr    c                    K   |                      ||f|t          j        ||            d {V }|st          d|d          |S )N)rE   rF   r  r   zgetaddrinfo(z) returned empty list)r  r*   r9   r.   )r   rC   rD   rE   r  r  s         r   _create_server_getaddrinfoz(BaseEventLoop._create_server_getaddrinfo  s      ++T4L171C27d , D D D D D D D D  	HFFFFGGGr    r   )
rE   r  r0   r   rt   reuse_addressr.  r   r   r   c       
   	         K   	 t          |t                    rt          d          ||t          d          ||t          d          |t	          |           ||t          d          |	 t
          j        dk    ot          j        dk    }	g }|dk    rd g}n:t          |t                    st          |t          j        j                  s|g}n|} fd|D             }t          j        |  d {V }t          t           j                            |                    }d	}	 |D ]}|\  }}}}}	 t'          j        |||          }n5# t&          j        $ r#  j        rt-          j        d
|||d           Y Tw xY w|                    |           |	r+|                    t&          j        t&          j        d           |
rt9          |           t:          rP|t&          j        k    r@t?          t&          d          r+|                    t&          j         t&          j!        d           	 |"                    |           # tF          $ r}d|d|j$        %                                }|j&        tL          j'        k    rI|(                                 |)                                  j        rt-          j        |           Y d }~tG          |j&        |          d d }~ww xY w|stG          dd |D                       d}|s|D ]}|)                                 n\# |s|D ]}|)                                 w w xY w|t          d          |j*        t&          j+        k    rt          d|          |g}|D ]}|,                    d	           t[           ||||||          }|r.|.                                 t          j/        d           d {V   j        rt-          j0        d|           |S )Nz*ssl argument must be an SSLContext or Noner  r   r  posixcygwinr4   c                 B    g | ]}                     |           S ))rE   r  )rV  )rQ   rC   rE   r  rD   r   s     r   rS  z/BaseEventLoop.create_server.<locals>.<listcomp>  sG     % % % 11$V8= 2 ? ? % % %r    Fz:create_server() failed to create socket.socket(%r, %r, %r)Texc_infoIPPROTO_IPV6r  r  z%could not bind on any address out of c                     g | ]
}|d          S )   rP   )rQ   r  s     r   rS  z/BaseEventLoop.create_server.<locals>.<listcomp>  s    %@%@%@$d1g%@%@%@r    z)Neither host/port nor sock were specifiedr  r   z%r is serving)1r   r  r=   r+   rv   rB  r  rx  platformr   rT   abcIterabler   rY  setrY   rZ   r[   r*   rF  rw  r   warningrA   r,   r-   SO_REUSEADDRr1   r@   r   r)   r^  IPV6_V6ONLYr  r.   r  r  r  EADDRNOTAVAILr  r   rF   r9   r  r   r   r   r  )r   r   rC   rD   rE   r  r0   r   rt   rW  r.  r   r   r   r   hostsfsr  	completedresrK   socktyperG   	canonnamesarL  r  r  s   `  ```                      r   create_serverzBaseEventLoop.create_server  s2     	 c4   	JHIII ,CE E E  +BD D D d###t/ NP P P $ "7 2 Os|x7OGrzzT3''  {'?@@% % % % % % %#% % %B  ,+++++++E	55e<<==EI2%  '@ '@C9<6B%B!%}R5AA!< ! ! !; O"N ,G+-xO O O O !! NN4((($ J"-v/BDJ J J! -&t,,, " .&/11#FN;; 2(;(.(:(,. . .@		"" @ @ @ @ #%""cl&8&8&:&:&: < 9(;;;#KKMMM JJLLL#{ 4 &s 3 3 3$HHHH%ci554?@  D!'%@%@%%@%@%@%@#C D D D !	  % ' % %

 ! % ' % %

%% | !LMMMyF... !Nd!N!NOOOfG 	$ 	$DU####g'7W&;,. .  	!!!### +a..       ; 	1K000sb   5L2 EL2 /F	L2 FB-L2 :IL2 
K3A7K.L2 K..K33#L2 2M)rt   r   r   c          	      z  K   |j         t          j        k    rt          d|          ||st          d          ||st          d          |t	          |           |                     |||dd||           d {V \  }}| j        r,|                    d          }t          j	        d|||           ||fS )	Nr  r  r   r4   T)r   r   r   r*   z%r handled: (%r, %r))
rF   r*   r9   r+   rv   r  rw  r  r   r  )r   r   r0   rt   r   r   r   r  s           r   connect_accepted_socketz%BaseEventLoop.connect_accepted_socket"  s!     
 9***J$JJKKK ,S,CE E E  +C+BD D D d###$($E$E"C"7!5 %F %7 %7 7 7 7 7 7 7	8 ; 	L ++H55DL/y(KKK(""r    c                    K    |            }|                                  }|                     |||          }	 | d {V  n#  |                                  xY w| j        r)t	          j        d|                                ||           ||fS )Nz Read pipe %r connected: (%r, %r))r   r-  r   rw  r   r  filenor   r   r,  r  r   r   s         r   connect_read_pipezBaseEventLoop.connect_read_pipe@  s      ##%%##%%2246JJ		LLLLLLLL	OO; 	=L;	8= = =(""   A Ac                    K    |            }|                                  }|                     |||          }	 | d {V  n#  |                                  xY w| j        r)t	          j        d|                                ||           ||fS )Nz!Write pipe %r connected: (%r, %r))r   r/  r   rw  r   r  rt  ru  s         r   connect_write_pipez BaseEventLoop.connect_write_pipeP  s      ##%%##%%33D(FKK		LLLLLLLL	OO; 	=L<	8= = =(""rw  c                    |g}|%|                     dt          |                      |6|t          j        k    r&|                     dt          |                      nN|%|                     dt          |                      |%|                     dt          |                      t	          j        d                    |                     d S )Nzstdin=zstdout=stderr=zstdout=zstderr= )rA   r&   r"   r$   r   r  rg  )r   r  r3  r4  r5  r  s         r   _log_subprocesszBaseEventLoop._log_subprocess`  s    uKK6e!4!466777&J,="="=KK?f)=)=??@@@@!<l6&:&:<<===!<l6&:&:<<===SXXd^^$$$$$r    )	r3  r4  r5  universal_newlinesr2  r6  encodingerrorstextc       	   	      
  K   t          |t          t          f          st          d          |rt          d          |st          d          |dk    rt          d          |rt          d          |	t          d          |
t          d           |            }d }| j        rd	|z  }|                     ||||            | j        ||d
||||fi | d {V }| j        r|t          j        d||           ||fS )Nzcmd must be a string universal_newlines must be Falsezshell must be Truer   bufsize must be 0text must be Falseencoding must be Noneerrors must be Nonezrun shell command %rT%s: %r)	r   r;   r   r+   rw  r|  r8  r   r  )r   r   cmdr3  r4  r5  r}  r2  r6  r~  r  r  r7  r  	debug_logr   s                   r   subprocess_shellzBaseEventLoop.subprocess_shellm  s      #s|,, 	53444 	A?@@@ 	31222a<<0111 	3122245552333##%%	; 	C /4I  E66BBB9$9c4K KCIK K K K K K K K	; 	890K)Y777(""r    c       	   	        K   |rt          d          |rt          d          |dk    rt          d          |rt          d          |	t          d          |
t          d          |f|z   } |            }d }| j        rd|}|                     ||||            | j        ||d	||||fi | d {V }| j        r|t	          j        d
||           ||fS )Nr  zshell must be Falser   r  r  r  r  zexecute program Fr  )r+   rw  r|  r8  r   r  )r   r   programr3  r4  r5  r}  r2  r6  r~  r  r  r1  r7  
popen_argsr  r  r   s                     r   subprocess_execzBaseEventLoop.subprocess_exec  sb       	A?@@@ 	42333a<<0111 	3122245552333Z$&
##%%	; 	C 7766I  E66BBB9$9j%        	 ; 	890K)Y777(""r    c                     	 | j         S rO   )r   r   s    r   get_exception_handlerz#BaseEventLoop.get_exception_handler  s    	&&r    c                 \    	 |!t          |          st          d|          || _        d S )Nz+A callable object or None is expected, got )r  r=   r   )r   handlers     r   set_exception_handlerz#BaseEventLoop.set_exception_handler  sN    
	 x'8'8 /#*/ / 0 0 0")r    c                    	 |                     d          }|sd}|                     d          }|t          |          ||j        f}nd}d|vr"| j        | j        j        r| j        j        |d<   |g}t          |          D ]}|dv r||         }|dk    rAd                    t          j        |                    }d	}||	                                z  }nV|dk    rAd                    t          j        |                    }d
}||	                                z  }nt          |          }|                    | d|            t          j        d                    |          |           d S )NrU  z!Unhandled exception in event looprf   Fsource_tracebackhandle_traceback>   rU  rf   r4   z+Object created at (most recent call last):
z+Handle created at (most recent call last):
r  
r\  )getrF   __traceback__r   r  sortedrg  	tracebackformat_listrstripr   rA   r   rF  )	r   r	  rU  rf   r]  	log_linesr<  valuetbs	            r   default_exception_handlerz'BaseEventLoop.default_exception_handler  s   	 ++i(( 	:9GKK,,	 YI4KLHHHg--$0$6 1 $6 &' I	'?? 	0 	0C...CLE(((WWY2599::F$***WWY2599::F$U..u..////TYYy))H======r    c                    	 | j         P	 |                     |           d S # t          t          f$ r  t          $ r t          j        dd           Y d S w xY w	 |                      | |           d S # t          t          f$ r  t          $ rc}	 |                     d||d           n7# t          t          f$ r  t          $ r t          j        dd           Y n
w xY wY d }~d S Y d }~d S d }~ww xY w)Nz&Exception in default exception handlerTr\  z$Unhandled error in exception handler)rU  rf   r	  zeException in default exception handler while handling an unexpected error in custom exception handler)r   r  rg   rh   r(  r   rF  )r   r	  rl   s      r   r\  z$BaseEventLoop.call_exception_handler  s   	* "*	,..w77777 12     , , , E&*, , , , , , ,	,0''g66666 12     0 0 0022#I%(#*4 4    
 #$56   $ 0 0 0 L "? +/0 0 0 0 0 00     0 0 0 0 0 00sE   ! 1AAA2 2C0B('C+(1CC+CC++C0c                 N    	 |j         s| j                            |           d S d S rO   )
_cancelledr   rA   r   r   s     r   _add_callbackzBaseEventLoop._add_callback4  s6    %  	'Kv&&&&&	' 	'r    c                 Z    	 |                      |           |                                  d S rO   )r  r:  r  s     r   _add_callback_signalsafez&BaseEventLoop._add_callback_signalsafe9  s1    D6"""r    c                 :    	 |j         r| xj        dz  c_        d S d S rp   )r   r   r  s     r   _timer_handle_cancelledz%BaseEventLoop._timer_handle_cancelled>  s4    A 	-''1,''''	- 	-r    c                    	 t          | j                  }|t          k    rf| j        |z  t          k    rSg }| j        D ]&}|j        rd|_        |                    |           't          j        |           || _        d| _        nb| j        r[| j        d         j        rI| xj        dz  c_        t          j	        | j                  }d|_        | j        r| j        d         j        Id }| j
        s| j        rd}nQ| j        rJ| j        d         j        }t          t          d||                                 z
            t                     }| j                            |          }|                     |           d }|                                 | j        z   }| j        rZ| j        d         }|j        |k    rnAt          j	        | j                  }d|_        | j
                            |           | j        Zt          | j
                  }t+          |          D ]}	| j
                                        }|j        r#| j        r	 || _        |                                 }
|                                 |                                 |
z
  }|| j        k    r#t7          j        dt;          |          |           d | _        # d | _        w xY w|                                 d }d S )NFr   r   zExecuting %s took %.3f seconds)rW  r   _MIN_SCHEDULED_TIMER_HANDLESr   %_MIN_CANCELLED_TIMER_HANDLES_FRACTIONr  rA   r  heapifyheappopr   r   _whenr  maxr   MAXIMUM_SELECT_TIMEOUT	_selectorselectr=  r   rangepopleftrw  r   _runr   r   re  r   )r   sched_countnew_scheduledr   timeoutr  r<  end_timentodoir  r  s               r   r}  zBaseEventLoop._run_onceC  s   	 $/**666'+556 6 M/ 1 1$ 1(-F%%!((0000M-(((+DO*+D'' / *doa&8&C *++q0++t77$)! / *doa&8&C *
 ; 	N$. 	NGG_ 	N?1%+D#a		!3446LMMG^**733
Z(((
 99;;!77o 	'_Q'F|x'']4?33F %FKv&&& o 	' DK  u 	 	A[((**F  { 	0+1D(BKKMMMr)BT888'G'5f'='=rC C C ,0D((4D(////s   	A4K	Kc                    t          |          t          | j                  k    rd S |r7t          j                    | _        t          j        t          j                   nt          j        | j                   || _        d S rO   )r  r   rx  #get_coroutine_origin_tracking_depthr   #set_coroutine_origin_tracking_depthr   DEBUG_STACK_DEPTHr   enableds     r   rv  z,BaseEventLoop._set_coroutine_origin_tracking  s    ==D!HIIIIF 	=799 73+- - - - 3;= = = 3:///r    c                     | j         S rO   )rw  r   s    r   r  zBaseEventLoop.get_debug  s
    {r    c                 v    || _         |                                 r|                     | j        |           d S d S rO   )rw  r  rC  rv  r  s     r   r   zBaseEventLoop.set_debug  sG    ?? 	T%%d&I7SSSSS	T 	Tr    rO   )NNNr7  )r   )r   N)FNN)Ur   r   r   r   r   r   r  r  r  r  r&  r)  r-  r/  r8  r:  r=  r  r@  rG  rO  r`  rj  re  rr  r  r  rj   r   r  rK  rL  r  r  r   r  r  r  r  r  r  rC  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r-  rS  r*   r9   r  rV  r>   
AI_PASSIVErp  rr  rv  ry  r|  r"   r#   r  r  r  r  r  r\  r  r  r  r}  rv  r  r   rP   r    r   r   r     s       / / /<
 
 
) ) ) )-d     *% % %" " ""%)$" " " " " 9=" $t"&!%!%" " " " " CG" " " "
 @D(," " " "
 AE)-" " " " 04" " " "" " "" " "7 7 7D D DG G G
" " "  2  D D DK K K4 4 40$ $ $L  * * *.   %M    - - -      :>     0 6:     $ 26     &% % %  ( ( (" =A 	 	 	 	 	5 5 5 * * *
  2 "#!1H H H H H7 7 7 7A(,A A A A A. . ./ / /4  **. *. *. *.Z 59G#14T"&!%!%$G# G# G# G# G#V */"&!%	# # # #8-<#'-< -< -< -< -<^1 1 1" " "4 %*(,.2-1	.+ .+ .+ .+ .+b EID#./q267;$	D# D# D# D# D#N '(f.@%&a
D 
D 
D 
D 
D   59I ##"&!%I I I I IZ "&!%	# # # # #<# # # # # # % % % &0_&0o&0o27%)1(,T"# "# "# "# "#J %/OJO%/_$)1'+Dt	 #  #  #  #  #D' ' '
* * *"0> 0> 0>d70 70 70r' ' '
  
- - -
N N N`: : :  T T T T Tr    r   )r   r   )r   )6rT   collections.abcconcurrent.futuresr  r  r  r  rY   rB  r*   r@  r"   rc  r   r  rx  rK  r   rt   ImportErrorr4   r   r   r   r   r   r	   r
   r   r   r   r   logr   __all__r  r  r)   r@   r  r   r&   r1   rL   rc   rm   rq   rv   Protocolrx   AbstractServerr   AbstractEventLoopr   rP   r    r   <module>r     sh                         				                



  JJJJ   
CCC                                                                         $
  #  ), % GFJ''	 #     J J J8 8 8 8v   ," " " 76=!! G G G G  > > >
A) A) A) A) A)	 2 A) A) A)Hn n n n nV" n n nbeT eT eT eT eTF, eT eT eT eT eTs   A AA