+
    üÐjÔ  ã                  óˆ  a € 0 t $ R t^ RIHt ^ RIt^ RIt^ RIHtHt ^ RI	H
t
 ^ RIHtHtHt ^ RIHt ^ RIHt ^ RIHtHtHt ^ R	IHt ^ R
IHt RR lt]R8X  d   ]tM]P                  t ^ RIHt ]t]! R4      t#R R lt$R R lt%]! ]4       ! R R]PL                  ]4      4       t'R t(R.t)R#   ]  d    ]!tR]"R&    LMi ; i)z
Select reactor
)ÚannotationsN)ÚEBADFÚEINTR)Úsleep)ÚCallableÚTypeÚTypeVar)Úimplementer)Ú	posixbase)ÚIReactorFDSetÚIReadDescriptorÚIWriteDescriptor)Úlog)ÚplatformTypec                óÌ   € V '       g,   V'       g$   Vf   RpM\        VR4      p\        V4       . . . 3# Ve   VR8”  d   Rp\        P                  ! WW4      w  rpWV,           . 3# )zWin32 select wrapper.g{®Gáz„?gü©ñÒMbP?g      à?)Úminr   Úselect)ÚrÚwÚeÚtimeouts   &&&&Ú@/usr/lib/python3/dist-packages/twisted/internet/selectreactor.pyÚwin32selectr      sd   € ç—àŠ?Ø‰Gä˜' 5Ó)ˆGÜˆgŒØ�2�rˆzÐð ‚˜' Cœ-ØˆÜ�mŠm˜A !Ó-�G€Aˆ!Ø�!�e�Rˆ<Ðó    Úwin32)Ú_ThreadedWin32EventsMixinzType[object]Ú
_extraBaseÚ_Tc               ó(   € V ^8„  d   QhRRRRRRRR/# )	é   ÚtoPreenzlist[_T]Ú	preenIntozset[_T]Ú
disconnectz%Callable[[_T, Exception, bool], None]ÚreturnÚNone© )Úformats   "r   Ú__annotate__r'   :   s0   € ÷ &ñ &Øð&àð&ð 6ð&ð 
ñ	&r   c                ó  € VP                  4        V  F1  p \        P                  ! V.V.V.^ 4       VP                  V4       K3  	  R#   \         d2   p\        P
                  ! RT,          4       T! Y4R4        Rp?Kn  Rp?ii ; i)é    zbad descriptor %sFN)Úclearr   ÚaddÚ	Exceptionr   Úmsg)r    r!   r"   Ú
selectabler   s   &&&  r   Ú	_onePreenr/   :   st   € ð
 ‡O�OÔÛˆ
ð	&Ü�MŠM˜:˜,¨¨°z°lÀAÔFð
 �M‰M˜*Ö%ó øô ô 	-Ü�GŠGÐ'¨*Õ4Ô5Ù�z e×,Ò,ûð	-ús   —A
Á
BÁ&BÂBc               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   Úreadszset[IReadDescriptor]Úwriteszset[IWriteDescriptor]r"   zECallable[[IReadDescriptor | IWriteDescriptor, Exception, bool], None]r#   r$   r%   )r&   s   "r   r'   r'   J   s1   € ÷ 	+ñ 	+Øð	+à!ð	+ð Vð	+ð 
ñ		+r   c                óŽ   € \         P                  ! R 4       \        V 4      p\        V4      p\        W0V4       \        WAV4       R# )z1Malformed file descriptor found.  Preening lists.N)r   r-   Úlistr/   )r1   r2   r"   ÚreadersÚwriterss   &&&  r   Ú_preenDescriptorsr7   J   s7   € ô
 ‡G‚GÐ?Ô@Ü%)¨%£[€GÜ&*¨6£l€GÜˆg˜jÔ)Üˆg˜zÖ*r   c                  ól   € ] tR t^VtRtR R ltR R ltR t]tR t	R t
R	 tR
 tR tR tR tR tRtR# )ÚSelectReactora  
A select() based reactor - runs on all POSIX platforms and on Win32.

@ivar _reads: A set containing L{FileDescriptor} instances which will be
    checked for read events.

@ivar _writes: A set containing L{FileDescriptor} instances which will be
    checked for writability.
c               ó   € V ^8„  d   QhRR/# ©r   r#   r$   r%   )r&   s   "r   r'   ÚSelectReactor.__annotate__b   s   € ÷ 2ñ 2˜$ñ 2r   c                ó€   € \        4       V n        \        4       V n        \        P                  P                  V 4       R# )zF
Initialize file descriptor tracking dictionaries and the base class.
N)ÚsetÚ_readsÚ_writesr
   ÚPosixReactorBaseÚ__init__©Úselfs   &r   rB   ÚSelectReactor.__init__b   s*   € ô -0«EˆŒÜ.1«eˆŒÜ×"Ñ"×+Ñ+¨DÖ1r   c               ó   € V ^8„  d   QhRR/# r;   r%   )r&   s   "r   r'   r<   j   s   € ÷ Qñ Q 4ñ Qr   c                	ó\   € \        V P                  V P                  V P                  4       R # ©N)r7   r?   r@   Ú_disconnectSelectablerC   s   &r   r7   ÚSelectReactor._preenDescriptorsj   s   € Ü˜$Ÿ+™+ t§|¡|°T×5OÑ5OÖPr   c                ó  €  \        V P                  V P                  . V4      w  r#pT P                  p\        P                  pTRT P                  3TRT P                  33 F   w  r‰p
T F  pYº9  d   K  T! Y¶Y¹4       K  	  K"  	  R#   \         d    T P	                  4         R# \
         d*    \        P                  ! 4        T P	                  4         R# \         dž   pTP                  ^ ,          R9   d,   T P                  '       g   T P                  '       g    Rp?R# h TP                  ^ ,          \        8X  d    Rp?R# TP                  ^ ,          \        8X  d   T P	                  4         Rp?R# h Rp?ii ; i)z
