Ë
    _§1h	†  ã                  óÂ  — d dl mZ d dlZd dlmZ d dlmZ d dlmZm	Z	 d dl
Z
d dlZd dlmZ 	 d dlZd dlmZ d dlZd dlZd dlmZmZ d d	lmZmZ d
dlmZmZmZ erd dlmZ  ej@                  «       Z!e!jE                  d«      Z# ejH                  ejJ                  «      Z&e#jO                  e&«        ejH                  ejJ                  «      Z(e!jS                  e(«       ejT                  jW                  dd ejX                  de¬«      gddg¬«      Z-d4d„Z.eddddœ	 	 	 	 	 	 	 d5d„«       Z/e-d6d„«       Z0e	 	 	 	 d7d„«       Z1d8d„Z2d8d„Z3d8d„Z4d8d„Z5d8d„Z6d8d„Z7d8d„Z8d9d „Z9d9d!„Z:	 	 	 	 d9d"„Z;d9d#„Z<	 	 	 	 d9d$„Z=d8d%„Z>ed8d&„«       Z?	 	 	 	 d9d'„Z@d8d(„ZAe-	 	 	 	 	 	 d:d)„«       ZBejT                  j‡                  d*«      d8d+„«       ZDejT                  j‡                  d*«      d8d,„«       ZEejT                  j‡                  d*«      d8d-„«       ZFejT                  j‡                  d*«      d8d.„«       ZGd8d/„ZH	 	 	 	 d9d0„ZI	 	 	 	 d9d1„ZJd8d2„ZKd8d3„ZLy# e$ rZ ee«       Y dZ[�Œ!dZ[ww xY w);é    )ÚannotationsN)Úasynccontextmanager)Úcount)ÚTYPE_CHECKINGÚNoReturn)Úskip_if_optional_else_raise)ÚSSL)ÚDTLSChannelÚDTLSEndpoint)ÚFakeNetÚ	UDPPacketé   )Ú
binds_ipv6Úgc_collect_harderÚslow)ÚAsyncGeneratorzexample.comÚipv6FT)ÚmarksÚipv4)Úidsc                 ó  — | j                  dd«      }|rt        j                  j                  nt        j                  j                  }t        j                  j                  t        j                  j
                  |¬«      }t        |fi | ¤ŽS )Nr   F)ÚtypeÚfamily)ÚpopÚtrioÚsocketÚAF_INET6ÚAF_INETÚ
SOCK_DGRAMr   )Úkwargsr   r   Úsocks       úS/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/trio/_tests/test_dtls.pyÚendpointr#   /   sb   € Ø�:‰:�f˜eÓ$€DÙ%)ŒT�[‰[×!Ò!¬t¯{©{×/BÑ/B€FÜ�;‰;×Ñ¤4§;¡;×#9Ñ#9À&ÐÓI€DÜ˜Ñ' Ñ'Ð'ó    )Ú
autocancelÚmtur   c               ó  ‡K  — t        |¬«      5 }|rdnd}|j                  j                  |df«      ƒ d {  –—†  t        j                  «       4 ƒd {  –—† }dˆfd„}|j                  |j                  t        |«      ƒ d {  –—†  ||j                  j                  «       f­–— | r|j                  j                  «        d d d «      ƒd {  –—†  d d d «       y 7 Œ¤7 Œ‰7 Œ\7 Œ# 1 ƒd {  –—†7  sw Y   Œ#xY w# 1 sw Y   y xY w­w)N©r   z::1ú	127.0.0.1r   c              “  óâ  •K  — t        d| j                  j                  j                  «       ›d| j                  ›�«       ‰�| j                  ‰«       	 t        d«       | j                  «       ƒ d {  –—†  t        d«       | 2 3 d {  –—† }t        d|›d| j                  ›�«       | j                  |«      ƒ d {  –—†  Œ>7 ŒO7 Œ;7 Œ	6 y # t        j                  $ r t        d«       Y y w xY w­w)Nzecho handler started: server z client zserver starting do_handshakezserver finished do_handshakezechoing ú -> zecho handler channel broken)
Úprintr#   r   ÚgetsocknameÚpeer_addressÚset_ciphertext_mtuÚdo_handshakeÚsendr   ÚBrokenResourceError)Údtls_channelÚpacketr&   s     €r"   Úecho_handlerz&dtls_echo_server.<locals>.echo_handlerB   sù   øè ø€ ÜðØ*×3Ñ3×:Ñ:×FÑFÓHÐKð LØ*×7Ñ7Ð:ð<ôð
 �?Ø ×3Ñ3°CÔ8ð
9ÜÐ8Ô9Ø&×3Ñ3Ó5×5Ð5ÜÐ8Ô9ð )5÷ 8ð 8˜fÜ ¨¨
°$°|×7PÑ7PÐ6SÐTÔUØ*×/Ñ/°Ó7×7Ñ7ð 6øð8øà7øñ )5øô ×/Ñ/ò 9ÜÐ7Ö8ð9üsl   ƒAC/ÁC Á3CÁ4C ÂC	Â	CÂ
C	Â0C Â=CÂ>C ÃC	ÃC Ã	C Ã
C/ÃC,Ã)C/Ã+C,Ã,C/)r3   r
   ÚreturnÚNone)r#   r   Úbindr   Úopen_nurseryÚstartÚserveÚ
