+
    ¶¬‚j
  ã                   óZ   € R t ^ RIt^ RIt^RIHt R R ltRR R lltR R ltR	 R
 ltR# )z'Utility functions for aiohappyeyeballs.N)ÚAddrInfoTypec                ó  € V ^8„  d   QhR\         \        \        \        \        3,          \         \        \        \        3,          ,          \         \        \        3,          ,          R,          R\        \        ,          R,          /# )é   ÚaddrNÚreturn)ÚtupleÚstrÚintÚlistr   )Úformats   "ÚS/Users/cheyod/AIGC/DSH/.venv/lib/python3.14/site-packages/aiohappyeyeballs/utils.pyÚ__annotate__r   	   sZ   € ÷ Hñ HÜ
””Sœ#œsÐ"Õ
#¤e¬C´´c¨MÕ&:Õ
:¼UÄ3ÌÀ8½_Õ
LÈtÕ
SðHä	Œ,Õ˜$ÕñHó    c                óB  € V f   R# V ^ ,          pV ^,          pRV9   pV'       dE   ^ p^ p\        V 4      pV^8¼  d
   V ^,          pV^8¼  d
   V ^,          pWWE3p \        P                  pMW3p \        P                  pV\        P                  \        P
                  RV 3.# )z7Convert an address tuple to a list of addr_info tuples.NÚ:Ú )ÚlenÚsocketÚAF_INET6ÚAF_INETÚSOCK_STREAMÚIPPROTO_TCP)r   ÚhostÚportÚis_ipv6ÚflowinfoÚscopeidÚaddr_lenÚfamilys   &       r   Úaddr_to_addr_infosr   	   s    € ð ‚|ÙØ��7€DØ��7€DØ�T‰k€GßØˆØˆÜ�t“9ˆØ�qŒ=Ø˜1•gˆGØ�qŒ=Ø˜A•wˆHØ˜HÐ.ˆÜ—‘‰àˆ|ˆÜ—‘ˆØ”V×'Ñ'¬×);Ñ);¸RÀÐFÐGÐGr   c                óX   € V ^8„  d   QhR\         \        ,          R\        R,          RR/# )r   Ú
addr_infosÚ
interleaveNr   )r
   r   r	   )r   s   "r   r   r   "   s-   € ÷ ñ Ü”\Õ"ðÜ03°dµ
ðà	ñr   c                ó®   € Vf   ^p/ p. pV  F@  pV^ ,          pVP                  V^ 4      pWa8¼  d   VP                  V4       V^,           W%&   KB  	  W0R&   R# )zÄ
Pop addr_info from the list of addr_infos by family up to interleave times.

The interleave parameter is used to know how many addr_infos for
each family should be popped of the top of the list.
NºNNN)ÚgetÚappend)r!   r"   ÚseenÚkeptÚ	addr_infor   Úcounts   &&     r   Úpop_addr_infos_interleaver+   "   sb   € ð ÒØˆ
Ø€DØ!€DÛˆ	Ø˜1•ˆØ—‘˜ Ó#ˆØÔØ�K‰K˜	Ô"Ø˜q•yˆ‹ñ  ð ˆqƒMr   c          	      ó4  € V ^8„  d   QhR\         \        \        3,          \         \        \        \        \        3,          ,          R\         \        P                  \        3,          \         \        P
                  \        \        \        3,          ,          /# )r   r   r   )r   r   r	   Ú	ipaddressÚIPv4AddressÚIPv6Address)r   s   "r   r   r   8   sa   € ÷ 6ñ 6Ü
””S��/œE¤#¤s¬C´Ð"4Õ5Õ
5ð6ä
Œ9× Ñ ¤#Ð%Õ&¬¬y×/DÑ/DÄcÌ3ÔPSÐ/SÕ)TÕTñ6r   c                óR   € \         P                  ! V ^ ,          4      .V R,          O5# )z+Convert an address tuple to an IPv4Address.:é   NN)r-   Ú
ip_address)r   s   &r   Ú_addr_tuple_to_ip_addressr3   8   s%   € ô × Ò   a¥Ó)Ð5¨D°­HÑ5Ð5r   c          	      ó¸   € V ^8„  d   QhR\         \        ,          R\        \        \        3,          \        \        \        \        \        3,          ,          RR/# )r   r!   r   r   N)r
   r   r   r   r	   )r   s   "r   r   r   ?   sF   € ÷ ñ Ü”\Õ"ðä
””S��/œE¤#¤s¬C´Ð"4Õ5Õ
5ðð 
ñr   c                óN  € V  Uu. uF  q"R,          V8w  g   K  VNK  	  pp\        V4      \        V 4      8X  d6   \        V4      pV  Uu. uF  p\        VR,          4      V8w  g   K  VNK   	  pp\        V4      \        V 4      8X  d   \        RV R24      hW0R&   R# u upi u upi )zu
Remove an address from the list of addr_infos.

The addr value is typically the return value of
sock.getpeername().
zAddress z not found in addr_infosr$   Néÿÿÿÿ)r   r3   Ú
ValueError)r!   r   Úair(   Ú
match_addrs   &&   r   Úremove_addr_infosr:   ?   s£   € ñ $Ó6™�2¨"¥v°¡~�BˆB™€DÐ6Ü
ˆ4ƒy”C˜
“OÔ#ä.¨tÓ4ˆ
á#ó
Ù#�2Ô'@ÀÀBÅÓ'HÈJÑ'V�BˆB™ð 	ð 
ô ˆ4ƒy”C˜
“OÔ#Ü˜8 D 6Ð)AÐBÓCÐCØˆqƒMùò 7ùò
s   …B™BÁ	B"Á'B")N)	Ú__doc__r-   r   Útypesr   r   r+   r3   r:   © r   r   Ú<module>r>      s&   ðÙ -ã Û å õH÷2õ,6÷r   