Run one iteration of the I/O monitor loop.

This will run all selectables who had input or output readiness
waiting for them.
NÚdoReadÚdoWrite)r)   r   )Ú_selectr?   r@   Ú
ValueErrorr7   Ú	TypeErrorr   ÚerrÚOSErrorÚargsr   r   Ú_doReadOrWriteÚcallWithLogger)rD   r   r   r   ÚignoredÚseÚ_drdwÚ_logrunÚselectablesÚmethodÚfdsetr.   s   &&          r   ÚdoSelectÚSelectReactor.doSelectm   s4  € ð	Ü# D§K¡K°·±¸rÀ7ÓK‰MˆA�'ð< ×#Ñ#ˆÜ×$Ñ$ˆà�˜$Ÿ+™+Ð&Ø�	˜4Ÿ<™<Ð(ó+
Ñ&ˆK ó *�
ð Ô*Ùá˜
¨:Ö>ó *ó	+
øô? ô 	à×"Ñ"Ô$ÚÜô 	ô �GŠGŒIØ×"Ñ"Ô$ÚÜô 	ð �w‰w�q�z˜VÔ#àŸŸ˜¨d¯l¯l¨lÝàØ—‘˜•œuÔ$ÝØ—‘˜•œuÔ$Ø×&Ñ&Ô(Ýð ûð#	úsG   ‚%B ÂE>Â%E>Â.&E>ÃE>Ã E>Ã!)E9ÄE9Ä#E9Å,E9Å8E9Å9E>c                	óê   €  \        W4      ! 4       pV'       d   V P                  WVR8H  4       R# R#   \         d5    \        P                  ! 4       ^,          p\        P
                  ! 4         L_i ; i)é   rL   N)ÚgetattrÚBaseExceptionÚsysÚexc_infor   rQ   rI   )rD   r.   r[   Úwhys   &&& r   rT   ÚSelectReactor._doReadOrWrite£   s]   € ð	Ü˜*Ô-Ó/ˆC÷ Ø×&Ñ& z¸À(Ñ8JÖKñ øô ô 	Ü—,’,“. Õ#ˆCÜ�GŠGŽIð	ús   ‚3 ³<A2Á1A2c                ó<   € V P                   P                  V4       R# )zB
Add a FileDescriptor for notification of data available to read.
N)r?   r+   ©rD   Úreaders   &&r   Ú	addReaderÚSelectReactor.addReader¬   s   € ð 	�‰�‰˜Ör   c                ó<   € V P                   P                  V4       R# )zC
Add a FileDescriptor for notification of data available to write.
N)r@   r+   ©rD   Úwriters   &&r   Ú	addWriterÚSelectReactor.addWriter²   s   € ð 	�‰×Ñ˜Ö r   c                ó<   € V P                   P                  V4       R# )zA
Remove a Selectable for notification of data available to read.
N)r?   Údiscardrh   s   &&r   ÚremoveReaderÚSelectReactor.removeReader¸   s   € ð 	�‰×Ñ˜FÖ#r   c                ó<   € V P                   P                  V4       R# )zB
Remove a Selectable for notification of data available to write.
N)r@   rr   rm   s   &&r   ÚremoveWriterÚSelectReactor.removeWriter¾   s   € ð 	�‰×Ñ˜VÖ$r   c                	óN   € V P                  V P                  V P                  4      # rH   )Ú
_removeAllr?   r@   rC   s   &r   Ú	removeAllÚSelectReactor.removeAllÄ   s   € Ø�‰˜tŸ{™{¨D¯L©LÓ9Ð9r   c                	ó,   € \        V P                  4      # rH   )r4   r?   rC   s   &r   Ú
getReadersÚSelectReactor.getReadersÇ   s   € Ü�D—K‘KÓ Ð r   c                	ó,   € \        V P                  4      # rH   )r4   r@   rC   s   &r   Ú
getWritersÚSelectReactor.getWritersÊ   s   € Ü�D—L‘LÓ!Ð!r   )r?   r@   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rB   r7   r]   ÚdoIterationrT   rj   ro   rs   rv   rz   r}   r€   Ú__static_attributes__r%   r   r   r9   r9   V   sH   † ñõ2õQò2?ðh €KòLò ò!ò$ò%ò:ò!ö"r   r9   c                 ó6   € \        4       p ^ RIHp V! V 4       R# )zDConfigure the twisted mainloop to be run using the select() reactor.)ÚinstallReactorN)r9   Útwisted.internet.mainrŠ   )ÚreactorrŠ   s     r   Úinstallr�   Î   s   € ä‹o€GÝ4á�7Ör   r�   rH   )*Ú__conditional_annotations__r†   Ú
__future__r   r   rc   Úerrnor   r   Útimer   Útypingr   r   r   Úzope.interfacer	   Útwisted.internetr
   Útwisted.internet.interfacesr   r   r   Útwisted.pythonr   Útwisted.python.runtimer   r   rN   Ú"twisted.internet.win32eventreactorr   r   ÚImportErrorÚobjectÚ__annotations__r   r/   r7   rA   r9   r�   Ú__all__)rŽ   s   @r   Ú<module>r�      sÉ   øðô
õ #ã Û 
ß Ý ß *Ñ *å &å &ß XÑ XÝ Ý /ôð$ �7ÔØ�Gà�m‰m€Gð+ÝLð +€JáˆTƒ]€õ&õ 	+ñ ˆ]Óôt"�I×.Ñ.°
ó t"ó ðt"ònð ˆ+‚øðI ô &Ø%€J�Õ%ð&ús   Á+B0 Â0CÃ C