+
    -Iëj¹  ã            	       ó2  € ^ RI t ^ RIt^ RIt^ RIHt ^ RIt^ RIt^ RIt^ RIH	t	H
t
HtHtHt ^ RIHtHtHt ^ RIHtHt ^ RIt ^ RIt^ RIHt ] ! R R]4      4       t] ! R	 R
]4      4       tR t] ! R R]4      4       t ! R R]4      t ! R R]4      t] ! R R]4      4       t  ! R R]4      t!]]PD                  ! ]PF                  R8H  R4       ! R R]PH                  4      4       4       t%]]PD                  ! ]RJ R4      ]PD                  ! ]PF                  R8H  R4      ]PD                  ! ]PF                  R8H  R4       ! R R]4      4       4       4       4       t& ! R  R!]PH                  4      t' ! R" R#]PH                  4      t(R#   ] d    Rt ELGi ; i)$é    N)ÚPopen)ÚBlockingResolverÚOverrideResolverÚThreadedResolverÚis_valid_ipÚbind_sockets)ÚAsyncTestCaseÚgen_testÚbind_unused_port)ÚskipIfNoNetworkÚabstract_base_test)ÚCaresResolverc                   ó4   a € ] tR t^t o Rt]R 4       tRtV tR# )Ú_ResolverTestMixinNc              #  óò   "  € V P                   P                  R ^P\        P                  4      x €pT P	                  \        P
                  R3V9   ;'       g    \        P                  R3V9   RV 24       R# 5i)Ú	localhostzloopback address not found in N)ú	127.0.0.1éP   )ú::1r   )ÚresolverÚresolveÚsocketÚ	AF_UNSPECÚ
assertTrueÚAF_INETÚAF_INET6)ÚselfÚaddrinfos   & Ú;/usr/lib/python3/dist-packages/tornado/test/netutil_test.pyÚtest_localhostÚ!_ResolverTestMixin.test_localhost!   sk   é € àŸ™×.Ñ.¨{¸BÄ×@PÑ@PÓQÑQˆð 	�‰Ü�n‰nÐ/Ð0°HÑ<÷ <ð <Ü—‘ +Ð.°(Ñ:Ø,¨X¨JÐ7ö	
ùs   ‚A5A7© )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r
   r    Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r      s   ø‡ € à€Hàñ	
ó ö	
ó    r   c                   ó^   a € ] tR t^0t o Rt]P                  ! R4      ]R 4       4       tRt	V t
R# )Ú_ResolverErrorTestMixinNz$Prevent internet access during buildc              #  óÜ   "  € V P                  \        4      ;_uu_ 4        V P                  P                  R ^P\        P
                  4      x € RRR4       R#   + '       g   i     R# ; i5i)zan invalid domainN)ÚassertRaisesÚIOErrorr   r   r   r   ©r   s   &r   Útest_bad_hostÚ%_ResolverErrorTestMixin.test_bad_host4   sF   é € ð ×Ñœw×'Õ'Ø—-‘-×'Ñ'Ð(;¸RÄ×AQÑAQÓRÒR÷ (×'×'Ò'üs   ‚A, .AÁ
A,ÁA)	Á#	A,r"   )r#   r$   r%   r&   r   ÚunittestÚskipr
   r2   r'   r(   r)   s   @r   r-   r-   0   s0   ø‡ € à€Hà‡]‚]Ð9Ó:ØñSó ó ;öSr+   r-   c                 óL   € \         P                  ! \        P                  R4      h)z4Dummy implementation of getaddrinfo for use in mockszmock: lookup failed)r   ÚgaierrorÚerrnoÚEIO)Úargss   *r   Ú_failing_getaddrinfor;   ;   s   € ä
