Ë
    è×ïi5  ã                   óÄ   — d dl Z d dlZd dlZd dlmZmZ 	 ddgZdedefd„Z	dd	gZ
d
edefd„Zdedefd„Zdededefd„Zdededefd„Z	 	 ddedededededededefd„Zy)é    N)ÚunquoteÚurlparseÚ	parse_urlÚget_proxy_infoÚurlÚreturnc                 óª  — d| vrt        d«      ‚| j                  dd«      \  }} t        | d¬«      }|j                  r|j                  }nt        d«      ‚d}|j                  r|j                  }d}|d	k(  r|sd
}n|dk(  rd}|sd}nt        d|z  «      ‚|j
                  r|j
                  }nd}|j                  r|d|j                  z   z  }||||fS )z®
    parse url and the result is tuple of
    (hostname, port, resource path and the flag of secure mode)

    Parameters
    ----------
    url: str
        url string.
    ú:zurl is invalidé   Úhttp)Úschemezhostname is invalidr   FÚwséP   ÚwssTi»  zscheme %s is invalidú/ú?)Ú
ValueErrorÚsplitr   ÚhostnameÚportÚpathÚquery)r   r   Úparsedr   r   Ú	is_secureÚresources          úH/var/www/html/aiagents/fe/lib/python3.12/site-packages/websocket/_url.pyr   r      sß   € ð �#�~ÜÐ)Ó*Ð*à—)‘)˜C Ó#�K€FˆCä�c &Ô)€FØ‡‚Ø—?‘?‰äÐ.Ó/Ð/Ø€DØ‡{‚{Ø�{‰{ˆà€IØ�‚~ÙØ‰DØ	�5ŠØˆ	ÙØ‰DäÐ/°&Ñ8Ó9Ð9à‡{‚{Ø—;‘;‰àˆà‡|‚|Ø�C˜&Ÿ,™,Ñ&Ñ&ˆà�T˜8 YÐ.Ð.ó    Ú	localhostz	127.0.0.1Úaddrc                 ób   — 	 t        j                  | «       y# t         j                  $ r Y yw xY w)NTF)ÚsocketÚ	inet_atonÚerror)r   s    r   Ú_is_ip_addressr$   N   s2   € ðÜ×Ñ˜Ôð øô �<‰<ò Ùðús   ‚ ˜.­.r   c                 ó–   — 	 | j                  d«      \  }}t        |«      xr dt        |«      cxk  xr dk  S c S # t        $ r Y yw xY w)Nr   r   é    F)r   r$   Úintr   )r   r   Únetmasks      r   Ú_is_subnet_addressr)   W   sO   € ðØ Ÿ™ sÓ+‰ˆˆgÜ˜dÓ#Ò>¨¬S°«\Ö(>¸BÑ(>Ð>Ñ(>Ð>øÜò Ùðús   ‚6< ¹< ¼	AÁAÚipÚnetc                 ó  — t        j                  dt        j                  | «      «      d   }|j	                  d«      \  }}t        j                  dt        j                  |«      «      d   }ddt        |«      z
  z  dz  }||z  |k(  S )Nz!Ir   r   l   ÿÿ r&   )ÚstructÚunpackr!   r"   r   r'   )r*   r+   ÚipaddrÚnetaddrr(   s        r   Ú_is_address_in_networkr1   _   s|   € Ü�]‰]˜4¤×!1Ñ!1°"Ó!5Ó6°qÑ9€FØ—y‘y “~Ñ€GˆWÜ�m‰m˜D¤&×"2Ñ"2°7Ó";Ó<¸QÑ?€Gà˜b¤3 w£<Ñ/Ñ0°JÑ>€GØ�GÑ˜wÑ&Ð&r   Úno_proxyc           	      óê  — |sat         j                  j                  dt         j                  j                  dd«      «      j                  dd«      }|r|j	                  d«      }|st
        }d|v ry| |v ryt        | «      r/t        |D �cg c]  }t        |«      sŒt        | |«      ‘Œ c}«      S |D �cg c]  }|j                  d«      sŒ|‘Œ c}D ]  }| j                  |«      sŒ y y	c c}w c c}w )
