*jШ/SQrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK r SSK J r SSK J r J r SSKJr \R rSSKrSSKrSSKJrJrJrJr S rS r\ R8"5rS rS rS /r \!"\S 5(aS r\ S /- r \R2S:XaSr\ S/- r \4Sjr"Sr#Sr$Sr%Sr&"SS5r'\(a "SS\'5r("SS\'5r)"SS\*5r+SDSjr,\R2S:waSESjr-OSESjr-"SS \*5r.S!r/\R2S:Xa"S"S#\*5r0S$r1S%r2S&r3S'r4S(r5\6"1S)k5r7\8"S*\755r9S+r:S,r;\:\;4rS/r?SFS0\@4S1jjrAS0\@4S2jrB"S3S4\*5rCS5rDS6rE"S7S8\+5rFS9rG\R2S:Xa!S:rH\R\R1rKSGS;jrLO0SSKMrM\!"\MS<5(a \MRrOO \MRrOSGS=jrL\R2S:Xa3S>rQS?rR\R"\)\Q5 S@rTSArU\R"\(\T5 gSBrQSCrR\R"\)\Q5 g!\a \R2S:XaeSrGNf=f)H)ClientListenerPipewaitN)util)AuthenticationErrorBufferTooShort) reduction) WAIT_OBJECT_0WAIT_ABANDONED_0 WAIT_TIMEOUTINFINITEwin32i g4@dAF_INETAF_UNIXAF_PIPEc2[R"5U-$Ntime monotonic)timeouts A/opt/alt/python313/lib64/python3.13/multiprocessing/connection.py _init_timeoutr=s >> g %%c2[R"5U:$rr)ts r_check_timeoutr @s >> a rcUS:XagUS:XaX[RR[R"5S[R "S5R 535$US:XaJS[R"5[[5[R "S5R 54-$[S 5e) z7 Return an arbitrary free address for the given family r) localhostrrzsock-rz\\.\pipe\pyc-%d-%d-%szunrecognized family) ospathjoinr get_temp_dirurandomhexgetpidnext _mmap_counter ValueErrorfamilys rarbitrary_addressr1Gs 9 ww||D--/#BJJqM$5$5$7#89; ; 9 (d=12::a=3D3D3FGH I.//rc[RS:waUS:Xa[SU-5e[RS:Xa+US:Xa$[[U5(d[SU-5eggg)z< Checks if the family is valid for the current environment. rrzFamily %s is not recognized.rN)sysplatformr.hasattrsocketr/s r_validate_familyr7Ysf ||w6Y#67&@AA ||w6Y#6vv&&;fDE E'$7rc[U5[:Xag[U5[LaURS5(ag[U5[Ld[R "U5(ag[ SU-5e)zQ Return the types of the address This can be 'AF_INET', 'AF_UNIX', or 'AF_PIPE' rz\\rrzaddress type of %r unrecognized)typetuplestr startswithris_abstract_socket_namespacer.)addresss r address_typer?esb  G} g# '"4"4V"<"< g# !B!B7!K!K:WDEErc\rSrSrSrSSjrSrSrSrSr Sr \ S 5r \ S 5r \ S 5rS rS rSSjrSrSSjrSSjrSrSSjrSrSrSrg)_ConnectionBasexNcUR5nUS:a [S5eU(dU(d [S5eXlX lX0lg)Nrzinvalid handlez6at least one of `readable` and `writable` must be True) __index__r._handle _readable _writable)selfhandlereadablewritables r__init___ConnectionBase.__init__{sI!!# A:-. .HJ J !!rc@URbUR5 ggrrE_closerHs r__del___ConnectionBase.__del__s << # KKM $rc4URc [S5eg)Nhandle is closed)rEOSErrorrQs r _check_closed_ConnectionBase._check_closeds << ,- - rc<UR(d [S5eg)Nzconnection is write-only)rFrVrQs r_check_readable_ConnectionBase._check_readables~~45 5rc<UR(d [S5eg)Nzconnection is read-only)rGrVrQs r_check_writable_ConnectionBase._check_writables~~34 4rcjUR(aSUlOUR5 [S5e)NFzbad message length)rGrFcloserVrQs r_bad_message_length#_ConnectionBase._bad_message_lengths% >>"DN JJL*++rcURSL$)z True if the connection is closedNrErQs rclosed_ConnectionBase.closeds||t##rcUR$)z"True if the connection is readable)rFrQs rrJ_ConnectionBase.readable~~rcUR$)z"True if the connection is writable)rGrQs rrK_ConnectionBase.writablerirc:UR5 UR$)z+File descriptor or handle of the connection)rWrErQs rfileno_ConnectionBase.filenos ||rchURbUR5 SUlgg!SUlf=f)zClose the connectionNrOrQs rr`_ConnectionBase.closes1 << # $ # $ $ s( 1cxUR5 UR5 [U5nURS:aUR S5nUR nUS:a [ S5eXR:a [ S5eUcXR- nO$US:a [ S5eX#-U:a [ S5eURXBX#-5 g) z,Send the bytes data from a bytes-like objectrBrzoffset is negativezbuffer length < offsetNzsize is negativezbuffer length < offset + size)rWr] memoryviewitemsizecastnbytesr. _send_bytes)rHbufoffsetsizemns r send_bytes_ConnectionBase.send_bytess   sO ::>s A HH A:12 2 :56 6 <:D AX/0 0 ]Q <= = &-01rcUR5 UR5 UR[R U55 g)zSend a (picklable) objectN)rWr]rw_ForkingPicklerdumpsrHobjs rsend_ConnectionBase.sends3   ..s34rcUR5 UR5 UbUS:a [S5eURU5nUcUR 5 UR 5$)z' Receive bytes data as a bytes object. rznegative maxlength)rWrZr. _recv_bytesragetvalue)rH maxlengthrxs r recv_bytes_ConnectionBase.recv_bytessa    Y]12 2y) ;  $ $ &||~rcUR5 UR5 [U5nURnU[ U5-nUS:a [ S5eX%:a [ S5eUR 5nUR5nXRU-:a[UR55eURS5 URX2U-X'-U-5 UsSSS5 $!,(df  g=f)zY Receive bytes data into a writeable bytes-like object. Return the number of bytes read. rznegative offsetzoffset too largeN) rWrZrsrtlenr.rtellr rseekreadinto)rHrxryr{rtbytesizeresultrzs rrecv_bytes_into_ConnectionBase.recv_bytes_intos   _zzH#a&(Hz !233" !344%%'F;;=D4-'$V__%677 KKN OOA0%}9; <!__s B*C  C.cUR5 UR5 UR5n[R UR 55$)zReceive a (picklable) object)rWrZrrloads getbuffer)rHrxs rrecv_ConnectionBase.recvs?   $$S]]_55rcdUR5 UR5 URU5$)z/Whether there is any input available to be read)rWrZ_pollrHrs rpoll_ConnectionBase.polls)  zz'""rcU$rrQs r __enter___ConnectionBase.__enter__ rc$UR5 grr`rHexc_type exc_valueexc_tbs r__exit___ConnectionBase.__exit__   r)rErFrG)TT)rNr)r)g)__name__ __module__ __qualname____firstlineno__rErLrRrWrZr]rapropertyrerJrKrmr`r}rrrrrrr__static_attributes__rrrrArAxsG ".65,$$ $2(5 26# rrAc\\rSrSrSrSrSr\R4Sjr Sr S Sjr Sr S r S rg) PipeConnectioniz Connection class based on a Windows named pipe. Overlapped I/O is used, so the handles must have been created with FILE_FLAG_OVERLAPPED. FNcfURnUbUR5 U"UR5 gr)_send_ovcancelrE)rH _CloseHandleovs rrPPipeConnection._closes%B~  &rcURb [S5e[R"URUSS9up#X lU[R :Xa'[R "UR/S[5nSUlURS5upSU[R:Xa[[RS5eg! UR5 e=f!SUlURS5upSf=f)Nz/concurrent send_bytes() calls are not supportedT overlappedFrU)rr._winapi WriteFilerEERROR_IO_PENDINGWaitForMultipleObjectseventrrGetOverlappedResultERROR_OPERATION_ABORTEDrVerrnoEPIPE)rHrxrerrwaitresnwrittens rrwPipeConnection._send_bytes!s}}( "566'' cdKGBM ='222%<< E85G!% " 6 6t < g555ekk+=>> 6    $ " 6 6t < #s;CCCC8cUR(aSUl[R"5$UcSO [US5n[R "UR USS9up4U[R:Xa'[R"UR/S[5nURS5updUS:Xa6[R"5nURUR55 U$U[R:XaUR!X15$[+S5e! UR5 e=f!URS5updUS:Xa:[R"5nURUR55 Us s$U[R:XaUR!X15s s$f=f!["a*nUR$[R&:Xa[(eeSnAff=f)NFTrrz.shouldn't get here; expected KeyboardInterrupt)_got_empty_messageioBytesIOminrReadFilerErrrrrrwriterERROR_MORE_DATA_get_more_datarVwinerrorERROR_BROKEN_PIPEEOFError RuntimeError) rHmaxsizebsizerrrnreadfes rrPipeConnection._recv_bytes;s&&*/'zz|#&C4E%..t||U;?AGBD'":"::&-&D&D!# E8'=G&(%;%;D%A !8 " AGGBLLN3#$H G$;$;;#'#6#6r#CC<OP P! %'%;%;D%A !8 " AGGBLLN3#$H G$;$;;#'#6#6r#CC<zzW%>%>>& s\"F5#;DAF5-$F5D11D44AF2F5'F2/F51F22F55 G)?%G$$G)cUR(d'[R"UR5SS:wag[ [ U/U55$)NrT)rr PeekNamedPiperEboolrrs rrPipeConnection._poll[s>''--dll;A>!CdVW-. .rcUR5n[R"5nURU5 [R "UR 5SnUb"[U5U-U:aUR5 [R"UR USS9upURS5upvURUR55 U$)NrTr) rrrrrrrErrarr)rHrrrxrleftrrbytess rrPipeConnection._get_more_dataas,,.C A GGCL((6q9D"s3x$'@((*&&t||TdKGB006KF GGBLLN #Hr)rrr)rrrr__doc__rrr CloseHandlerPrwrrrrrrrrrs8 #&-&9&9 ' (4 Q@ / rrc\rSrSrSr\(a)\R4Sjr\Rr \Rr O(\ R4Sjr\ Rr \ R r \ 4Sjr\ 4SjrSrS S jrS rS rg) Connectioniqzc Connection class based on an arbitrary file descriptor (Unix only), or a socket handle (Windows). c(U"UR5 grrdrHrPs rrPConnection._closex 4<< rc(U"UR5 grrdrs rrPr}rrcb[U5nU"URU5nX4-nUS:XagXSnM$Nr)rrE)rHrxr remainingr|s r_sendConnection._sends=H dllC(A NIA~b'C rc[R"5nURnUnUS:aLU"XE5n[U5nUS:XaXQ:Xa[e[ S5eUR U5 XW-nUS:aMLU$)Nrzgot end of file during message)rrrErrrVr)rHrzreadrxrIrchunkr|s r_recvConnection._recvsvjjl !m+EE AAv$"N!"BCC IIe  NI!m rc[U5nUS:ab[R"SS5n[R"SU5nURU5 URU5 URU5 g[R"SU5nUS:a#URU5 URU5 gURXA-5 g)Ni!i!Qi@)rstructpackr)rHrxr| pre_headerheaders rrwConnection._send_bytess H z>T2.J[[q)F JJz " JJv  JJsO[[q)F5y 6" 3  6<(rNc"URS5n[R"SUR55unUS:Xa8URS5n[R"SUR55unUbX1:agURU5$)Nrrr$r)rrunpackr)rHrrxrzs rrConnection._recv_bytessojjm dCLLN3 2:**Q-CMM$ 7ED  4>zz$rc2[U/U5n[U5$r)rr)rHrrs rrConnection._polls $ !Awrrr)rrrrrr_multiprocessing closesocketrPr_writer_readr%r`rrrrrwrrrrrrrrqso  0 < < !!&& %% " !% % ). rrcZ\rSrSrSrS SjrSrSr\S5r \S5r S r S r S r g) riz Returns a listener object. This is a wrapper for a bound socket which is 'listening' for connections, or for a Windows named pipe. Nc\U=(d! U=(a [U5=(d [n[U5 Ub [U[5(d [ S5eUS:XaQU(a[ X5UlO^[R"5Hn[U5n[ X5Ul O( O%U=(d [U5n[#XU5UlX@lg![aEnU[:aeUR[R[R 4;aeSnAMSnAff=f)Nauthkey should be a byte stringr)r?default_familyr7 isinstancebytes TypeError PipeListener _listener itertoolscountr1rV_MAX_PIPE_ATTEMPTSrrERROR_PIPE_BUSYERROR_ACCESS_DENIEDSocketListener_authkey)rHr>r0backlogauthkeyattemptsrs rrLListener.__init__s#G= W(=#"   z'5'A'A=> > Y !-g!? ) 1H/7G")5g)G !2:!26!:G+GWEDN #"#'99!::g.E.E.5.I.I.KK!K"sC D+&:D&&D+cURc [S5eURR5nURb*[ XR5 [ XR5 U$)zb Accept a connection on the bound socket or named pipe of `self`. Returns a `Connection` object. zlistener is closed)rrVacceptrdeliver_challengeanswer_challenge)rHcs rr#Listener.acceptsS >> !./ / NN ! ! # == $ a / Q .rcRURnUbSUlUR5 gg)z1 Close the bound socket or named pipe of `self`. N)rr`)rHlisteners rr`Listener.closes)>>  !DN NN  rc.URR$r)r_addressrQs rr>Listener.addresss~~&&&rc.URR$r)r_last_acceptedrQs r last_acceptedListener.last_accepteds~~,,,rcU$rrrQs rrListener.__enter__rrc$UR5 grrrs rrListener.__exit__ rr)rr)NNrN)rrrrrrLr#r`rr>r0rrrrrrrrsH  8 ''--rrcU=(d [U5n[U5 US:Xa [U5nO [U5nUb [ U[ 5(d [ S5eUb[X25 [X25 U$)z5 Returns a connection to the address of a `Listener` rr) r?r7 PipeClient SocketClientrrrr%r$)r>r0rr&s rrrsp ,|G,FV  w   !:gu#=#=9::$!% HrcHU(an[R"5upURS5 URS5 [UR 55n[UR 55nX44$[ R "5upV[USS9n[USS9nX44$)< Returns pair of connection objects at either end of a pipe TFrKrJ)r6 socketpair setblockingrdetachr%pipe)duplexs1s2c1c2fd1fd2s rrr&s &&(FB NN4 NN4 BIIK(BBIIK(B v wwyHCC%0BC%0Bv rc PU(a=[Rn[R[R-n[[pCO'[R n[RnS[pC[ R"5Hn[S5n[R"Xa[R-[R-[R[R-[R-SX4[R[R 5n O [R,"WUS[R [R.[R[R 5n [R0"U [RSS5 [R2"WSS9n U R5S5up[7XpS9n [7XS9nX4$!["aFnU[$:aeUR&[R([R*4;aeSnAGMSnAff=f) r:rrrNTrr;r<)rPIPE_ACCESS_DUPLEX GENERIC_READ GENERIC_WRITEBUFSIZEPIPE_ACCESS_INBOUNDrrr1CreateNamedPipeFILE_FLAG_OVERLAPPEDFILE_FLAG_FIRST_PIPE_INSTANCEPIPE_TYPE_MESSAGEPIPE_READMODE_MESSAGE PIPE_WAITNMPWAIT_WAIT_FOREVERNULLrVrrrr CreateFile OPEN_EXISTINGSetNamedPipeHandleStateConnectNamedPiperr)rAopenmodeaccessobsizeibsizer r>h1rh2r_rrDrEs rrr9s 11H))G,A,AAF$gF22H**FF!)H' 2G ,,(D(DD99:--0M0MM%%&vw'C'CLL*&   VQ g.C.C  ( (',, '' --tT --bTB //5B 0 B 0v + 11::g&=&=&-&A&A&CCC sB G H%:H  H%c.\rSrSrSrSSjrSrSrSrg) rinzG Representation of a socket which is bound to an address and listening c[R"[[U55Ul[RS:Xa9URR [R [RS5 URRS5 URRU5 URRU5 URR5Ul X lSUlUS:XaG["R$"U5(d,["R&"U[R(U4SS9UlgSUlg![a URR5 ef=f)NposixrTrrargs exitpriority)r6getattr_socketr%name setsockopt SOL_SOCKET SO_REUSEADDRr>bindlisten getsocknamer,rVr`_familyr/rr=Finalizeunlink_unlink)rHr>r0rs rrLSocketListener.__init__rs }}WVV%<=  ww'! ''(9(9(.(;(;Q@ LL $ $T * LL  g & LL   ( LL446DM " Y t'H'H'Q'Q==biiwjqDL DL  LL    s B=E &E0cURR5uolURS5 [ UR 55$)NT)rhr#r/r>rr?rHss rr#SocketListener.accepts7!%!4!4!6  d!((*%%rcURR5 URnUbSUlU"5 gg!URnUbSUlU"5 ff=fr)rhr`rs)rHrrs rr`SocketListener.closes[  LL   \\F!# "\\F!# "s ; A)r,rpr/rhrsN)r) rrrrrrLr#r`rrrrrrns 2& rrc [U5n[R"[[U55nURS5 UR U5 [ UR 55sSSS5 $!,(df  g=f)zG Return a connection object connected to the socket given by `address` TN)r?r6rgr>connectrr?)r>r0rws rr8r8sU' "F / 1Q d '!((*% 2 1 1s ;A55 BcB\rSrSrSrS SjrS SjrSr\S5r Sr g) riz Representation of a named pipe Nc XlURSS9/UlSUl[R "SUR5 [R "U[RURUR4SS9Ul g)NT)firstz listener created with address=%rrrd) r, _new_handle _handle_queuer/r sub_debugrqr_finalize_pipe_listenerr`)rHr>rs rrLPipeListener.__init__sj#M"&"2"2"2">!?D "&D  NN=t}} Ml::(($--8qDJrc [R[R-nU(aU[R-n[R"UR U[R [R-[R-[R[[[R[R5$r) rrIrOrPrNr,rQrRrSPIPE_UNLIMITED_INSTANCESrLrTrU)rHrflagss rrPipeListener._new_handles..1M1MME>>>** u))G,I,II!!"00'7,,gll  rc8URRUR55 URRS5n[R "USS9n[R "UR/S[5nURS5upE[U5$! UR5 [R"U5 e=f!URS5upEf=f![a)nUR[R:waeSnAN}SnAff=f)NrTrF)rappendrpoprrYrrrrrrrVr ERROR_NO_DATAr)rHrIrresr`rrs rr#PipeListener.accepts    % %d&6&6&8 9''++A.F $--fF $!88 E85C 33D9FA!&) )IIK''/33D9FAs ::!6!667 s0C&'B"")C  CC#& D0DDcp[R"SU5 UHn[R"U5 M g)Nz closing listener with address=%r)rrrr)queuer>rIs rr$PipeListener._finalize_pipe_listeners) NN=w G##F+ r)r,rr/r`r)F) rrrrrrLrr# staticmethodrrrrrrrs*    *.  ,  ,rrc F[5n[R"US5 [R"U[R[R -S[R [R[R[R 5n[R"U[RSS5 [!U5$![aInUR[R[R4;d[U5(aeSnAOSnAff=fGM)zE Return a connection object connected to the pipe given by `address` rN)rr WaitNamedPiperVrJrKrUrWrOrVrERROR_SEM_TIMEOUTrr rXrRr)r>rhrs rr7r7s O %%gt4&&W11G4I4IIw||W%:%:00',, '' w,,dD a   ::g&?&?&-&=&=&??BPQRBSBSCT sB C D?DD(s #CHALLENGE#s #WELCOME#s #FAILURE#>md5sha256sha384sha3_256sha3_384c#8# UHn[U5v M g7fr)r).0r`s r r`s7&6c!ff&6sc [U5[;aSU4$URS5(aIURSS[S-5=nS:a)USUnU[ ;aXS-SnUR S5U4$[S U<35e) zReturns a digest name and the payload for a response hash. If a legacy protocol is detected based on the message length or contents the digest name returned will be empty to indicate legacy mode where MD5 and no digest prefix should be sent. {}rrNasciizRunsupported message length, missing digest prefix, or unsupported digest: message=)r_LEGACY_LENGTHSr<find_MAX_DIGEST_LEN_ALLOWED_DIGESTSdecoder )messagecurlydigestpayloads r_get_digest_name_and_payloadrks 7|& 7{4  ,,tQ(9: :a?5! % %Agh'G==)72 2  /&-Z 1 22rcSSKn[U5SnU(d!URXS5R5$URXU5R5nSUR S5U4-$![a SnNDf=f)aoCreate a MAC based on authkey and message The MAC algorithm defaults to HMAC-MD5, unless MD5 is not available or the message has a '{digest_name}' prefix. For legacy HMAC-MD5, the response is the raw MAC, otherwise the response is prefixed with '{digest_name}', e.g. b'{sha256}abcdefg...' Note: The MAC protects the entire message including the digest_name prefix. rNmd5sha256{%s}%sr)hmacrnewrr.encode)rrr digest_nameresponses r_create_responsers.w7:K  #88Ge4;;= =xx+6==?H  **73X> >> ##K  #sA11 B?Bc zSSKn[U5upEU=(d SnURXU5R5n[ U5[ U5:wa'[ SU<S[ U5S[ U535eURXe5(d [ S 5eg![a [ SU<S35ef=f) aHVerify MAC challenge If our message did not include a digest_name prefix, the client is allowed to select a stronger digest_name from _ALLOWED_DIGESTS. In case our message is prefixed, a client cannot downgrade to a weaker algorithm, because the MAC is calculated over the entire message including the '{digest_name}' prefix. rNrzresponse_digest=z unsupportedz expected z of length z got zdigest received was wrong)rrrrr.r rcompare_digest)rrrrresponse_digest response_macexpecteds r_verify_challengers$@$J!O%.OE88Go>EEG 8}L))!O.k#h-I<()+, ,   x 6 6!"=>> 7 E!%5_$6l"CDDEs BB:rc[U[5(d#[SR[ U555e[ R "[5nSURS5U4-nUR[U-5 URS5n[XU5 UR[5 g![a UR[5 ef=f)N Authkey must be bytes, not {0!s}rr)rrr.formatr9r%r)MESSAGE_LENGTHrr} _CHALLENGErr_WELCOMEr _FAILURE) connectionrrrrs rr$r$s gu % % . 5 5d7m DF Fjj(G;--g6@@G*w./$$S)H('H5 h' h' s  B55!Cc[U[5(d#[SR[ U555eUR S5nUR [5(d[SU<35eU[[5Sn[U5[:a[S[U5S35e[X5nURU5 UR S5nU[:wa [S5eg)Nrrz,Protocol error, expected challenge: message=zchallenge too short: z byteszdigest sent was rejected)rrr.rr9rr<rr r_MD5ONLY_MESSAGE_LENGTHrr}r)rrrrrs rr%r%s gu % % . 5 5d7m DF F##C(G   j ) )!?wjAC Cc*o&'G 7|--!$9#g,v"NOO g /F&!$$S)H8!"<==rc&\rSrSrSrSrSrSrg)ConnectionWrapperichXlX lX0lSHn[X5n[ XU5 M g)N)rmr`rrr})_conn_dumps_loadsrgsetattr)rHconnrrattrrs rrLConnectionWrapper.__init__s0   KD$%C D $Lrc\URU5nURRU5 gr)rrr})rHrrws rrConnectionWrapper.sends" KK  a rcXURR5nURU5$r)rrrrvs rrConnectionWrapper.recvs" JJ ! ! #{{1~r)rrrN)rrrrrLrrrrrrrrs%!rrcT[RU4SSSS5RS5$)Nrutf-8) xmlrpclibrr)rs r _xml_dumpsrs& ??C64tQ 7 > >w GGrcV[RURS55uupU$)Nr)rrr)rwrmethods r _xml_loadsrs"__QXXg%67NFS Jrc\rSrSrSrSrg) XmlListenericbSSKJq [R U5n[ U[ [5$r) xmlrpc.clientclientrrr#rrrrs rr#XmlListener.accepts")ood# j*==rrN)rrrrr#rrrrrrs>rrcJSSKJq [[ U0UD6[ [ 5$r)rrrrrrr)rekwdss r XmlClientrs% VT2T2J KKrc^[U5m/n[T5S:au[R"TSU5nUR U4SjU55 U(a8[ T5VVs/sHupEXCSU-s=:aU;dMO MUPM! snnmSnT(a[T5S:aTSSOTn[R"USU5nU[:XaU$[Us=::a[[T5-:a O O U[-nO9[Us=::a[[T5-:a O O U[-nO [S5eURTU5 TUS-SmSnT(aMU$![a /s$f=fs snnf)N<Fc3.># UH nTUv M g7frr)riLs rr#_exhaustive_wait..s+s!1srzShould not get herer) listrrBatchedWaitForMultipleObjects TimeoutErrorextend enumeraterrr r rr)handlesrreadyrrrshort_Lrs @r_exhaustive_waitr sc M q6B; ;;AugN LL+s+ +#,Q<M<4111vz3L3LQ3LQ<MG #A afG00%ICl" #> A(>>}$!SD+;c!f+DD''"#899 LL3 #a%& AGa )    Ns#E%'E7E7E7% E43E4c^ Uc[nOUS:aSnO[US-S-5n[U5n0m /n[5n[5nUHn[ US5n[ R "U"5SS5upxU[ R:Xa"URU5 UT UR'MfU(aO[R"5SSS:a3URS 5upU(d[!US 5(aSUlUR%U5 SnM [+T R-5U5nUHnUR/5 M UHonURS5upU[ R0:wdM-T URnUR%U5 US:XdMU[!US 5(dMhSUlMq UR3U 4S jU55 UVs/sH oUU;dM UPM sn$![a#n SU RpU[;aeSn A GNSn A ff=f![an U RnSn A GN_Sn A ff=f![&a UT UR)5'GM%f=f![a"n U RnU[;aeSn A GN1Sn A ff=f!UHnUR/5 M UHnURS5upO.![a!n U RnU[;aeSn A OSn A ff=fU[ R0:wdM\T URnUR%U5 US:XdM[!US 5(dMSUlM f=fs snf)  Wait till an object in object_list is ready/readable. Returns list of those objects in object_list which are ready/readable. Nrrg?rmTr)r#rFrc3.># UH nTUv M g7frr)rrwaithandle_to_objs rrwait..ysI=a.q1=r)rintrsetrgrrrVr _ready_errorsrrrr3getwindowsversionrr5raddAttributeErrorrDrkeysrrupdate) object_listrov_list ready_objects ready_handlesormrrrr`rs @rrr.s, ?G q[G'D.3./G;'   6 8 $$Q1F "")"2"268Q"E g666r*67)"((3 #"7"7"9"1"="G1)+)?)?)F$'716J+K+K7; 4%))!,"#=!@-->-C-C-EwOM 33D9FA '999)"((3A!%%a(ax#1&:;;37A0 I=II&=;a}*<;==_#""& Cm3!4" $+1&'jj1-&978%akkm49N**C-/0 33D9FAs**C-/0'999)"((3A!%%a(ax#1&:;;37A0">s J$ IG< 9M#>L M#$M#M# M# PollSelectorc[5nUH#nURU[R5 M% Ub[R "5U-nUR U5nU(a*UVVs/sHupgURPM snnsSSS5 $Ub)W[R "5- nUS:a UsSSS5 $Mps snnf!,(df  g=f)rNr) _WaitSelectorregister selectors EVENT_READrrselectfileobj)r rselectorrdeadlinerkeyeventss rrrs _"!!#y';';<#">>+g5 0=BCUMSCKKUC_*"*T^^-="="Q;#(_D_s$A#C.CC"C?C Cc*UR5n[R"U[R[R5nSSKJn URU5n[X@RUR44sSSS5 $!,(df  g=f)Nr)resource_sharer) rmr6fromfdr SOCK_STREAMrr DupSocketrebuild_connectionrJrK)rrIrwrdss rreduce_connectionr!s^ ]]66>>63E3E F! ) **1-B%MM4=='IIG F Fs 5B BcVUR5n[UR5X5$rr?r)r rJrKsocks rrrs yy{$++-<r?s 3 1**OO !  ; 69N  H<<7N  H-& 0$ F F&TTn ]]@MMhGvGT *<<7&/j)V)X&<<76,v6,p!>   r@B7&677 *O<24?8?2(5(*>%>*  H>(>L<<7@..0M0MNML>` y.))!.. !00 )6<<7J =z#45K :~'=>F2z#45$ ||w Gs II43I4