�/Š/œ%Ÿ)™)Ð%:Ó
;Ð;r+   c                   ó2   a a€ ] tR t^@t oV 3R ltRtVtV ;t# )ÚBlockingResolverTestc                óB   <€ \         SV `  4        \        4       V n        R # ©N)ÚsuperÚsetUpr   r   ©r   Ú	__class__s   &€r   rA   ÚBlockingResolverTest.setUpB   ó   ø€ Ü‰‰ŒÜ(Ó*ˆŽr+   ©r   ©r#   r$   r%   r&   rA   r'   r(   Ú__classcell__©rC   r*   s   @@r   r=   r=   @   s   ù‡ € ÷+õ +r+   r=   c                   ó>   a a€ ] tR t^Jt oV 3R ltV 3R ltRtVtV ;t# )ÚBlockingResolverErrorTestc                óŠ   <€ \         SV `  4        \        4       V n        \        P
                  V n        \        \        n        R # r?   ©r@   rA   r   r   r   ÚgetaddrinfoÚreal_getaddrinfor;   rB   s   &€r   rA   ÚBlockingResolverErrorTest.setUpK   ó,   ø€ Ü‰‰ŒÜ(Ó*ˆŒÜ &× 2Ñ 2ˆÔÜ1ŒÖr+   c                óN   <€ V P                   \        n        \        SV `  4        R # r?   ©rO   r   rN   r@   ÚtearDownrB   s   &€r   rT   Ú"BlockingResolverErrorTest.tearDownQ   ó   ø€ Ø!×2Ñ2ŒÔÜ‰ÑÖr+   ©rO   r   ©	r#   r$   r%   r&   rA   rT   r'   r(   rH   rI   s   @@r   rK   rK   J   ó   ù‡ € õ2÷õ r+   rK   c                   óB   a a€ ] tR t^Vt oV 3R lt]R 4       tRtVtV ;t	# )ÚOverrideResolverTestc                óª   <€ \         SV `  4        RRR ^P\        P                  3RR ^P\        P                  3R/p\        \        4       V4      V n        R# )ú
google.comN)r]   r   ©z1.2.3.4r   )ú 2a02:6b8:7c:40c:c51e:495f:e23a:3r   )r@   rA   r   r   r   r   r   r   )r   ÚmappingrC   s   & €r   rA   ÚOverrideResolverTest.setUpW   sO   ø€ Ü‰‰Œà Ø˜2œvŸ~™~Ð.°Ø˜2œvŸ™Ð/ð 2ð
ˆô )Ô)9Ó);¸WÓEˆŽr+   c              #  óJ  "  € V P                   P                  R ^P\        P                  4      x €pV P	                  \        P                  R3V4       V P                   P                  R ^P\        P
                  4      x €pV P	                  \        P
                  R3V4       R# 5i)r]   Nr^   )r_   r   r   r   )r   r   r   r   ÚassertInr   )r   Úresults   & r   Útest_resolve_multiaddrÚ+OverrideResolverTest.test_resolve_multiaddrc   su   é € à—}‘}×,Ñ,¨\¸2¼v¿~¹~ÓNÑNˆØ�‰”v—~‘~ Ð7¸Ô@à—}‘}×,Ñ,¨\¸2¼v¿¹ÓOÑOˆØ�‰Ü�_‰_ÐLÐMÈvö	
ùs   ‚B!B#rF   )
r#   r$   r%   r&   rA   r
   re   r'   r(   rH   rI   s   @@r   r[   r[   V   s$   ù‡ € õ
Fð ñ
ó ÷
ð 
r+   r[   c                   ó>   a a€ ] tR t^nt oV 3R ltV 3R ltRtVtV ;t# )ÚThreadedResolverTestc                óB   <€ \         SV `  4        \        4       V n        R # r?   )r@   rA   r   r   rB   s   &€r   rA   ÚThreadedResolverTest.setUpp   rE   r+   c                óX   <€ V P                   P                  4        \        SV `  4        R # r?   )r   Úcloser@   rT   rB   s   &€r   rT   ÚThreadedResolverTest.tearDownt   s   ø€ Ø�‰×ÑÔÜ‰ÑÖr+   rF   rX   rI   s   @@r   rh   rh   n   s   ù‡ € õ+÷õ r+   rh   c                   ó>   a a€ ] tR t^yt oV 3R ltV 3R ltRtVtV ;t# )ÚThreadedResolverErrorTestc                óŠ   <€ \         SV `  4        \        4       V n        \        P
                  V n        \        \        n        R # r?   rM   rB   s   &€r   rA   ÚThreadedResolverErrorTest.setUpz   rQ   r+   c                óN   <€ V P                   \        n        \        SV `  4        R # r?   rS   rB   s   &€r   rT   Ú"ThreadedResolverErrorTest.tearDown€   rV   r+   rW   rX   rI   s   @@r   ro   ro   y   rY   r+   ro   Úwin32z!preexec_fn not available on win32c                   ó&   a € ] tR t^…t o R tRtV tR# )ÚThreadedResolverImportTestc                ób  a€ ^o\         P                  RR.p\        P                  ! 4       p\        VV3R lR7      p\        P                  ! 4       V,
          S8  dA   VP	                  4       pVe   V P                  ^ V4       R# \        P                  ! R4       Ka  V P                  R4       R# )é   z-cz'import tornado.test.resolve_test_helperc                  ó0   <€ \         P                  ! S 4      # r?   )ÚsignalÚalarm)ÚTIMEOUTs   €r   Ú<lambda>Ú8ThreadedResolverImportTest.test_import.<locals>.<lambda>‘   s   ø€ ´&·,²,¸wÔ2Gr+   )Ú