server_ctxr-   Úcancel_scopeÚcancel)r%   r&   r   ÚserverÚ	localhostÚnurseryr5   s    `     r"   Údtls_echo_serverrB   6   sè   øè ø€ ô 
�tÔ	ð . Ù!‘E {ˆ	Ø�m‰m× Ñ  )¨Q Ó0×0Ð0Ü×$Ñ$Ó&÷ 	.ð 	.¨'õ9ð( —-‘- §¡¬j¸,ÓG×GÐGà˜&Ÿ-™-×3Ñ3Ó5Ð5Ó5áØ×$Ñ$×+Ñ+Ô-÷7	.÷ 	.÷.ð .à0øð	.øð, Høð-	.ø÷ 	.÷ 	.ñ 	.ú÷.ð .üs†   ƒD�'C9·C¸C9ÁCÁC9Á+C$ÂC Â?C$ÃC9ÃC"ÃC9Ã	DÃC9ÃC9Ã C$Ã"C9Ã$C6	Ã*C-Ã+C6	Ã2C9Ã9DÃ>Dc              ƒ  ó$  K  — t        | ¬«      4 ƒd {  –—† \  }}t        | ¬«      5 }|j                  |t        «      }t	        j
                  t        j                  «      5  |j                  «        d d d «       |j                  «       ƒ d {  –—†  |j                  d«      ƒ d {  –—†  |j                  «       ƒ d {  –—† dk(  sJ ‚|j                  d«      ƒ d {  –—†  |j                  «       ƒ d {  –—† dk(  sJ ‚t	        j
                  t        d¬«      5  |j                  d«      ƒ d {  –—†  d d d «       |j                  d«       |j                  «       }|j                  d«       |j                  «       |kD  sJ ‚|j                  d«       |j                  «       |k(  sJ ‚	 d d d «       d d d «      ƒd {  –—†  y 7 �Œ¯# 1 sw Y   �ŒUxY w7 �ŒE7 �Œ/7 �Œ7 Œþ7 Œè7 Œ°# 1 sw Y   Œ¯xY w# 1 sw Y   ŒExY w7 Œ<# 1 ƒd {  –—†7  sw Y   y xY w­w)	Nr(   ó   hellos   goodbyez4^openssl doesn't support sending empty DTLS packets$©Úmatchr$   iÒ  iá  )rB   r#   ÚconnectÚ
client_ctxÚpytestÚraisesr   ÚNeedHandshakeErrorÚget_cleartext_mtur0   r1   ÚreceiveÚ
ValueErrorr/   )r   Ú_server_endpointÚaddressÚclient_endpointÚclient_channelÚcleartext_mtu_1234s         r"   Ú
test_smokerT   ^   sê  è ø€ ä TÔ*÷ Lð LÑ.IÐ/?ÀÜ˜4Ô ð 	L OØ,×4Ñ4°W¼jÓIˆNÜ—‘œt×6Ñ6Ó7ñ 3Ø×0Ñ0Ô2÷3ð !×-Ñ-Ó/×/Ð/Ø ×%Ñ% hÓ/×/Ð/Ø'×/Ñ/Ó1×1°XÒ=Ð=Ð=Ø ×%Ñ% jÓ1×1Ð1Ø'×/Ñ/Ó1×1°ZÒ?Ð?Ð?ä—‘ÜØMôñ /ð %×)Ñ)¨#Ó.×.Ð.÷	/ð ×-Ñ-¨dÔ3Ø!/×!AÑ!AÓ!CÐØ×-Ñ-¨dÔ3Ø!×3Ñ3Ó5Ð8JÒJÐJÐJØ×-Ñ-¨dÔ3Ø!×3Ñ3Ó5Ð9KÒKÐKÑK÷-	L÷L÷ Lñ Lù÷3ñ 3úð 0ùØ/ùØ1ùØ1øØ1øð /ø÷	/ð /ú÷	Lð 	LúðLø÷ L÷ Lñ Lüsò   ‚H“G”H—G;§:G-Á!GÁ2G-ÂGÂG-Â&GÂ'G-Â>GÂ?G-ÃGÃG-Ã4GÃ5$G-ÄG!Ä.G
Ä/G!Ä3A5G-Æ)G;Æ1HÆ<G9Æ=HÇGÇ
	G-ÇG-ÇG-ÇG-ÇG-ÇG!Ç!G*Ç&G-Ç-G6	Ç2G;Ç9HÇ;HÈHÈHÈ	Hc           
   ƒ  ó  ‡
‡‡‡K  — d}t        j                  d«      Št        «       Š
‰
j                  «        d| _        t        «       4 ƒd {  –—† \  }}t        j                  «       4 ƒd {  –—† Šd
ˆ
ˆfd„Šd
ˆˆfd„}|‰
_        t        |«      D ]ø  }t        d«       t        d«       t        d«       t        «       5 }|j                  |t        «      }t        d«       |j                  «       ƒ d {  –—†  t        d«       t        |«      j!                  «       }	 t        j"                  d	«      5 }	|j%                  |«      ƒ d {  –—†  |j'                  «       ƒ d {  –—† |k(  sJ ‚	 d d d «       	j(                  snŒc	 d d d «       Œú d d d «      ƒd {  –—†  d d d «      ƒd {  –—†  y 7 �Œa7 �ŒD7 Œ¾7 Œl7 ŒV# 1 sw Y   ŒOxY w# 1 sw Y   �Œ>xY w7 Œ:# 1 ƒd {  –—†7  sw Y   ŒJxY w7 ŒA# 1 ƒd {  –—†7  sw Y   y xY w­w)Néd   r   gü©ñÒMbP?c              “  óè  •K  — 	 ‰j                  g d¢g d¢¬«      d   }t        | j                  › d| j                  › d|› �«       |dk(  ry |dk(  r‰j	                  | «       nŒ|d	k(  r/t        j                  ‰j                  «       d
z  «      ƒ d {  –—†  nX|dk(  sJ ‚t        | j                  › d| j                  › d| j                  j                  «       › �«       ‰j                  | «       y Œë7 Œ^­w)N)ÚdeliverÚdropÚdupeÚdelay)gffffffæ?çš™™™™™¹?r\   r\   )Úweightsr   r+   z: rY   rZ   r[   é   rX   z: delivered )Úchoicesr,   ÚsourceÚdestinationÚsend_packetr   ÚsleepÚrandomÚpayloadÚhexÚdeliver_packet)r4   ÚopÚfnÚrs     €€r"   Úroute_packetz:test_handshake_over_terrible_network.<locals>.route_packetˆ   sû   øè ø€ ØØŸ™Ú<Ú 4ð #ó ð ñ�Bô ˜VŸ]™]˜O¨4°×0BÑ0BÐ/CÀ2ÀbÀTÐJÔKØ˜V’|ØØ˜všØŸ™ vÕ.Ø˜wšÜ"Ÿj™j¨¯©«°a©Ó8×8Ñ8ð2  " YšÐ.˜ÜØ%Ÿ}™}˜o¨T°&×2DÑ2DÐ1Eð F Ø &§¡× 2Ñ 2Ó 4Ð5ð7ôð ×)Ñ)¨&Ô1ØðU ð 9ús   ƒBC2ÂC0ÂAC2c                óJ   •— 	 ‰j                  ‰| «       y # t        $ r Y y w xY w©N)Ú
start_soonÚRuntimeError)r4   rA   rk   s    €€r"   Úroute_packet_wrapperzBtest_handshake_over_terrible_network.<locals>.route_packet_wrapperµ   s,   ø€ ðØ×&Ñ& |°VÕ<øÜ#ò ñ ðús   ƒ –	"¡"zP################################################################################zclient starting do_handshakezclient finished do_handshakeé
   ©r4   r   r6   r7   )rd   ÚRandomr   ÚenableÚautojump_thresholdrB   r   r9   rk   Úranger,   r#   rG   rH   r0   ÚstrÚencodeÚmove_on_afterr1   rM   Úcancelled_caught)Úautojump_clockÚ
HANDSHAKESÚ_rP   rp   ÚirQ   ÚclientÚmsgÚcscoperi   rA   rj   rk   s             @@@@r"   Ú$test_handshake_over_terrible_networkr‚   z   så  ûè ø€ ð €JÜ�‰�aÓ€AÜ	‹€BØ‡I�I„Kà(-€NÔ%äÓ!÷ K"ð K"¡\ a¨Ü×$Ñ$Ó&÷ J	"ð J	"¨'ö+öZð 3ˆBŒOä˜:Ó&ò "�Ü�h”Ü�h”Ü�h”Ü“Zð " ?Ø,×4Ñ4°W¼jÓI�FÜÐ8Ô9Ø ×-Ñ-Ó/×/Ð/ÜÐ8Ô9Ü˜a›&Ÿ-™-›/�Cð Ü!×/Ñ/°Ó3ð A°vØ"(§+¡+¨cÓ"2×2Ð2Ø)/¯©Ó)9×#9¸SÒ#@Ð@Ñ#@÷Að  &×6Ò6Ø!ð ð
 "÷"ð "ð	"÷sJ	"÷ J	"÷K"÷ K"ñ K"ùðJ	"ùð@ 0øð 3øØ#9ø÷Að Aú÷"ñ "úð{J	"ø÷ J	"÷ J	"ñ J	"úðK"ø÷ K"÷ K"ñ K"üs÷   †AHÁF.ÁHÁG,Á-F1Á.G,Á1AGÃ 5G	Ã5F4Ã6>G	Ä4F:Å	F6Å
F:Å!F8Å"	F:Å,G	Æ
GÆG,ÆGÆG,ÆHÆ(G*Æ)HÆ1G,Æ4G	Æ6F:Æ8F:Æ:GÆ?G	ÇGÇGÇG,ÇG'	ÇGÇG'	Ç#G,Ç*HÇ,G>Ç2G5Ç3G>Ç:Hc               ƒ  ój  K  — t        «       4 ƒd {  –—† \  } }t        «       5 }|j                  |t        «      }|j	                  d«      ƒ d {  –—†  |j                  «       ƒ d {  –—† dk(  sJ ‚	 d d d «       d d d «      ƒd {  –—†  y 7 Œx7 Œ=7 Œ'# 1 sw Y   Œ xY w7 Œ# 1 ƒd {  –—†7  sw Y   y xY w­w)Nó   xyz)rB   r#   rG   rH   r1   rM   ©r}   rP   rQ   r   s       r"   Útest_implicit_handshaker†   Ó   s¥   è ø€ ÜÓ!÷ 4ð 4¡\ a¨Ü‹Zð 	4˜?Ø$×,Ñ,¨W´jÓAˆFð —+‘+˜fÓ%×%Ð%ØŸ™Ó)×)¨VÒ3Ð3Ñ3÷	4÷4÷ 4ñ 4øð
 &øØ)ø÷	4ð 	4úð4ø÷ 4÷ 4ñ 4üs   ‚B3‘B
’B3•B£+BÁBÁBÁ&BÁ'	BÁ1BÁ9B3ÂBÂB3ÂBÂBÂB	ÂBÂB3ÂB0Â$B'Â%B0Â,B3c            
   ƒ  óJ  K  — t        «       5 } t        «       5 }| j                  j                  d«      ƒ d {  –—†  t        j                  «       4 ƒd {  –—† }dd„}|j                  | j                  t        |«      ƒ d {  –—†  |j                  | j                  j                  «       t        «      }t        j                  «       4 ƒd {  –—† }|j                  |j                  d«       |j                  |j                  «       d d d «      ƒd {  –—†  |j                  j                  «        d d d «      ƒd {  –—†  d d d «       d d d «       y 7 �Œ7 �Œ7 Œ×7 ŒŽ7 ŒI# 1 ƒd {  –—†7  sw Y   ŒYxY w7 Œ6# 1 ƒd {  –—†7  sw Y   ŒFxY w# 1 sw Y   ŒJxY w# 1 sw Y   y xY w­w)N©r)   r   c              “  ó  K  — t        j                  «       4 ƒd {  –—† }|j                  | j                  d«       |j                  | j                  «       d d d «      ƒd {  –—†  y 7 ŒL7 Œ# 1 ƒd {  –—†7  sw Y   y xY w­w)Ns   from server)r   r9   rn   r1   rM   )ÚchannelrA   s     r"   Úhandlerz!test_full_duplex.<locals>.handlerä   si   è ø€ Ü×,Ñ,Ó.÷ 8ð 8°'Ø×&Ñ& w§|¡|°^ÔDØ×&Ñ& w§¡Ô7÷8÷ 8ñ 8øð 8ø÷ 8÷ 8ñ 8üsD   ‚B›A(œBŸ8A,ÁBÁ"A*Á#BÁ*BÁ,A>Á2A5Á3A>Á:Bs   from client©rŠ   r
   r6   r7   )r#   r   r8   r   r9   r:   r;   r<   rG   r-   rH   rn   r1   rM   r=   r>   )Úserver_endpointrQ   Úserver_nurseryr‹   r   rA   s         r"   Útest_full_duplexr�   Ý   sk  è ø€ ô 
‹ð 1�¬«
ð 1°oØ×$Ñ$×)Ñ)Ð*:Ó;×;Ð;Ü×$Ñ$Ó&÷ 	1ð 	1¨.ó8ð
 !×&Ñ& ×'<Ñ'<¼jÈ'ÓR×RÐRà$×,Ñ,Ø×&Ñ&×2Ñ2Ó4ÜóˆFô ×(Ñ(Ó*÷ 3ð 3¨gØ×"Ñ" 6§;¡;°Ô?Ø×"Ñ" 6§>¡>Ô2÷3÷ 3ð ×'Ñ'×.Ñ.Ô0÷#	1÷ 	1÷1÷ 1ð 1Ø;ùð	1ùð Søð3øð 3ø÷ 3÷ 3ñ 3úð	1ø÷ 	1÷ 	1ñ 	1ú÷1ð 1ú÷ 1ð 1üsæ   ‚F#�F˜F·E¸FÁE
ÁFÁ)E6ÂE
ÂA
E6ÃEÃE6Ã8E	ÄE6ÄE
ÄE6Ä2FÄ=E4Ä>FÅFÅ
	F#ÅFÅFÅE6ÅE6ÅE6ÅE1Å%E(Å&E1Å-E6Å4FÅ6FÅ<E?Å=FÆFÆF	ÆFÆF ÆF#c               ƒ  óè  K  — t        «       4 ƒd {  –—† \  } }t        «       5 }|j                  |t        «      }|j	                  «       ƒ d {  –—†  |j                  «        t        j                  t        j                  «      5  |j                  d«      ƒ d {  –—†  d d d «       t        j                  t        j                  «      5  |j                  «       ƒ d {  –—†  d d d «       |j                  «        |j                  «       ƒ d {  –—†  d d d «       d d d «      ƒd {  –—†  y 7 �Œ7 Œá7 Œ–# 1 sw Y   Œ•xY w7 Œ`# 1 sw Y   Œ_xY w7 Œ># 1 sw Y   Œ=xY w7 Œ4# 1 ƒd {  –—†7  sw Y   y xY w­w)Nó   abc)rB   r#   rG   rH   r0   ÚcloserI   rJ   r   ÚClosedResourceErrorr1   rM   Úacloser…   s       r"   Útest_channel_closingr•   ö   s,  è ø€ ÜÓ!÷ "ð "¡\ a¨Ü‹Zð 	"˜?Ø$×,Ñ,¨W´jÓAˆFØ×%Ñ%Ó'×'Ð'Ø�L‰LŒNä—‘œt×7Ñ7Ó8ñ *Ø—k‘k &Ó)×)Ð)÷*ä—‘œt×7Ñ7Ó8ñ 'Ø—n‘nÓ&×&Ð&÷'ð �L‰LŒNà—-‘-“/×!Ð!÷	"÷"÷ "ñ "ùð (øð *ø÷*ð *úð 'ø÷'ð 'úð "ø÷	"ð 	"úð"ø÷ "÷ "ñ "üsÍ   ‚E2‘D,’E2•E£*EÁD/Á7EÂD3ÂD1
