Ë
    `Qbj"  ã                   óö   — d dl Z d dlZd dlmZ d dlmZmZ ddlmZ 	 ddgZ	de
d	efd
„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ee
      d	efd„Z	 	 	 	 	 dde
dedee
   dedee   deee
      de
d	efd„Zy)é    N)ÚOptional)ÚunquoteÚurlparseé   )ÚWebSocketProxyExceptionÚ	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  }||||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 invalidr   Ú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          úA/var/www/html/venv/lib/python3.12/site-packages/websocket/_url.pyr   r      sá   € ð �#�~ÜÐ)Ó*Ð*à—)‘)˜C Ó#�K€FˆCä�c &Ô)€FØ‡‚Ø—?‘?‰äÐ.Ó/Ð/Ø€DØ‡{‚{Ø�{‰{ˆà€IØ�‚~ÙØ‰DØ	�5ŠØˆ	ÙØ‰DäÐ/°&Ñ8Ó9Ð9à‡{‚{Ø—;‘;‰àˆà‡|‚|Ø�a˜Ÿ™�~Ð&Ñ&ˆà�T˜8 YÐ.Ð.ó    Úaddrc                 ó„   — t        | t        «      st        d«      ‚	 t        j                  | «       y# t
        $ r Y yw xY w)Nz'_is_ip_address() argument 1 must be strTF)Ú
isinstanceÚstrÚ	TypeErrorÚ	ipaddressÚ
ip_addressr   )r    s    r   Ú_is_ip_addressr'   K   sD   € Ü�dœCÔ ÜÐAÓBÐBðÜ×Ñ˜TÔ"ð øô ò Ùðús   �3 ³	?¾?r   c                 óN   — 	 t        j                  | «       y# t        $ r Y yw xY w)NTF)r%   Ú
ip_networkr   )r   s    r   Ú_is_subnet_addressr*   V   s.   € ðÜ×Ñ˜XÔ&ð øô ò Ùðús   ‚ ˜	$£$ÚipÚnetc                 ó�   — 	 t        j                  | «      j                  t        j                  |«      «      S # t        $ r Y yw xY w)NF)r%   r)   Ú	subnet_ofr$   )r+   r,   s     r   Ú_is_address_in_networkr/   _   s@   € ðÜ×#Ñ# BÓ'×1Ñ1´)×2FÑ2FÀsÓ2KÓLÐLøÜò Ùðús   ‚69 ¹	AÁAÚno_proxyc           	      ó  — |sat         j                  j                  dt         j                  j                  dd«      «      j                  dd«      x}r|j	                  d«      }|sg }d|v ry| |v ryt        | «      r.t        |D �cg c]  }t        |«      rt        | |«      ‘Œ c}«      S |D �cg c]  }|j                  d«      sŒ|‘Œ c}D ]&  }|j                  d«      }| j                  |«      sŒ& y y	c c}w c c}w )
Nr0   ÚNO_PROXYÚ ú ú,Ú*Tú.F)ÚosÚenvironÚgetÚreplacer   r'   Úanyr*   r/   Ú
startswithÚlstripÚendswith)r   r0   ÚvÚsubnetÚdomainÚ	endDomains         r   Ú_is_no_proxy_hostrD   f   s  € ÙÜ—
‘
—‘˜z¬2¯:©:¯>©>¸*ÀbÓ+IÓJ×RÑRØ�ó
ð 
ˆ1ð 
ð —w‘w˜s“|ˆHáØˆà
ˆh�ØØ�8ÑØÜ�hÔÜð 'öàÜ% fÔ-ô ' x°Õ8òó
ð 	
ð )1ÖK˜f°F×4EÑ4EÀcÕ4J’6ÒKò ˆØ—M‘M #Ó&ˆ	Ø×Ñ˜YÕ'Ùðð ùòùò Ls   ÂC7Â/C<ÃC<r   Ú
proxy_hostÚ
proxy_portÚ
proxy_authÚ
proxy_typec                 óÞ  — t        | |«      ry|r|st        d«      ‚|}|}|||fS |rdnd}	t        j                  j	                  |	t        j                  j	                  |	j                  «       d«      «      j                  dd«      }
|
rdt        |
«      }|j                  r2t        |j                  xs d«      t        |j                  xs d«      fnd}|j                  |j                  |f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
        instead of "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   Nz+Cannot use port 0 when proxy_host specifiedÚhttps_proxyÚ
http_proxyr3   r4   N)rD   r   r8   r9   r:   Úupperr;   r   Úusernamer   Úpasswordr   r   )r   r   rE   rF   rG   r0   rH   r   ÚauthÚenv_keyÚvalueÚproxys               r   r	   r	   ƒ   sÜ   € ôF ˜ 8Ô,ØáÙÜ)Ð*WÓXÐXØˆØˆØ˜4 Ð%Ð%á(‰m¨l€GÜ�J‰J�N‰N˜7¤B§J¡J§N¡N°7·=±=³?ÀBÓ$GÓH×PÑPØˆRó€Eñ Ü˜“ˆð �~Š~ô �U—^‘^Ò) rÓ*¬G°E·N±NÒ4HÀbÓ,IÑJàð 	ð
 �~‰~˜uŸz™z¨4Ð/Ð/àr   )Nr   NNr   )r%   r8   Útypingr   Úurllib.parser   r   Ú_exceptionsr   Ú__all__r#   Útupler   Úboolr'   r*   r/   ÚlistrD   Úintr	   © r   r   ú<module>r\      s  ðÛ Û 	Ý ß *Ý 0ðð& Ð(Ð
)€ð+/�3ð +/˜5ó +/ð\˜ð  ó ð ð ¨ó ð˜sð ¨ð °ó ð ð ¨x¸¸S¹	Ñ/Bð Àtó ð@ !%ØØ"&Ø$(Øñ:Øð:àð:ð ˜‘ð:ð ð	:ð
 ˜‘ð:ð �t˜C‘yÑ!ð:ð ð:ð ô:r   