Nr2   ÚNO_PROXYÚ ú ú,Ú*Tú.F)ÚosÚenvironÚgetÚreplacer   ÚDEFAULT_NO_PROXY_HOSTr$   Úanyr)   r1   Ú
startswithÚendswith)r   r2   ÚvÚsubnetÚdomains        r   Ú_is_no_proxy_hostrE   h   sØ   € ÙÜ�J‰J�N‰N˜:¤r§z¡z§~¡~°jÀ"Ó'EÓF×NÑNÈsÐTVÓWˆÙØ—w‘w˜s“|ˆHÙÜ(ˆà
ˆh�ØØ�8ÑØÜ�hÔÜÈ8ÖrÀÔWiÐjpÕWqÔ*¨8°VÕ<ÒrÓsÐsØ(0ÖK˜f°F×4EÑ4EÀcÕ4J’6ÒKò ˆØ×Ñ˜VÕ$Ùðð ùò	 sùÚKs   Â
C+ÂC+Â4C0ÃC0r   Ú
proxy_hostÚ
proxy_portÚ
proxy_authÚ
proxy_typec                 óè  — t        | |«      ry|r	|}|}|||fS dg}	|r|	j                  dd«       |	D ]¾  }
t        j                  j	                  |
t        j                  j	                  |
j                  «       d«      «      j                  dd«      }|sŒbt        |«      }|j                  r*t        |j                  «      t        |j                  «      fnd}|j                  |j                  |fc S  y)a¨  
    Try to retrieve proxy host and port from environment
    if not provided in options.
    Result is (proxy_host, proxy_port, proxy_auth).
    proxy_auth is tuple of username and password
    of proxy authentication information.

    Parameters
    ----------
    hostname: str
        Websocket server name.
    is_secure: bool
        Is the connection secure? (wss) looks for "https_proxy" in env
        before falling back to "http_proxy"
    proxy_host: str
        http proxy host name.
    proxy_port: str or int
        http proxy port.
    no_proxy: list
        Whitelisted host names that don't use the proxy.
    proxy_auth: tuple
        HTTP proxy auth information. Tuple of username and password. Default is None.
    proxy_type: str
        Specify the proxy protocol (http, socks4, socks4a, socks5, socks5h). Default is "http".
        Use socks4a or socks5h if you want to send DNS requests through the proxy.
    )Nr   NÚ
http_proxyr   Úhttps_proxyr5   r6   N)rE   Úinsertr:   r;   r<   Úupperr=   r   Úusernamer   Úpasswordr   r   )r   r   rF   rG   rH   r2   rI   r   ÚauthÚenv_keysÚkeyÚvalueÚproxys                r   r   r   |   sÔ   € ô: ˜ 8Ô,ØáØˆØˆØ˜4 Ð%Ð%àˆ~€HÙØ�‰˜˜=Ô)àò 4ˆÜ—
‘
—‘˜s¤B§J¡J§N¡N°3·9±9³;ÀÓ$CÓD×LÑLÈSÐRTÓUˆÚÜ˜U“OˆEØINÏÊ”G˜EŸN™NÓ+¬W°U·^±^Ó-DÑEÐ]aˆDØ—>‘> 5§:¡:¨tÐ3Ò3ð4ð r   )Nr   NNr   )r:   r!   r-   Úurllib.parser   r   Ú__all__ÚstrÚtupler   r>   Úboolr$   r)   r1   ÚlistrE   r'   r   © r   r   ú<module>r]      sí   ðÛ 	Û Û ç *ðð& Ð(Ð
)€ð+/�3ð +/˜5ó +/ð\ % kÐ2Ð ð˜ð  ó ð ð ¨ó ð'˜sð '¨ð '°ó 'ð ð ¨tð ¸ó ð* jnØ17ñ0Øð0Ø"&ð0Ø47ð0ØLOð0Øafð0àð0à+.ð0à<Aô0r   