ÂD3Â+EÃ
EÃD?
ÃEÃ#+EÄEÄEÄEÄE2Ä&EÄ'E2Ä/EÄ1D3Ä3D<Ä8EÄ?EÅE
ÅEÅE	ÅEÅE2ÅE/Å#E&Å$E/Å+E2c               ƒ  óÎ   K  — t        d¬«      4 ƒd {  –—† \  } }| j                  «        d d d «      ƒd {  –—†   j                  «        y 7 Œ87 Œ# 1 ƒd {  –—†7  sw Y   Œ'xY w­w)NF)r%   )rB   r’   )r�   Ú_addresss     r"   Ú!test_serve_exits_cleanly_on_closer˜     s^   è ø€ Ü¨5Ô1÷  ð  Ñ5P°oÀxØ×ÑÔ÷ ÷  ð ×ÑÕð	 øð  ø÷  ÷  ñ  üsA   ‚A%“A”A%—A«A%¶A·A%ÁA%ÁA"ÁAÁA"ÁA%c            
   ƒ  óú  K  — t        «       4 ƒd {  –—† \  } }t        «       4 ƒd {  –—† \  } }t        «       5 }|j                  |t        «      }|j                  |t        «      }|j	                  d«      ƒ d {  –—†  |j	                  d«      ƒ d {  –—†  |j                  «       ƒ d {  –—† dk(  sJ ‚|j                  «       ƒ d {  –—† dk(  sJ ‚|j                  «        t        j                  t        j                  «      5  |j	                  d«      ƒ d {  –—†  d d d «       t        j                  t        j                  «      5  |j                  «       ƒ d {  –—†  d d d «       t        j                  t        j                  «      5  |j                  |t        «       d d d «       dd„}t        j                  «       4 ƒd {  –—† }t        j                  t        j                  «      5  |j                  |j                  t        |«      ƒ d {  –—†  d d d «       d d d «      ƒd {  –—†  d d d «       d d d «      ƒd {  –—†  d d d «      ƒd {  –—†  y 7 �ŒK7 �Œ87 �Œè7 �ŒÒ7 �Œ½7 �Œ£7 �ŒT# 1 sw Y   �ŒTxY w7 �Œ # 1 sw Y   �Œ xY w# 1 sw Y   ŒêxY w7 ŒÐ7 Œ…# 1 sw Y   Œ„xY w7 Œ{# 1 ƒd {  –—†7  sw Y   Œ‹xY w# 1 sw Y   Œ�xY w7 Œ†# 1 ƒd {  –—†7  sw Y   Œ–xY w7 Œ�# 1 ƒd {  –—†7  sw Y   y xY w­w)Nr‘   r„   ó   xxxc              “  ó   K  — y ­wrm   © ©r}   s    r"   Únull_handlerz+test_client_multiplex.<locals>.null_handler$  s	   è ø€ Øùó   ‚©r}   Úobjectr6   r7   )rB   r#   rG   rH   r1   rM   r’   rI   rJ   r   r“   r9   r:   r;   r<   )r}   Úaddress1Úaddress2rQ   Úclient1Úclient2rž   rA   s           r"   Útest_client_multiplexr¦     s‘  è ø€ ÜÓ!÷ Yð Y¡] a¨Ô4DÓ4F÷ Yð YÉ-È1ÈhÜ‹Zð 	Y˜?Ø%×-Ñ-¨h¼
ÓCˆGØ%×-Ñ-¨h¼
ÓCˆGà—,‘,˜vÓ&×&Ð&Ø—,‘,˜vÓ&×&Ð&Ø Ÿ™Ó*×*¨fÒ4Ð4Ð4Ø Ÿ™Ó*×*¨fÒ4Ð4Ð4à×!Ñ!Ô#ä—‘œt×7Ñ7Ó8ñ +Ø—l‘l 6Ó*×*Ð*÷+ä—‘œt×7Ñ7Ó8ñ (Ø—o‘oÓ'×'Ð'÷(ä—‘œt×7Ñ7Ó8ñ >Ø×'Ñ'¨´*Ô=÷>óô ×(Ñ(Ó*÷ Yð Y¨gÜ—]‘]¤4×#;Ñ#;Ó<ñ YØ!Ÿ-™-¨×(=Ñ(=¼zÈ<ÓX×XÐX÷Y÷Y÷ Y÷+	Y÷Y÷ Y÷ Y÷ Yñ Yùð Yùð
 'ùØ&ùØ*ùØ*ùð
 +ù÷+ñ +úð (ù÷(ñ (ú÷>ð >úðYøàXø÷Yð YúðYø÷ Y÷ Yñ Yú÷+	Yð 	YúðYø÷ Y÷ Yñ Yúð Yø÷ Y÷ Yñ YüsÁ  ‚K;‘I’K;•K&§I¨K&«K¹AKÁ:I"
Á;KÂI%
ÂKÂ+I(
Â,KÃI+
Ã	<KÄI1	ÄI.ÄI1	Ä+KÅ
J	ÅI>ÅJ	Å#+KÆJ	Æ%$KÇ	JÇ
KÇ$J,	Ç1%JÈJÈJÈJ,	È#KÈ.J*
È/KÈ3KÈ;K&ÉKÉK&ÉK;ÉK$ÉK;ÉK&É"KÉ%KÉ(KÉ+KÉ.I1	É1I;É6KÉ>J	ÊJÊKÊJÊKÊJÊJ'Ê#J,	Ê*KÊ,J>Ê2J5Ê3J>Ê:KËK
ËKËK&ËK!	ËKËK!	ËK&Ë$K;Ë&K8Ë,K/Ë-K8Ë4K;c               ƒ  óè   K  — t         j                  j                  «       5 } t        j                  t        d¬«      5  t        | «       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w­w)Nz#^DTLS requires a SOCK_DGRAM socket$rE   )r   r   rI   rJ   rN   r   )Úss    r"   Útest_dtls_over_dgram_onlyr©   ,  s\   è ø€ Ü	�‰×	Ñ	Ó	ð  Ü�]‰]œ:Ð-SÔTñ 	Ü˜ŒO÷	÷ð ÷	ð 	ú÷ð üs3   ‚A2¡A&½AÁ	A&Á	A2ÁA#	ÁA&Á&A/Á+A2c               ƒ  ó”  K  — dd„} t        «       5 }|j                  j                  d«      ƒ d {  –—†  t        j                  «       4 ƒd {  –—† }|j                  |j                  t        | «      ƒ d {  –—†  t        j                  t        j                  «      5  |j                  |j                  t        | «      ƒ d {  –—†  d d d «       |j                  j                  «        d d d «      ƒd {  –—†  t        j                  «       4 ƒd {  –—† }|j                  |j                  t        | «      ƒ d {  –—†  |j                  j                  «        d d d «      ƒd {  –—†  d d d «       y 7 �ŒC7 �Œ)7 �Œ7 Œ¸# 1 sw Y   Œ·xY w7 Œ”# 1 ƒd {  –—†7  sw Y   Œ¤xY w7 ŒŽ7 Œg7 Œ?# 1 ƒd {  –—†7  sw Y   ŒOxY w# 1 sw Y   y xY w­w)Nc              “  ó   K  — y ­wrm   rœ   r�   s    r"   rž   z'test_double_serve.<locals>.null_handler3  s	   è ø€ ØùrŸ   rˆ   r    )r#   r   r8   r   r9   r:   r;   r<   rI   rJ   ÚBusyResourceErrorr=   r>   )rž   r�   rA   s      r"   Útest_double_server­   2  s{  è ø€ óô 
‹ð *�Ø×$Ñ$×)Ñ)Ð*:Ó;×;Ð;Ü×$Ñ$Ó&÷ 	*ð 	*¨'Ø—-‘- × 5Ñ 5´zÀ<ÓP×PÐPÜ—‘œt×5Ñ5Ó6ñ UØ—m‘m O×$9Ñ$9¼:À|ÓT×TÐT÷Uð × Ñ ×'Ñ'Ô)÷	*÷ 	*ô ×$Ñ$Ó&÷ 	*ð 	*¨'Ø—-‘- × 5Ñ 5´zÀ<ÓP×PÐPØ× Ñ ×'Ñ'Ô)÷	*÷ 	*÷*ð *Ø;ùð	*ùØPùàTø÷Uð Uúð	*ø÷ 	*÷ 	*ñ 	*úð	*øØPøð	*ø÷ 	*÷ 	*ñ 	*ú÷*ð *üs  ‚G‘F<°E3±F<ÁE6ÁF<Á%FÁ6E9Á7'FÂ%E>ÃE<
ÃE>Ã"FÃ*F<Ã5F
Ã6F<ÄF!ÄF<Ä%F'Ä;F#Ä<F'ÅF<Å%F%Å&F<Å*	GÅ3F<Å6F<Å9FÅ<E>Å>FÆFÆ
F<ÆF	ÆFÆF	ÆF<Æ#F'Æ%F<Æ'F9	Æ-F0Æ.F9	Æ5F<Æ<GÇGc              ƒ  ó  K  — t        «       }|j                  «        t        «       5 }t        «       5 }|j                  j	                  d«      ƒ d {  –—†  t        j                  d«      5 }|j                  |j                  j                  «       t        «      }|j                  «       ƒ d {  –—†  d d d «       j                  sJ ‚	 d d d «       d d d «       y 7 Œˆ7 Œ.# 1 sw Y   Œ-xY w# 1 sw Y   Œ"xY w# 1 sw Y   y xY w­w)Nrˆ   rV   )r   rt   r#   r   r8   r   ry   rG   r-   rH   r0   rz   )r{   ri   r¤   r¥   r�   rŠ   s         r"   Útest_connect_to_non_serverr¯   D  sÙ   è ø€ Ü	‹€BØ‡I�I„KÜ	‹ð '�w¤£
ð '¨gØ�n‰n×!Ñ!Ð"2Ó3×3Ð3ä×Ñ Ó$ð 	)¨Ø—o‘o g§n¡n×&@Ñ&@Ó&BÄJÓOˆGØ×&Ñ&Ó(×(Ð(÷	)ð ×&Ò&Ð&Ñ&÷'÷ 'ð 'Ø3øð )ø÷	)ð 	)ú÷'ð 'ú÷ 'ð 'üsp   ‚%D§C6²C*ÁCÁC*Á+ACÂ-C
Â.CÂ2C*Ã	C6Ã	DÃC*ÃCÃC'Ã#C*Ã*C3	Ã/C6Ã6C?Ã;Dc           	   ƒ  óp  K  — t        «       }|j                  «        dD �]a  }t        «       4 ƒd {  –—† \  }}t        |¬«      5 }|j                  |k(  sJ ‚|j                  |t        «      }t        |dz   «      D ]O  }|j                  t        |«      j                  «       «      ƒ d {  –—†  t        j                  d«      ƒ d {  –—†  ŒQ |j                  «       }|j                  dk(  sJ ‚t        |«      D ]6  }|j                  «       ƒ d {  –—† t        |«      j                  «       k(  rŒ6J ‚ |j                  d«      ƒ d {  –—†  |j                  «       ƒ d {  –—† dk(  sJ ‚	 d d d «       d d d «      ƒd {  –—†  �Œd y 7 �ŒT7 ŒÞ7 ŒÃ7 Œ|7 ŒG7 Œ1# 1 sw Y   Œ*xY w7 Œ!# 1 ƒd {  –—†7  sw Y   �Œ”xY w­w)N)rq   é   )Úincoming_packets_bufferé   é   s   buffer clear now)r   rt   rB   r#   r²   rG   rH   rv   r1   rw   rx   r   rc   Ú
statisticsÚ incoming_packets_dropped_in_triorM   )	r{   ri   Úbuffer_sizer}   rP   rQ   r   r~   Ústatss	            r"   Útest_incoming_buffer_overflowr¹   P  s   è ø€ Ü	‹€BØ‡I�I„KØó EˆÜ#Ó%÷ 	Eð 	E©¨!¨WÜ°+Ô>ð EÀ/Ø&×>Ñ>À+ÒMÐMÐMØ(×0Ñ0°¼*ÓE�Ü˜{¨RÑ/Ó0ò (�AØ Ÿ+™+¤c¨!£f§m¡m£oÓ6×6Ð6ÜŸ*™* Q›-×'Ñ'ð(ð ×)Ñ)Ó+�Ø×=Ñ=ÀÒCÐCÐCÜ˜{Ó+ò E�AØ!'§¡Ó!1×1´S¸³V·]±]³_ÓDÐDÐDðEà—k‘kÐ"5Ó6×6Ð6Ø#Ÿ^™^Ó-×-Ð1DÒDÐDÑD÷E÷	E÷ 	Eñ 	EñEð	Eùð
 7øØ'øð 2øØ6øØ-ø÷Eð Eúð	Eø÷ 	E÷ 	Eò 	Eüs¾   ‚/F6±F²F6µF ÁA$FÂ)FÂ*FÃF
ÃAFÄFÄFÄ/FÅF
ÅFÅF
Å	FÅ)F Å1F6Å<FÅ=	F6ÆFÆ
FÆFÆFÆFÆFÆF ÆF6Æ F3	Æ&F)Æ'F3	Æ.F6c              ƒ  óÌ  K  — t        «       }|j                  «        ddlm}m}m}m}m}m}m	}  | ||j                  |j                  d | ||j                  ddddt        d«      ¬«      «      ¬«      «      }	|	dz   }
|	d d }|	d d }t        |	«      }d	|d
<    | ||j                  |j                  d | ||j                  ddddt        d«      ¬«      «      ¬«      «      } | ||j                  |j                  d | ||j                  ddddt        d«      ¬«      «      dz   ¬«      «      } | ||j                  |j                  dd¬«      «      } | ||j                  |j                  dt        d«      dz   ¬«      «      }t        «       4 ƒd {  –—† \  }}t         j"                  j#                  t         j"                  j$                  ¬«      5 }dd|
|||||||f
D ]9  }|j'                  ||«      ƒ d {  –—†  t!        j(                  d«      ƒ d {  –—†  Œ; 	 d d d «       d d d «      ƒd {  –—†  y 7 Œ¢7 Œ?7 Œ$# 1 sw Y   Œ xY w7 Œ# 1 ƒd {  –—†7  sw Y   y xY w­w)Nr   )ÚContentTypeÚHandshakeFragmentÚHandshakeTypeÚProtocolVersionÚRecordÚencode_handshake_fragmentÚencode_recordrq   )Úmsg_typeÚmsg_lenÚmsg_seqÚfrag_offsetÚfrag_lenÚfrag)Úcontent_typeÚversionÚepoch_seqnore   ó    éÿÿÿÿé   éÿ   é   r±   r$   é#   ó   ÿ©r   r„   r´   )r   rt   Ú
trio._dtlsr»   r¼   r½   r¾   r¿   rÀ   rÁ   Ú	handshakeÚDTLS10Úclient_helloÚbytesÚ	bytearrayrB   r   r   r   Úsendtorc   )r{   ri   r»   r¼   r½   r¾   r¿   rÀ   rÁ   rÖ   Úclient_hello_extendedÚclient_hello_shortÚclient_hello_really_shortÚclient_hello_corrupt_record_lenÚclient_hello_fragmentedÚ$client_hello_trailing_data_in_recordÚhandshake_emptyÚ client_hello_truncated_in_cookier}   rP   r!   Ú
bad_packets                         r"   Ú*test_server_socket_doesnt_crash_on_garbagerã   c  s£  è ø€ ô 
‹€BØ‡I�I„K÷÷ ñ ñ !ÙØ$×.Ñ.Ø#×*Ñ*ØÙ-Ù!Ø*×7Ñ7ØØØ !ØÜ˜r›ôó	ô		
ó€Lð$ )¨7Ñ2ÐØ% c rÐ*Ðà ,¨S¨bÐ 1ÐÜ&/°Ó&=Ð#Ø*.Ð# BÑ'á+ÙØ$×.Ñ.Ø#×*Ñ*ØÙ-Ù!Ø*×7Ñ7ØØØ !ØÜ˜r›ôó	ô		
óÐñ$ ,9ÙØ$×.Ñ.Ø#×*Ñ*ØÙ-Ù!Ø*×7Ñ7ØØØ !ØÜ˜r›ôó	ð ñ
ô		
ó,Ð(ñ& $ÙØ$×.Ñ.Ø#×*Ñ*ØØô		
ó€Oñ (5ÙØ$×.Ñ.Ø#×*Ñ*ØÜ˜*Ó%¨Ñ/ô		
ó(Ð$ô  Ó!÷ $ð $¡\ a¨Ü�[‰[×Ñ¤T§[¡[×%;Ñ%;ÐÓ<ð 	$ÀàØØ%Ø"Ø)Ø/Ø'Ø4ØØ0ðò $�
ð —k‘k *¨gÓ6×6Ð6Ü—j‘j “m×#Ñ#ñ$÷	$÷$÷ $ñ $øð 7øØ#ø÷	$ð 	$úð$ø÷ $÷ $ñ $üs„   ‚FI$ÆH;ÆI$Æ<IÇ%IÇ=H=
Ç>IÈH?
ÈIÈ"IÈ*I$È5IÈ6I$È=IÈ?IÉI
	ÉIÉI$ÉI!ÉIÉI!ÉI$c              ƒ  ó   ‡‡‡‡	‡
K  — t        «       Š	‰	j                  «        ddlmŠmŠ t        j                  «       5 Št        d«      Š
dˆˆˆˆ	ˆ
fd„}|‰	_        t        «       4 ƒd {  –—† \  }}	 t        «       5 }|j                  |t        «      }|j                  «       ƒ d {  –—†  d d d «       ŒB7 ŒJ7 Œ# 1 sw Y   ŒxY w# 1 ƒd {  –—†7  sw Y   nxY w	 d d d «       n# 1 sw Y   nxY w‰j                  sJ ‚y ­w)Nr   )Ú	BadPacketÚdecode_client_hello_untrustedrÏ   c                ój  •— 	  ‰| j                   «      \  }}}t        |«      dk7  rqt        | j                   «      }t        ‰	«      }|t        |«      k\  rt        |«      dz
  }‰j	                  «        ||xx   dz  cc<   t        j                  | |¬«      } 	 ‰j                  | «       y # ‰$ r Y Œw xY w)Nr   r´   )re   )re   ÚlenrØ   Únextr>   ÚattrsÚevolverg   )
r4   r}   Úcookiere   Úoffsetrå   r�   ræ   ri   Úoffset_to_corrupts
        €€€€€r"   rk   z2test_invalid_cookie_rejected.<locals>.route_packetà  s«   ø€ ðCÙ<¸V¿^¹^ÓL‘��6˜1ô �v“; !Ò#ô (¨¯©Ó7�GÜ!Ð"3Ó4�FØ¤ W£Ò-ô "% W£°Ñ!1˜ØŸ™œØ˜F“O tÑ+“OÜ"Ÿ\™\¨&¸'ÔB‘Fà×Ñ˜fÕ%øð! ò Ùðús   ƒB* Â*B2Â1B2rr   )r   rt   rÓ   rå   ræ   r   ÚCancelScoper   rk   rB   r#   rG   rH   r0   rz   )r{   rk   r}   rP   r   rŠ   rå   r�   ræ   ri   rî   s         @@@@@r"   Útest_invalid_cookie_rejectedrð   Õ  së   üè ø€ Ü	‹€BØ‡I�I„KçCä	×	Ñ	Ó	ð  1˜vô " "›IÐ÷	&ñ 	&ð* 'ˆŒä#Ó%÷ 	1ð 	1©¨!¨WØÜ“Zð 1 6Ø$Ÿn™n¨W´jÓA�GØ!×.Ñ.Ó0×0Ð0÷1ð ð	1øð 1ø÷1ð 1ú÷	1÷ 	1ñ 	1úð 	1÷9 1÷  1ñ  1úðB ×"Ò"Ð"Ñ"ùsv   ‡7C>¾+C#Á)B4Á*C#Á-CÁ<*B8Â&B6
Â'B8Â+	CÂ4C#Â6B8Â8CÂ=CÃC	Ã
CÃC	ÃC#Ã	C>Ã#C,Ã(C>c           	   ƒ  ó:  ‡‡K  — t        «       }|j                  «        t        «       5 }t        «       5 }|j                  j	                  d«      ƒ d {  –—†  t        j                  «       4 ƒd {  –—† }dŠdˆˆfd„}|j                  |j                  t        |«      ƒ d {  –—†  t        d«       t        j                  «       5 Š|j                  |j                  j                  «       t        «      }|j                  «       ƒ d {  –—†  d d d «       ‰j                   sJ ‚t        d«       |j                  |j                  j                  «       t        «      }|j#                  «       ƒ d {  –—† dk(  sJ ‚t        j$                  d«      ƒ d {  –—†  |j&                  j)                  «        d d d «      ƒd {  –—†  d d d «       d d d «       y 7 �Œ~7 �Œd7 �Œ57 ŒÑ# 1 sw Y   ŒÐxY w7 Œx7 ŒX7 Œ0# 1 ƒd {  –—†7  sw Y   Œ@xY w# 1 sw Y   ŒDxY w# 1 sw Y   y xY w­w)	Nrˆ   Tc              “  ó’  •K  — ‰rŠdŠt        d«       ‰j                  «        t        j                  d«      ƒ d {  –—†  t        d«       t	        j
                  t        j                  «      5  | j                  «       ƒ d {  –—†  d d d «       y t        d«       | j                  d«      ƒ d {  –—†  y 7 Œy7 Œ4# 1 sw Y   y xY w7 Œ­w)NFz'handler: first time, cancelling connectg      à?z"handler: handshake should fail nowz&handler: not first time, sending hellorD   )	r,   r>   r   rc   rI   rJ   r2   r0   r1   )rŠ   Úconnect_cscopeÚ
first_times    €€r"   r‹   zAtest_client_cancels_handshake_and_starts_new_one.<locals>.handler  sª   øè ø€ áØ!&�JÜÐCÔDØ"×)Ñ)Ô+ÜŸ*™* S›/×)Ð)ÜÐ>Ô?ÜŸ™¤t×'?Ñ'?Ó@ñ 5Ø%×2Ñ2Ó4×4Ð4÷5ð 5ô ÐBÔCØ!Ÿ,™, xÓ0×0Ñ0ð *øð 5ø÷5ð 5úð 1úsE   ƒ8C»B5¼2CÁ.B9ÂB7ÂB9Â(CÂ/CÂ0CÂ7B9Â9CÂ>Czclient: starting first connectzclient: starting second connectrD   rq   rŒ   )r   rt   r#   r   r8   r   r9   r:   r;   r<   r,   rï   rG   r-   rH   r0   rz   rM   rc   r=   r>   )	r{   ri   r?   r   rA   r‹   rŠ   ró   rô   s	          @@r"   Ú0test_client_cancels_handshake_and_starts_new_onerõ   ÿ  s½  ùè ø€ ô 
‹€BØ‡I�I„Kä	‹ð !*�vœx›zð !*¨VØ�m‰m× Ñ Ð!1Ó2×2Ð2Ü×$Ñ$Ó&÷ 	*ð 	*¨'ØˆJö1ð —-‘- §¡¬j¸'ÓB×BÐBäÐ2Ô3Ü×!Ñ!Ó#ð - ~Ø Ÿ.™.¨¯©×)BÑ)BÓ)DÄjÓQ�Ø×*Ñ*Ó,×,Ð,÷-ð "×2Ò2Ð2Ð2äÐ3Ô4Ø—n‘n V§]¡]×%>Ñ%>Ó%@Ä*ÓMˆGØ Ÿ™Ó*×*¨hÒ6Ð6Ð6ô —*‘*˜R“.× Ð Ø× Ñ ×'Ñ'Ô)÷?	*÷ 	*÷!*÷ !*ð !*Ø2ùð	*ùð" Cùð
 -ø÷-ð -úð +øð !øð=	*ø÷ 	*÷ 	*ñ 	*ú÷!*ð !*ú÷ !*ð !*üsé   „%H©H´HÁGÁHÁ0G
