§
    ÀiÔ  ã            
       óÎ  — d Z ddlZddlZddlmZmZmZmZmZ ddl	m
Z
 deeeeeeef         eeeef         eeef         f                  deee
                  fd„Z	 dd	ee
         d
ee         ddfd„Zdeeeef         eeeeef         f         deeej        ef         eej        eeef         f         fd„Zd	ee
         deeeef         eeeeef         f         ddfd„ZdS )z'Utility functions for aiohappyeyeballs.é    N)ÚDictÚListÚOptionalÚTupleÚUnioné   )ÚAddrInfoTypeÚaddrÚreturnc                 ó  — | €dS | d         }| d         }d|v }|rBd}d}t          | ¦  «        }|dk    r| d         }|dk    r| d         }||||f} t          j        }n||f} t          j        }|t          j        t          j        d| fgS )	z7Convert an address tuple to a list of addr_info tuples.Nr   r   ú:é   é   é   Ú )ÚlenÚsocketÚAF_INET6ÚAF_INETÚSOCK_STREAMÚIPPROTO_TCP)r
   ÚhostÚportÚis_ipv6ÚflowinfoÚscopeidÚaddr_lenÚfamilys           ú[/home/mmwave/public_html/mmwave/venv/lib/python3.11/site-packages/aiohappyeyeballs/utils.pyÚaddr_to_addr_infosr    
   s«   € ð €|ØˆtØ�Œ7€DØ�Œ7€DØ�Tˆk€GØð  ØˆØˆÝ�t‘9”9ˆØ�qŠ=ˆ=Ø˜1”gˆGØ�qŠ=ˆ=Ø˜A”wˆHØ�d˜H gÐ.ˆÝ”ˆˆà�dˆ|ˆÝ”ˆØ•VÔ'­Ô);¸RÀÐFÐGÐGó    Ú
addr_infosÚ
interleavec                 óØ   — i }|€d}g }| D ]D}|d         }||vrd||<   ||         |k     r|                      |¦  «         ||xx         dz  cc<   ŒE|D ]}|                      |¦  «         ŒdS )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.
    Nr   r   )ÚappendÚremove)r"   r#   ÚseenÚ	to_removeÚ	addr_infor   s         r   Úpop_addr_infos_interleaver*   %   s°   € ð €DØÐØˆ
Ø$&€IØð ð ˆ	Ø˜1”ˆØ˜ÐÐØˆD�‰LØ�Œ<˜*Ò$Ð$Ø×Ò˜YÑ'Ô'Ð'ØˆVˆˆŒ˜Ñˆˆ‰ˆØð %ð %ˆ	Ø×Ò˜)Ñ$Ô$Ð$Ð$ð%ð %r!   c                 óN   — t          j        | d         ¦  «        g| dd…         ¢R S )z+Convert an address tuple to an IPv4Address.r   r   N)Ú	ipaddressÚ
ip_address)r
   s    r   Ú_addr_tuple_to_ip_addressr.   =   s,   € õ Ô   a¤Ñ)Ô)Ð5¨D°°°¬HÐ5Ð5Ð5r!   c                 ót  — g }| D ]#}|d         |k    r|                      |¦  «         Œ$|r|D ]}|                      |¦  «         ŒdS t          |¦  «        }| D ]0}|t          |d         ¦  «        k    r|                      |¦  «         Œ1|r|D ]}|                      |¦  «         ŒdS t          d|› d�¦  «        ‚)z…
    Remove an address from the list of addr_infos.

    The addr value is typically the return value of
    sock.getpeername().
    éÿÿÿÿNzAddress z not found in addr_infos)r%   r&   r.   Ú
ValueError)r"   r
   Úbad_addrs_infosr)   Úbad_addr_infoÚ
match_addrs         r   Úremove_addr_infosr5   F   s  € ð +-€OØð .ð .ˆ	Ø�RŒ=˜DÒ Ð Ø×"Ò" 9Ñ-Ô-Ð-øØð Ø,ð 	-ð 	-ˆMØ×Ò˜mÑ,Ô,Ð,Ð,Øˆå*¨4Ñ0Ô0€JØð .ð .ˆ	ØÕ2°9¸R´=ÑAÔAÒAÐAØ×"Ò" 9Ñ-Ô-Ð-øØð Ø,ð 	-ð 	-ˆMØ×Ò˜mÑ,Ô,Ð,Ð,ØˆÝ
Ð> Ð>Ð>Ð>Ñ
?Ô
?Ð?r!   )N)Ú__doc__r,   r   Útypingr   r   r   r   r   Útypesr	   ÚstrÚintr    r*   ÚIPv4AddressÚIPv6Addressr.   r5   © r!   r   ú<module>r>      sÝ  ðØ -Ð -à Ð Ð Ð Ø €€€Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à Ð Ð Ð Ð Ð ðHØ
Øˆe�C˜˜c 3Ð&Ô'¨¨s°C¸¨}Ô)=¸uÀSÈ#ÀX¼ÐNÔOôðHð ˆd�<Ô Ô!ð	Hð Hð Hð Hð8 AEð%ð %Ø�\Ô"ð%Ø08¸´ð%à	ð%ð %ð %ð %ð06Ø
��c˜3�h”  s¨C°°cÐ'9Ô!:Ð:Ô
;ð6à
Ø	ˆ)Ô
 Ð
$Ô% u¨YÔ-BÀCÈÈcÐ-QÔ'RÐRôð6ð 6ð 6ð 6ð@Ø�\Ô"ð@à
��c˜3�h”  s¨C°°cÐ'9Ô!:Ð:Ô
;ð@ð 
ð@ð @ð @ð @ð @ð @r!   