preexec_fnNgš™™™™™©?zimport timed out)ÚsysÚ
executableÚtimer   ÚpollÚassertEqualÚsleepÚfail)r   ÚcommandÚstartÚpopenÚreturn_coder|   s   &    @r   Útest_importÚ&ThreadedResolverImportTest.test_importˆ   sƒ   ø€ Øˆô
 —>‘> 4Ð)RÐSˆä—	’	“ˆÜ�gÔ*GÔHˆÜ�iŠi‹k˜EÕ! GÔ+ØŸ*™*›,ˆKØÒ&Ø× Ñ   KÔ0ÙÜ�JŠJ�tÖà�	‰	Ð$Ö%r+   r"   N)r#   r$   r%   r&   r‹   r'   r(   r)   s   @r   rv   rv   …   s   ø‡ € ÷&ð &r+   rv   zpycares module not presentz*pycares doesn't return loopback on windowsÚdarwinz*pycares doesn't return 127.0.0.1 on darwinc                   ó2   a a€ ] tR t^¢t oV 3R ltRtVtV ;t# )ÚCaresResolverTestc                óB   <€ \         SV `  4        \        4       V n        R # r?   )r@   rA   r   r   rB   s   &€r   rA   ÚCaresResolverTest.setUp§   s   ø€ Ü‰‰ŒÜ%›ˆŽr+   rF   rG   rI   s   @@r   r�   r�   ¢   s   ù‡ € ÷