Á1HÁ4.G.Â"G
Â##G.ÃAG	ÄGÄ	G	ÄA"G.Å/G(
Å0!G.ÆG*
ÆG.Æ0HÆ;G,Æ<HÇ HÇ	HÇHÇHÇG.ÇG	ÇG%Ç!G.Ç*G.Ç,HÇ.H Ç4G7Ç5H Ç<HÈH	ÈHÈHÈHc            	   ƒ  ó&  ‡K  — t        «       5 } t        «       5 }| j                  j                  d«      ƒ d {  –—†  |j                  j                  d«      ƒ d {  –—†  dd„Šdˆfd„}t        j                  «       4 ƒd {  –—† }|j                  | j                  t        |«      ƒ d {  –—†  |j                  |j                  t        ‰«      ƒ d {  –—†  |j                  | j                  j                  «       t        «      }|j                  d«      ƒ d {  –—†  |j                  «       ƒ d {  –—† dk(  sJ ‚| j                  |j                  j                  «       t        «      }|j                  «       ƒ d {  –—†  t        j                  t        j                   «      5  |j                  d«      ƒ d {  –—†  d d d «       |j                  d«      ƒ d {  –—†  |j                  «       ƒ d {  –—† dk(  sJ ‚|j"                  j%                  «        d d d «      ƒd {  –—†  d d d «       d d d «       y 7 �Œ7 �Œá7 �Œ½7 �Œ—7 �Œq7 �Œ-7 �Œ7 ŒÏ7 Œ”# 1 sw Y   Œ“xY w7 Œ�7 Œk7 Œ># 1 ƒd {  –—†7  sw Y   ŒNxY w# 1 sw Y   ŒRxY w# 1 sw Y   y xY w­w)Nrˆ   c              “  ó`   K  — | 2 3 d {  –—† }| j                  |«      ƒ d {  –—†  Œ#7 Œ7 Œ6 y ­wrm   )r1   )rŠ   r4   s     r"   r5   z-test_swap_client_server.<locals>.echo_handler1  s6   è ø€ Ø '÷ +ð +�fØ—l‘l 6Ó*×*Ñ*ð+øØ*øñ !(ùs(   ‚.…,‰(Š,�.¢*£.¨,ª.¬.c              “  ó¢   •K  — t        j                  t        j                  «      5   ‰| «      ƒ d {  –—†  d d d «       y 7 Œ# 1 sw Y   y xY w­wrm   )rI   rJ   r   r2   )rŠ   r5   s    €r"   Úcrashing_echo_handlerz6test_swap_client_server.<locals>.crashing_echo_handler5  sD   øè ø€ Ü—‘œt×7Ñ7Ó8ñ ,Ù" 7Ó+×+Ð+÷,ð ,Ø+ø÷,ð ,üs+   ƒ$A§A³A´A¸	AÁAÁAÁAs   b as clients   association brokens   a as clientrŒ   )r#   r   r8   r   r9   r:   r;   r<   rG   r-   rH   r1   rM   r0   rI   rJ   r2   r=   r>   )ÚaÚbrù   rA   Úb_to_aÚa_to_br5   s         @r"   Útest_swap_client_serverrþ   ,  s  øè ø€ Ü	‹ð *�qœ(›*ð *¨Ø�h‰h�m‰mÐ,Ó-×-Ð-Ø�h‰h�m‰mÐ,Ó-×-Ð-ó	+õ	,ô ×$Ñ$Ó&÷ 	*ð 	*¨'Ø—-‘- §¡¬Ð5JÓK×KÐKØ—-‘- §¡¬°\ÓB×BÐBà—Y‘Y˜qŸx™x×3Ñ3Ó5´zÓBˆFØ—+‘+˜nÓ-×-Ð-ØŸ™Ó)×)¨^Ò;Ð;Ð;à—Y‘Y˜qŸx™x×3Ñ3Ó5´zÓBˆFØ×%Ñ%Ó'×'Ð'Ü—‘œt×7Ñ7Ó8ñ 9Ø—k‘kÐ"7Ó8×8Ð8÷9à—+‘+˜nÓ-×-Ð-ØŸ™Ó)×)¨^Ò;Ð;Ð;à× Ñ ×'Ñ'Ô)÷	*÷ 	*÷*÷ *ð *Ø-ùØ-ùð	*ùØKùØBùð .ùØ)ùð (øà8ø÷9ð 9úà-øØ)øð	*ø÷ 	*÷ 	*ñ 	*ú÷*ð *ú÷ *ð *üsA  ƒJŽJ™I9¸H9¹"I9ÁH<Á&I9ÂH?
ÂI9Â%I$Â+I
Â,(I$ÃI
ÃAI$ÄI
ÄI$Ä3I
Ä4A
I$Å>I
Å?'I$Æ&I	Æ;IÆ<I	Ç I$ÇI
ÇI$Ç4I 
Ç5#I$ÈI9È#I"È$I9È(JÈ0	JÈ9I9È<I9È?I9ÉI$ÉI$ÉI$ÉI$ÉI$ÉI	ÉIÉI$É I$É"I9É$I6É*I-É+I6É2I9É9J	É>JÊJÊ
Jc            	   ƒ  óž  ‡‡‡‡K  — t        «       Š‰j                  «        dŠdˆˆfd„} | ‰_        t        «       4 ƒd {  –—† \  }Št	        «       5 Št        j                  «       4 ƒd {  –—† }dˆˆfd„}|j                  |«       t        j                  d«      ƒ d {  –—†  dŠ|j                  j                  d‰j                  j                  «       «      ƒ d {  –—†  d d d «      ƒd {  –—†  d d d «       d d d «      ƒd {  –—†  y 7 ŒË7 Œ¢7 Œo7 Œ37 Œ%# 1 ƒd {  –—†7  sw Y   Œ5xY w# 1 sw Y   Œ9xY w7 Œ0# 1 ƒd {  –—†7  sw Y   y xY w­w)	NTc                ó^   •— ‰rt        d| «       y t        d| «       ‰j                  | «       y )Nzdropped packetzdelivered packet)r,   rg   ©r4   Ú
blackholedri   s    €€r"   rk   z@test_openssl_retransmit_doesnt_break_stuff.<locals>.route_packetU  s/   ø€ ÙÜÐ" FÔ+ØÜÐ  &Ô)ð 	×Ñ˜&Õ!r$   c               “  óæ   •K  — ‰j                  ‰t        «      } | j                  d¬«      ƒ d {  –—†  | j                  d«      ƒ d {  –—†  | j	                  «       ƒ d {  –—† dk(  sJ ‚y 7 Œ;7 Œ$7 Œ­w)Ng      ø?©Úinitial_retransmit_timeoutó   hi)rG   rH   r0   r1   rM   )r   rP   rQ   s    €€r"   Ú	connecterz=test_openssl_retransmit_doesnt_break_stuff.<locals>.connecteri  sh   øè ø€ Ø,×4Ñ4°W¼jÓI�FØ ×-Ñ-ÈÐ-ÓM×MÐMØ Ÿ+™+ eÓ,×,Ð,Ø!'§¡Ó!1×1°UÒ:Ð:Ñ:ð NøØ,øØ1ús3   ƒ,A1¯A+°A1ÁA-Á	A1Á A/Á!A1Á-A1Á/A1gš™™™™™ñ?Frš   rr   ©r6   r7   )r   rt   rk   rB   r#   r   r9   rn   rc   r   rÙ   r-   )rk   r�   rA   r  rP   r  rQ   ri   s       @@@@r"   Ú*test_openssl_retransmit_doesnt_break_stuffr	  K  s0  ûè ø€ ô
 
‹€BØ‡I�I„Kà€Jö"ð #€B„OäÓ!÷ ð Ñ%? o°wÜ‹Zð 	˜?Ü×(Ñ(Ó*÷ ð ¨gö;ð ×"Ñ" 9Ô-ô —j‘j “o×%Ð%ð #�
Ø%×,Ñ,×3Ñ3ØØ#×*Ñ*×6Ñ6Ó8ó÷ ð ÷!÷ ÷	÷÷ ñ øðøð &øðøð!ø÷ ÷ ñ ú÷	ð 	úðø÷ ÷ ñ üsÊ   †9E¿DÁ EÁD8ÁD*Á*D
Á+D*Á.1DÂD
Â =DÃD
ÃDÃ"D*Ã-DÃ.D*Ã2D8Ã:EÄD6ÄEÄD*ÄDÄDÄD*ÄD'ÄDÄD'Ä#D*Ä*D3	Ä/D8Ä6EÄ8E
Ä>EÄ?E
ÅEc              ƒ  óü  ‡	‡
K  — t        «       Š
‰
j                  «        dŠ	dˆ	ˆ
fd„}|‰
_        t        «       4 ƒd {  –—† \  }}dD ]z  }t	        «       5 }t        j                  «       }dŠ	|j                  |t        «      }|j                  |¬«      ƒ d {  –—†  t        j                  «       }||z
  |k(  sJ ‚	 d d d «       Œ| d d d «      ƒd {  –—†  y 7 Œ—7 Œ@# 1 sw Y   Œ›xY w7 Œ# 1 ƒd {  –—†7  sw Y   y xY w­w)NTc                ó2   •— ‰rdŠy ‰j                  | «       y )NF)rg   r  s    €€r"   rk   zCtest_initial_retransmit_timeout_configuration.<locals>.route_packetˆ  s   ø€ áØ‰Jà×Ñ˜fÕ%r$   )r´   r   é   r  rr   )
r   rt   rk   rB   r#   r   Úcurrent_timerG   rH   r0   )r{   rk   r}   rP   Útr   ÚbeforerŠ   Úafterr  ri   s            @@r"   Ú-test_initial_retransmit_timeout_configurationr  €  sø   ùè ø€ ô 
‹€BØ‡I�I„Kà€Jö&ð #€B„OäÓ!÷ +ð +¡\ a¨Øò 	+ˆAÜ“ð +˜vÜ×*Ñ*Ó,�Ø!�
Ø Ÿ.™.¨´*Ó=�Ø×*Ñ*ÀaÐ*ÓH×HÐHÜ×)Ñ)Ó+�Ø˜v‘~¨Ò*Ð*Ñ*÷+ð +ð	+÷+÷ +ñ +øð Iø÷	+ð +úð+ø÷ +÷ +ñ +üsp   „9C<½C¾C<ÁC'ÁACÂC
Â"CÂ:
C'ÃC<ÃC%ÃC<ÃCÃC"ÃC'Ã%C<Ã'C9Ã-C0Ã.C9Ã5C<c               ƒ  ó  ‡‡K  — dŠt        «       Š‰j                  «        dˆˆfd„} | ‰_        t        ‰¬«      4 ƒd {  –—† \  }}t	        «       5 }|j                  |t        «      }|j                  ‰«       |j                  «       ƒ d {  –—†  |j                  d«      ƒ d {  –—†  |j                  «       ƒ d {  –—† dk(  sJ ‚	 d d d «       d d d «      ƒd {  –—†  y 7 Œ¡7 ŒV7 Œ?7 Œ)# 1 sw Y   Œ"xY w7 Œ# 1 ƒd {  –—†7  sw Y   y xY w­w)Ni,  c                óº   •— t        d| › �«       t        dt        | j                  «      › �«       t        | j                  «      ‰k  sJ ‚‰j                  | «       y )Núdelivering zpayload size: )r,   rè   re   rg   )r4   ÚMTUri   s    €€r"   rk   z9test_explicit_tiny_mtu_is_respected.<locals>.route_packet¤  sP   ø€ Ü�˜F˜8Ð$Ô%Ü�œs 6§>¡>Ó2Ð3Ð4Ô5Ü�6—>‘>Ó" cÒ)Ð)Ð)Ø
×Ñ˜&Õ!r$   )r&   r  rr   )r   rt   rk   rB   r#   rG   rH   r/   r0   r1   rM   )rk   Ú_serverrP   r   rŠ   r  ri   s        @@r"   Ú#test_explicit_tiny_mtu_is_respectedr  œ  sî   ùè ø€ ð €Cä	‹€BØ‡I�I„Kö"ð #€B„Oä CÔ(÷ 4ð 4Ñ,>¨W°gÜ‹Zð 	4˜6Ø—n‘n W¬jÓ9ˆGØ×&Ñ& sÔ+Ø×&Ñ&Ó(×(Ð(Ø—,‘,˜uÓ%×%Ð%Ø Ÿ™Ó*×*¨eÒ3Ð3Ñ3÷	4÷4÷ 4ñ 4øð )øØ%øØ*ø÷	4ð 	4úð4ø÷ 4÷ 4ñ 4üs”   „;D¿C!Á DÁC7Á;C)ÂC#ÂC)Â%C%Â&C)Â=C'Â>	C)ÃC7ÃDÃC5ÃDÃ#C)Ã%C)Ã'C)Ã)C2	Ã.C7Ã5DÃ7D	Ã=D Ã>D	ÄDc              ƒ  ó  ‡‡K  — t        «       Š‰j                  «        | rdndŠdˆˆfd„}|‰_        t        | ¬«      4 ƒd {  –—† \  }}t	        | ¬«      5 }|j                  |t        «      }|j                  d«       |j                  d«      ƒ d {  –—†  |j                  «       ƒ d {  –—† dk(  sJ ‚|j                  «       dkD  sJ ‚	 d d d «       d d d «      ƒd {  –—†  y 7 Œ 7 ŒR7 Œ<# 1 sw Y   Œ xY w7 Œ# 1 ƒd {  –—†7  sw Y   y xY w­w)	NiÐ  i$  c                ó’   •— t        | j                  «      ‰kD  rt        d| › �«       y t        d| › �«       ‰j                  | «       y )Nz	dropping r  )rè   re   r,   rg   )r4   ri   r&   s    €€r"   rk   z@test_handshake_handles_minimum_network_mtu.<locals>.route_packetÀ  s@   ø€ Üˆv�~‰~Ó Ò$Ü�I˜f˜XÐ&Õ'ä�K ˜xÐ(Ô)Ø×Ñ˜fÕ%r$   r(   i'  r„   i(#  rr   )r   rt   rk   rB   r#   rG   rH   r/   r1   rM   rL   )	r   r{   rk   r}   rP   rQ   r   ri   r&   s	          @@r"   Ú*test_handshake_handles_minimum_network_mtur  µ  sû   ùè ø€ ô 
‹€BØ‡I�I„Ká‰) €Cö&ð #€B„Oô
   TÔ*÷ 	5ð 	5©l¨q°'Ü˜4Ô ð 	5 OØ$×,Ñ,¨W´jÓAˆFð ×%Ñ% dÔ+Ø—+‘+˜fÓ%×%Ð%ØŸ™Ó)×)¨VÒ3Ð3Ð3Ø×+Ñ+Ó-°Ò4Ð4Ñ4÷	5÷	5÷ 	5ñ 	5øð &øØ)ø÷	5ð 	5úð	5ø÷ 	5÷ 	5ñ 	5üsƒ   „?DÁC$ÁDÁC8Á<C*ÂC&ÂC*Â+C(Â,C*ÃC8ÃDÃC6ÃDÃ&C*Ã(C*Ã*C3	Ã/C8Ã6DÃ8D