(õ (r+   r�   c                   ó&   a € ] tR t^¬t o R tRtV tR# )ÚIsValidIPTestc                óª  € V P                  \        R 4      4       V P                  \        R4      4       V P                  \        R4      4       V P                  \        R4      4       V P                  \        R4      4       V P                  \        R4      4       V P                  \        R4      4       V P                  \        R4      4       V P                  \        R4      4       V P                  \        R	4      4       V P                  \        R
4      4       V P                  \        R4      4       V P                  \        R4      4       R# )r   z4.4.4.4r   z2620:0:1cfe:face:b00c::3zwww.google.comr   z4.4.4.4<z
 127.0.0.1Ú Ú Ú
Ú NÚdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)r   r   ÚassertFalser1   s   &r   Útest_is_valid_ipÚIsValidIPTest.test_is_valid_ip­   sò   € Ø�‰œ KÓ0Ô1Ø�‰œ IÓ.Ô/Ø�‰œ EÓ*Ô+Ø�‰œÐ$>Ó?Ô@Ø×ÑœÐ%5Ó6Ô7Ø×Ñœ [Ó1Ô2Ø×Ñœ ZÓ0Ô1Ø×Ñœ \Ó2Ô3Ø×Ñœ R›Ô)Ø×Ñœ SÓ)Ô*Ø×Ñœ TÓ*Ô+Ø×Ñœ VÓ,Ô-Ø×Ñœ YÓ/Ö0r+   r"   N)r#   r$   r%   r&   r›   r'   r(   r)   s   @r   r“   r“   ¬   s   ø‡ € ÷1ð 1r+   r“   c                   óp   a € ] tR t^½t o R t]P                  ! ]! ]R4      '       * R4      R 4       t	Rt
V tR# )ÚTestPortAllocationc                óz  a€ \        ^ R4      p V^ ,          P                  4       ^,          oT P                  \        ;QJ d&    V3R lVR,           4       F  '       d   K   RM	  RM! V3R lVR,           4       4      4       V F  pVP	                  4        K  	  R#   T F  pTP	                  4        K  	  i ; i)r   r   c              3   óV   <"  € T F  qP                  4       ^,          S8H  x € K   	  R# 5i©é   N©Úgetsockname©Ú.0ÚsÚports   & €r   Ú	<genexpr>Ú?TestPortAllocation.test_same_port_allocation.<locals>.<genexpr>Â   s   øé € ÐPÁK¸q§¡£°Õ 2°dÖ :ÃKùó   ƒ&):r¢   NNFTN)r   r¤   r   Úallrl   ©r   ÚsocketsÚsockr¨   s   &  @r   Útest_same_port_allocationÚ,TestPortAllocation.test_same_port_allocation¾   s�   ø€ Ü˜q +Ó.ˆð	Ø˜1•:×)Ñ)Ó+¨AÕ.ˆDØ�O‰OŸC›CÔPÀGÈBÆKÓPŸCŸCšCÔPÀGÈBÆKÓPÓPÔQã�Ø—
‘
–ó  ø›�Ø—
‘
–ò  ús   �3B ÁB Á!#B ÂB:ÚSO_REUSEPORTzSO_REUSEPORT is not supportedc                óˆ  a€ . p\        R R7      w  po \        SRR R7      pT P                  \        ;QJ d    V3R lV 4       F  '       d   K   RM	  R M! V3R lV 4       4      4       VP	                  4        V F  pVP	                  4        K  	  R#   TP	                  4        T F  pTP	                  4        K  	  i ; i)T)Ú
reuse_portr   c              3   óV   <"  € T F  qP                  4       ^,          S8H  x € K   	  R# 5ir¡   r£   r¥   s   & €r   r©   Ú5TestPortAllocation.test_reuse_port.<locals>.<genexpr>Ï   s   øé € ÐLÁG¸q§¡£°Õ 2°dÖ :ÃGùr«   FN)r   r   r   r¬   rl   r­   s   &  @r   Útest_reuse_portÚ"TestPortAllocation.test_reuse_portÇ   sŽ   ø€ ð /1ˆÜ%°Ô6‰
ˆˆdð	Ü" 4¨ÀÔFˆGØ�O‰OŸC›CÔLÁGÓLŸCŸCšCÔLÁGÓLÓLÔMà�J‰JŒLÛ�Ø—
‘
–ó  øð �J‰JŒLÛ�Ø—
‘
–ò  ús   ”8B ÁB Â+Cr"   N)r#   r$   r%   r&   r°   r4   ÚskipIfÚhasattrr   r·   r'   r(   r)   s   @r   rž   rž   ½   s7   ø‡ € òð ‡_‚_Ù�F˜NÓ+Ô+Ð-Lóñ	óö	r+   rž   ))r8   rz   r   Ú
subprocessr   r€   r‚   r4   Útornado.netutilr   r   r   r   r   Útornado.testingr	   r
   r   Útornado.test.utilr   r   ÚtypingÚpycaresÚtornado.platform.caresresolverr   ÚImportErrorr   r-   r;   r=   rK   r[   rh   ro   r¹   ÚplatformÚTestCaserv   r�   r“   rž   r"   r+   r   Ú<module>rÅ      sÈ  ðÛ Û Û Ý Û 
Û Û ÷õ ÷ FÑ Eß Aã ð=Ûõ =ð ô
˜ó 
ó ð
ð$ ôS˜mó Só ðSò<ð
 ô+Ð-ó +ó ð+ô	Ð 7ô 	ô
Ð-ô 
ð0 ôÐ-ó ó ðô	Ð 7ô 	ð Ø	‡‚�—‘ Ñ(Ð*MÓNô& ×!2Ñ!2ó &ó Oó ð&ð6 Ø	‡‚�˜D�Ð">Ó?Ø	‡‚�—‘ Ñ(Ð*VÓWØ	‡‚�—‘ Ñ)Ð+WÓXô(Ð*ó (ó Yó Xó @ó ð(ô1�H×%Ñ%ô 1ô"˜×*Ñ*ö øðM ô ØƒGðús   ÁF	 Æ		FÆF