Ã>DÃ?D
ÄDz$always:unclosed DTLS:ResourceWarningc               ƒ  ó  K  — t         j                  j                  «       j                  } dd„}t	        j
                  t        «      5   |«       ƒ d {  –—† }t         j                  j                  «       ƒ d {  –—†  t        «        d d d «       t         j                  j                  «       ƒ d {  –—†  t         j                  j                  «       j                  }| k  sJ ‚| |k(  sJ ‚y 7 Œ™7 Œu# 1 sw Y   ŒjxY w7 ŒK­w)Nc               “  óÐ  K  — t        «       } t        j                  j                  t        j                  j                  ¬«      5 }|j	                  d«      ƒ d {  –—†  | j                  |j                  «       t        «      }t        j                  «       4 ƒd {  –—† }|j                  |j                  «       t        j                  j                  «       ƒ d {  –—†  |j                  j                  «        d d d «      ƒd {  –—†  d d d «       t        j                  j!                  «       j"                  }|S 7 Œâ7 Œ£7 Œd7 Œ<# 1 ƒd {  –—†7  sw Y   ŒLxY w# 1 sw Y   ŒPxY w­w)NrÒ   rˆ   )r#   r   r   r   r8   rG   r-   rH   r9   rn   r0   ÚtestingÚwait_all_tasks_blockedr=   r>   ÚlowlevelÚcurrent_statisticsÚtasks_living)Úer¨   ÚcrA   Úduring_taskss        r"   Ústart_and_forget_endpointzDtest_system_task_cleaned_up_on_gc.<locals>.start_and_forget_endpointà  s  è ø€ Ü‹Jˆô �[‰[×Ñ¤T§[¡[×%;Ñ%;ÐÓ<ð 	.ÀØ—&‘&Ð)Ó*×*Ð*Ø—	‘	˜!Ÿ-™-›/¬:Ó6ˆAÜ×(Ñ(Ó*÷ .ð .¨gØ×"Ñ" 1§>¡>Ô2Ü—l‘l×9Ñ9Ó;×;Ð;Ø×$Ñ$×+Ñ+Ô-÷.÷ .÷	.ô —}‘}×7Ñ7Ó9×FÑFˆØÐð +øð.øà;øð.ø÷ .÷ .ñ .ú÷	.ð 	.üs‹   ‚AE&ÁEÁD=ÁA EÂD?ÂEÂ=EÃEÃEÃ;EÄEÄEÄ2E&Ä=EÄ?EÅEÅEÅE	ÅEÅE	ÅEÅE#ÅE&)r6   Úint)
r   r  r   r!  rI   ÚwarnsÚResourceWarningr  r  r   )Úbefore_tasksr%  r$  Úafter_taskss       r"   Ú!test_system_task_cleaned_up_on_gcr+  Ø  sÈ   è ø€ ä—=‘=×3Ñ3Ó5×BÑB€Lóô  
�‰”oÓ	&ñ Ù6Ó8×8ˆÜ�l‰l×1Ñ1Ó3×3Ð3ÜÔ÷ô
 �,‰,×
-Ñ
-Ó
/×/Ð/ä—-‘-×2Ñ2Ó4×AÑA€KØ˜,Ò&Ð&Ð&Ø˜;Ò&Ð&Ñ&ð 9øØ3ø÷ð úð
 0úsN   ‚AC?ÁC1ÁC-Á%C1Á9C/Á:C1Â)C?Â1C=Â2;C?Ã-C1Ã/C1Ã1C:Ã6C?c               ƒ  óâ   K  — t        «       } t        j                  t        «      5  ~ t	        «        d d d «       t
        j                  j                  «       ƒ d {  –—†  y # 1 sw Y   Œ0xY w7 Œ­wrm   )r#   rI   r'  r(  r   r   r  r  ©r"  s    r"   Ú!test_gc_before_system_task_startsr.  ü  sT   è ø€ ä‹
€Aä	�‰”oÓ	&ñ ØÜÔ÷ô �,‰,×
-Ñ
-Ó
/×/Ñ/÷	ð úð 0ús'   ‚$A/¦A!²)A/ÁA-ÁA/Á!A*Á&A/c               ƒ  ó‚  K  — t        «       } | j                  «        t        «       }|j                  j	                  d«      ƒ d {  –—†  |j                  «        t        j                  j                  «       ƒ d {  –—†  t        j                  j                  t        j                  j                  ¬«      5 }|j                  d|j                  j                  «       «      ƒ d {  –—†  d d d «       t        j                  t        «      5  ~t        «        d d d «       y 7 ŒÛ7 Œ§7 Œ># 1 sw Y   Œ=xY w# 1 sw Y   y xY w­w)Nrˆ   rÒ   rš   )r   rt   r#   r   r8   Ú_ensure_receive_loopr   r  r  r   rÙ   r-   rI   r'  r(  r   )ri   r"  r¨   s      r"   Útest_gc_as_packet_receivedr1    sï   è ø€ ä	‹€BØ‡I�I„Kä‹
€AØ
�(‰(�-‰-Ð(Ó
)×)Ð)Ø×ÑÔä
�,‰,×
-Ñ
-Ó
/×/Ð/ä	�‰×	Ñ	¤§¡×!7Ñ!7Ð	Ó	8ð 7¸AØ�h‰h�v˜qŸx™x×3Ñ3Ó5Ó6×6Ð6÷7ô
 
�‰”oÓ	&ñ ØÜÔ÷ð ð *øð 0øð 	7ø÷7ð 7ú÷
ð üsf   ‚AD?ÁD!Á5D?Á;D#Á<<D?Â8.D'Ã&D%Ã'D'Ã+!D?ÄD3Ä
D?Ä#D?Ä%D'Ä'D0Ä,D?Ä3D<Ä8D?c                 ó¨   — dd„} t        j                  | «      }t        j                  t        «      5  ~t        «        d d d «       y # 1 sw Y   y xY w)Nc               “  óR   K  — t        «       } | j                  «        t        «       S ­wrm   )r   rt   r#   )ri   s    r"   Úmainz&test_gc_after_trio_exits.<locals>.main  s    è ø€ ô
 ‹YˆØ
�	‰	ŒÜ‹zÐùs   ‚%')r6   r   )r   ÚrunrI   r'  r(  r   )r4  r"  s     r"   Útest_gc_after_trio_exitsr6    s@   € óô 	�‰�‹€AÜ	�‰”oÓ	&ñ ØÜÔ÷÷ ñ ús   ³AÁAc               ƒ  óÎ   K  — t        «       5 } | j                  j                  «        t        j                  j                  «       ƒ d {  –—†  d d d «       y 7 Œ# 1 sw Y   y xY w­wrm   )r#   r   r’   r   r  r  r-  s    r"   Ú'test_already_closed_socket_doesnt_crashr8  -  sR   è ø€ Ü	‹ð 4�qð 	
�‰�‰Ôä�l‰l×1Ñ1Ó3×3Ð3÷4ð 4ð
 	4ø÷4ð 4üs.   ‚A%�<AÁ	AÁ
AÁ	A%ÁAÁA"ÁA%c              ƒ  óÐ  ‡‡K  — t        «       Š‰j                  «        t        «       4 ƒd {  –—† \  Š}dˆˆfd„}|‰_        t	        «       5 }t        j                  d«      5  |j                  |t        «      }|j                  «       ƒ d {  –—†  d d d «       d d d «       d d d «      ƒd {  –—†  y 7 Œ…7 Œ'# 1 sw Y   Œ&xY w# 1 sw Y   Œ*xY w7 Œ!# 1 ƒd {  –—†7  sw Y   y xY w­w)Nc                ó\   •— ‰j                  | «       ‰j                  j                  «        y rm   )rg   r   r’   )r4   ri   r?   s    €€r"   rk   zEtest_socket_closed_while_processing_clienthello.<locals>.route_packet@  s!   ø€ Ø×Ñ˜fÔ%Ø�M‰M×ÑÕ!r$   rq   rr   )
r   rt   rB   rk   r#   r   ry   rG   rH   r0   )r{   rP   rk   rQ   r   ri   r?   s        @@r"   Ú/test_socket_closed_while_processing_clienthellor;  6  sÎ   ùè ø€ ô 
‹€BØ‡I�I„Kô  Ó!÷ ,ð ,Ñ%6 f¨gö	"ð 'ˆŒä‹Zð 	,˜?Ü×#Ñ# BÓ'ñ ,Ø(×0Ñ0°¼*ÓE�Ø×)Ñ)Ó+×+Ð+÷,÷	,÷,÷ ,ñ ,øð ,ø÷,ð ,ú÷	,ð 	,úð,ø÷ ,÷ ,ñ ,üs†   „)C&­B3®C&±CÁCÁ#*B7ÂB5
ÂB7ÂCÂCÂ"C&Â-CÂ.C&Â5B7Â7C Â<CÃC	ÃCÃC&ÃC#ÃCÃC#ÃC&c           	   ƒ  ód  ‡K  — t        «       }|j                  «        dd„}||_        t        «       4 ƒd {  –—† \  }}t	        «       5 }|j                  |t        «      Št        j                  «       4 ƒd {  –—† }dˆfd„}|j                  |«       t        j                  d«      ƒ d {  –—†  |j                  |t        «       d d d «      ƒd {  –—†  d d d «       d d d «      ƒd {  –—†  y 7 Œ¸7 Œy7 ŒG7 Œ## 1 ƒd {  –—†7  sw Y   Œ3xY w# 1 sw Y   Œ7xY w7 Œ.# 1 ƒd {  –—†7  sw Y   y xY w­w)Nc                 ó   — y rm   rœ   ©r4   s    r"   rk   zGtest_association_replaced_while_handshake_running.<locals>.route_packetR  s   € Ør$   c               “  ó²   •K  — t        j                  t        j                  «      5  ‰ j	                  «       ƒ d {  –—†  d d d «       y 7 Œ# 1 sw Y   y xY w­wrm   )rI   rJ   r   r2   r0   )Úc1s   €r"   Údoomed_handshakezKtest_association_replaced_while_handshake_running.<locals>.doomed_handshake\  sF   øè ø€ ÜŸ™¤t×'?Ñ'?Ó@ñ 0Ø Ÿo™oÓ/×/Ð/÷0ð 0Ø/ø÷0ð 0üs,   ƒ$A§A»A	¼AÁ 	AÁ	AÁAÁArq   rr   r  )r   rt   rk   rB   r#   rG   rH   r   r9   rn   rc   )	r{   ri   rk   r}   rP   rQ   rA   rA  r@  s	           @r"   Ú1test_association_replaced_while_handshake_runningrB  L  s  øè ø€ ô 
‹€BØ‡I�I„Kóð #€B„OäÓ!÷ =ð =¡\ a¨Ü‹Zð 	=˜?Ø ×(Ñ(¨´*Ó=ˆBÜ×(Ñ(Ó*÷ 
=ð 
=¨gõ0ð ×"Ñ"Ð#3Ô4ä—j‘j “n×$Ð$à×'Ñ'¨´Ô<÷
=÷ 
=÷	=÷=÷ =ñ =øð
=øð %øð
=ø÷ 
=÷ 
=ñ 
=ú÷	=ð 	=úð=ø÷ =÷ =ñ =üs¶   ƒ4D0·C0¸D0»DÁ	/DÁ8C2
Á9DÁ<0C8Â,C4
Â-C8ÃDÃC6ÃDÃDÃD0Ã*DÃ+D0Ã2DÃ4C8Ã6DÃ8D
Ã>DÃ?D
ÄDÄD	ÄDÄD0ÄD-Ä!D$Ä"D-Ä)D0c               ƒ  ó  K  — t        «       } | j                  «        dd„}|| _        t        «       4 ƒd {  –—† \  }}t	        «       5 }|j                  |t        «      }|j                  |t        «       t        j                  t        j                  «      5  |j                  «       ƒ d {  –—†  d d d «       d d d «       d d d «      ƒd {  –—†  y 7 Œ›7 Œ'# 1 sw Y   Œ&xY w# 1 sw Y   Œ*xY w7 Œ!# 1 ƒd {  –—†7  sw Y   y xY w­w)Nc                ó   — t        «       ‚rm   )ÚAssertionErrorr>  s    r"   rk   zGtest_association_replaced_before_handshake_starts.<locals>.route_packetl  s   € ÜÓÐr$   )r4   r   r6   r   )r   rt   rk   rB   r#   rG   rH   rI   rJ   r   r2   r0   )ri   rk   r}   rP   rQ   r@  s         r"   Ú1test_association_replaced_before_handshake_startsrF  g  sÚ   è ø€ Ü	‹€BØ‡I�I„Kóð #€B„OäÓ!÷ (ð (¡\ a¨Ü‹Zð 	(˜?Ø ×(Ñ(¨´*Ó=ˆBØ×#Ñ# G¬ZÔ8Ü—‘œt×7Ñ7Ó8ñ (Ø—o‘oÓ'×'Ð'÷(÷	(÷(÷ (ñ (øð
 (ø÷(ð (ú÷	(ð 	(úð(ø÷ (÷ (ñ (üs‡   ‚4D¶C·DºC0ÁAC"ÂCÂ,C
Â-CÂ1C"Â9C0ÃDÃC.ÃDÃCÃCÃC"Ã"C+	Ã'C0Ã.DÃ0DÃ6C9Ã7DÃ>Dc            	   ƒ  ó²  K  — t        «       4 ƒd {  –—† \  } }t        «       5 }t        j                  «       4 ƒd {  –—† }t	        dd«      D ]5  }|j                  d|ft        «      }|j                  |j                  «       Œ7 |j                  |t        «      }|j                  d«      ƒ d {  –—†  |j                  «       ƒ d {  –—† dk(  sJ ‚|j                  j                  «        d d d «      ƒd {  –—†  d d d «       d d d «      ƒd {  –—†  y 7 �Œ7 ŒÚ7 Œi7 ŒS7 Œ&# 1 ƒd {  –—†7  sw Y   Œ6xY w# 1 sw Y   Œ:xY w7 Œ1# 1 ƒd {  –—†7  sw Y   y xY w­w)Nr´   rq   r)   rš   )rB   r#   r   r9   rv   rG   rH   rn   r0   r1   rM   r=   r>   )r}   rP   rQ   rA   r~   rŠ   s         r"   Útest_send_to_closed_local_portrH  y  s7  è ø€ ô  Ó!÷ 	.ð 	.¡\ a¨Ü‹Zð 	.˜?Ü×(Ñ(Ó*÷ .ð .¨gÜ˜q "›ò =�AØ-×5Ñ5°{ÀAÐ6FÌ
ÓS�GØ×&Ñ& w×';Ñ';Õ<ð=ð *×1Ñ1°'¼:ÓF�Ø—l‘l 6Ó*×*Ð*Ø$Ÿ_™_Ó.×.°&Ò8Ð8Ð8Ø×$Ñ$×+Ñ+Ô-÷.÷ .÷	.÷	.÷ 	.ñ 	.ùð.øð
 +øØ.øð.ø÷ .÷ .ñ .ú÷	.ð 	.úð	.ø÷ 	.÷ 	.ñ 	.üsÆ   ‚E‘D’E•E£D4¼D
½D4Á A/DÂ/D
Â0DÃD
Ã#DÃ+D4Ã6DÃ7D4Ã;EÄEÄE ÄEÄD4ÄDÄDÄD4ÄD1Ä%D(Ä&D1Ä-D4Ä4D=	Ä9EÅ EÅEÅEÅ	EÅE)r    z
int | boolr6   r   )r%   Úboolr&   z
int | Noner   rI  r6   z:AsyncGenerator[tuple[DTLSEndpoint, tuple[str, int]], None])r   rI  r6   r7   )r{   ztrio.testing.MockClockr6   r7   r  )r{   útrio.abc.Clockr6   r7   )r   rI  r{   rJ  r6   r7   )MÚ
__future__r   rd   Ú
contextlibr   Ú	itertoolsr   Útypingr   r   rê   rI   Útrio._tests.pytest_pluginr   ÚtrustmeÚOpenSSLr	   ÚImportErrorÚerrorr   Útrio.testingr
   r   Útrio.testing._fake_netr   r   Ú_core._tests.tutilr   r   r   Úcollections.abcr   ÚCAÚcaÚ
issue_certÚserver_certÚContextÚDTLS_METHODr<   Úconfigure_certrH   Úconfigure_trustÚmarkÚparametrizeÚparamÚparametrize_ipv6r#   rB   rT   r‚   r†   r�   r•   r˜   r¦   r©   r­   r¯   r¹   rã   rð   rõ   rþ   r	  r  r  r  Úfilterwarningsr+  r.  r1  r6  r8  r;  rB  rF  rH  rœ   r$   r"   ú<module>re     s  ðÝ "ã Ý *Ý ß *ã Û å Að'ÛÝó
 Û ß *ß 5ç DÑ DáÝ.à€W‡Z�Zƒ\€Ø�m‰m˜MÓ*€àˆS�[‰[˜Ÿ™Ó)€
Ø × Ñ ˜:Ô &àˆS�[‰[˜Ÿ™Ó)€
Ø × Ñ �:Ô ð —;‘;×*Ñ*Ø
Ø
ˆLˆF�L‰L˜ ZÔ0Ð1Ø	�Ðð +ó Ð ó(ð ð ØØñ	$.àð$.ð 
ð$.ð ð	$.ð
 @ò$.ó ð$.ðN òLó ðLð6 ðU"Ø*ðU"à	òU"ó ðU"óp4ó1ó2"ó$óYó8ó*ó$	'óEð&o$Ø"ðo$à	óo$ód'#ðT**Ø"ð**à	ó**óZ*ð> ò.ó ð.ðh+Ø"ð+à	ó+ó84ð2 ð5Ø
ð5à"ð5ð 
ò5ó ð5ðD ‡�×ÑÐBÓCò 'ó Dð 'ðF ‡�×ÑÐBÓCò0ó Dð0ð ‡�×ÑÐBÓCòó Dðð( ‡�×ÑÐBÓCòó Dðó 4ð,Ø"ð,à	ó,ð,=Ø"ð=à	ó=ó6(ô$.øðS ò 'Ù ×&Ò&ûð'ús   ®
I ÉIÉIÉI