o
    t¨Êhny  ã                	   @   s|  d dl mZ zd dlmZ W n ey   d dlmZ Y nw d dlmZmZm	Z	 d dl
Z
d dlmZ d dlZd dlZd dlmZ d dlZd dlZd dlZdZejdkrjejd	k rjzd dlZW n eyi   ed
ƒ‚w e e¡Zd ZZd ZZd ZZeeedœZ e!e"e  #¡ e  $¡ ƒƒZ%ej Z&Z'dd„ Z(G dd„ de)ƒZ*G dd„ de*ƒZ+G dd„ de*ƒZ,G dd„ de*ƒZ-G dd„ de*ƒZ.G dd„ de*ƒZ/G dd„ de*ƒZ0dd d!d"œZ1d#d$d%d&d'd(d)d*d+œZ2ed,ed,ed-iZ3	.	d@d/d0„Z4d1d2„ Z5d3d4„ Z6e6Z7d5d6„ Z8e8Z9			.		dAd7d8„Z:G d9d:„ d:ejƒZ;d;d<„ Z<d=D ]Ze=e;edƒZ>e?e>eƒ�s2e;j@ Ae¡ eBe;ee<eƒƒ �qG d>d?„ d?e;ƒZCdS )Bé    )Ú	b64encode)ÚCallable)Ú
EOPNOTSUPPÚEINVALÚEAGAINN)ÚBytesIO)ÚSEEK_CURz1.7.1Únt)é   r   z8To run PySocks on Windows you must install win_inet_ptoné   é   r
   )ÚSOCKS4ÚSOCKS5ÚHTTPc                    s   t  ˆ ¡‡ fdd„ƒ}|S )Nc               
      s|   | d }z.z |  ¡ }|dkr| d¡ ˆ | i |¤ŽW W |dkr%| d¡ S S  ty2 } z‚ d }~ww |dkr=| d¡ w w )Nr   TF)Ú
gettimeoutÚsetblockingÚ	Exception)ÚargsÚkwargsÚselfÚ_is_blockingÚe©Úfunction© ú7/var/www/html/env/lib/python3.10/site-packages/socks.pyÚwrapper(   s    
ÿü€ÿÿz"set_self_blocking.<locals>.wrapper)Ú	functoolsÚwraps)r   r   r   r   r   Úset_self_blocking&   s   r   c                   @   s"   e Zd ZdZddd„Zdd„ ZdS )Ú
ProxyErrorz4Socket_err contains original socket.error exception.Nc                 C   s,   || _ || _|r|  j d |¡7  _ d S d S )Nz: {})ÚmsgÚ
socket_errÚformat)r   r!   r"   r   r   r   Ú__init__;   s
   ÿzProxyError.__init__c                 C   ó   | j S ©N)r!   ©r   r   r   r   Ú__str__B   ó   zProxyError.__str__r&   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r$   r(   r   r   r   r   r    9   s    
r    c                   @   ó   e Zd ZdS )ÚGeneralProxyErrorN©r*   r+   r,   r   r   r   r   r/   F   ó    r/   c                   @   r.   )ÚProxyConnectionErrorNr0   r   r   r   r   r2   J   r1   r2   c                   @   r.   )ÚSOCKS5AuthErrorNr0   r   r   r   r   r3   N   r1   r3   c                   @   r.   )ÚSOCKS5ErrorNr0   r   r   r   r   r4   R   r1   r4   c                   @   r.   )ÚSOCKS4ErrorNr0   r   r   r   r   r5   V   r1   r5   c                   @   r.   )Ú	HTTPErrorNr0   r   r   r   r   r6   Z   r1   r6   zRequest rejected or failedzLRequest rejected because SOCKS server cannot connect to identd on the clientzPRequest rejected because the client program and identd report different user-ids)é[   é\   é]   zGeneral SOCKS server failurez!Connection not allowed by rulesetzNetwork unreachablezHost unreachablezConnection refusedzTTL expiredz(Command not supported, or protocol errorzAddress type not supported)r   r   r
   é   é   é   é   é   i8  i�  Tc                 C   s.   | ||||r
|  ¡ nd|r|  ¡ ndft_dS )z›Sets a default proxy.

    All further socksocket objects will use the default unless explicitly
    changed. All parameters are as for socket.set_proxy().N)ÚencodeÚ
socksocketÚdefault_proxy)Ú
proxy_typeÚaddrÚportÚrdnsÚusernameÚpasswordr   r   r   Úset_default_proxys   s   
þrH   c                  O   s$   d|v r|  d¡|d< t| i |¤ŽS ©NÚ	proxytyperB   )ÚpoprH   )r   r   r   r   r   Úsetdefaultproxy~   s   rL   c                   C   s   t jS )z4Returns the default proxy, set by set_default_proxy.)r@   rA   r   r   r   r   Úget_default_proxy„   ó   rM   c                 C   s   t jr	t | j_dS tdƒ‚)a  Attempts to replace a module's socket library with a SOCKS socket.

    Must set a default proxy using set_default_proxy(...) first. This will
    only work on modules that import socket directly into the namespace;
    most of the Python Standard Library falls into this category.zNo default proxy specifiedN)r@   rA   Úsocketr/   )Úmoduler   r   r   Úwrap_module‹   s   rQ   c
                 C   s,  | \}
}|
  d¡r|
 d¡}
|r|  d¡r| d¡}d}t ||dtj¡D ]g}|\}}}}}d}z=t|||ƒ}|	rC|	D ]}|j|Ž  q;t|tt	fƒrO| 
|¡ |r[| ||||||¡ |rb| |¡ | |
|f¡ |W   S  tjtfyŒ } z|}|r‚| ¡  d}W Y d}~q%d}~ww |r‘|‚t d¡‚)aí  create_connection(dest_pair, *[, timeout], **proxy_args) -> socket object

    Like socket.create_connection(), but connects to proxy
    before returning the socket object.

    dest_pair - 2-tuple of (IP/hostname, port).
    **proxy_args - Same args passed to socksocket.set_proxy() if present.
    timeout - Optional socket timeout value, in seconds.
    source_address - tuple (host, port) for the socket to bind to as its source
    address before connecting (only for compatibility)
    ú[z[]Nr   zgai returned empty list.)Ú
startswithÚstriprO   ÚgetaddrinfoÚSOCK_STREAMr@   Ú
setsockoptÚ
isinstanceÚintÚfloatÚ
settimeoutÚ	set_proxyÚbindÚconnectÚerrorr    Úclose)Ú	dest_pairÚtimeoutÚsource_addressrB   Ú
proxy_addrÚ
proxy_portÚ
proxy_rdnsÚproxy_usernameÚproxy_passwordÚsocket_optionsÚremote_hostÚremote_portÚerrÚrÚfamilyÚsocket_typeÚprotoÚ	canonnameÚsaÚsockÚoptr   r   r   r   Úcreate_connection™   sD   



ÿ

€ü
ru   c                   @   s   e Zd ZdZdd„ Zeƒ ZdS )Ú_BaseSocketzBAllows Python 2 delegated methods such as send() to be overridden.c                 O   sJ   t j| g|¢R i |¤Ž tƒ | _| jD ]}t| |ƒ| j|< t| |ƒ qd S r&   )Ú_orig_socketr$   ÚdictÚ_savedmethodsÚ
_savenamesÚgetattrÚdelattr)r   ÚposÚkwÚnamer   r   r   r$   Ø   s   
þz_BaseSocket.__init__N)r*   r+   r,   r-   r$   Úlistrz   r   r   r   r   rv   Ö   s    
rv   c                    s   ‡ fdd„S )Nc                    s   | j ˆ  |i |¤ŽS r&   )ry   )r   r}   r~   ©r   r   r   Ú<lambda>ä   s    z_makemethod.<locals>.<lambda>r   r�   r   r�   r   Ú_makemethodã   s   rƒ   )ÚsendtoÚsendÚrecvfromÚrecvc                       s@  e Zd ZdZdZejejdf‡ fdd„	Zdd„ Z	‡ fdd	„Z
d
d„ Zdd„ Z		d7dd„Zdd„ Z‡ fdd„Z‡ fdd„Zd8‡ fdd„	Zd8‡ fdd„	Zdd„ Z‡ fdd„Zdd „ ZeZd!d"„ ZeZd#d$„ ZeZd%d&„ Z‡ fd'd(„Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Z e!ee"ee#e iZ$e%d9‡ fd1d2„	ƒZ&e%d3d4„ ƒZ'd5d6„ Z(‡  Z)S ):r@   a2  socksocket([family[, type[, proto]]]) -> socket object

    Open a SOCKS enabled socket. The parameters are the same as
    those of the standard socket init. In order for SOCKS to work,
    you must specify family=AF_INET and proto=0.
    The "type" argument must be either SOCK_STREAM or SOCK_DGRAM.
    Nr   c                    sv   |t jt jfvrd}t| |¡ƒ‚tt| ƒj|||g|¢R i |¤Ž d | _| j	r-| j	| _
nd| _
d | _d | _d | _d S )Nz0Socket type must be stream or datagram, not {!r})NNNNNN)rO   rV   Ú
SOCK_DGRAMÚ
ValueErrorr#   Úsuperr@   r$   Ú
_proxyconnrA   ÚproxyÚproxy_socknameÚproxy_peernameÚ_timeout)r   rn   Útyperp   r   r   r!   ©Ú	__class__r   r   r$   ü   s   "

zsocksocket.__init__c                 C   sF   d}t |ƒ|k r!| |t |ƒ ¡}|stdƒ‚||7 }t |ƒ|k s|S )zŠReceive EXACTLY the number of bytes requested from the file object.

        Blocks until the required number of bytes have been received.ó    úConnection closed unexpectedly)ÚlenÚreadr/   )r   ÚfileÚcountÚdataÚdr   r   r   Ú_readall  s   üzsocksocket._readallc                    s>   || _ z|  ¡ }tt| ƒ | j ¡ W d S  tjy   Y d S w r&   )r�   Úget_proxy_peernamerŠ   r@   r[   rO   r_   )r   rb   Úpeerr‘   r   r   r[     s   ÿzsocksocket.settimeoutc                 C   r%   r&   )r�   r'   r   r   r   r   #  r)   zsocksocket.gettimeoutc                 C   s    |r	|   d ¡ d S |   d¡ d S )Ng        )r[   )r   Úvr   r   r   r   &  s   zsocksocket.setblockingTc                 C   s.   |||||r
|  ¡ nd|r|  ¡ ndf| _dS )a�   Sets the proxy to be used.

        proxy_type -  The type of the proxy to be used. Three types
                        are supported: PROXY_TYPE_SOCKS4 (including socks4a),
                        PROXY_TYPE_SOCKS5 and PROXY_TYPE_HTTP
        addr -        The address of the server (IP or DNS).
        port -        The port of the server. Defaults to 1080 for SOCKS
                        servers and 8080 for HTTP proxy servers.
        rdns -        Should DNS queries be performed on the remote side
                       (rather than the local side). The default is True.
                       Note: This has no effect with SOCKS4 servers.
        username -    Username to authenticate with to the server.
                       The default is no authentication.
        password -    Password to authenticate with to the server.
                       Only relevant when username is also provided.N)r?   rŒ   )r   rB   rC   rD   rE   rF   rG   r   r   r   r\   ,  s   
þzsocksocket.set_proxyc                 O   s&   d|v r|  d¡|d< | j|i |¤ŽS rI   )rK   r\   )r   r   r   r   r   r   ÚsetproxyA  s   zsocksocket.setproxyc                    s  | j \}}}}}}|r| jtjkrtj| g|¢R i |¤ŽS | jr&t td¡‚|t	kr2d}	t t
|	¡‚tt| ƒj|i |¤Ž |  ¡ \}
}d|f}tƒ | _|  ¡ }| j |¡ d}|  | j||¡\}
}|\}}
|\}
}tt| ƒ ||f¡ tt| ƒ | j¡ d| _dS )zVImplements proxy connection for UDP sockets.

        Happens during the bind() phase.z"Socket already bound to an addressz'UDP only supported by SOCKS5 proxy typeÚ0ó   )ú0.0.0.0r   N)rŒ   r�   rO   rˆ   rw   r]   r‹   r_   r   r   r   rŠ   r@   ÚgetsocknameÚ_proxy_addrr^   Ú_SOCKS5_requestr[   r�   r�   )r   r}   r~   rB   rd   re   rE   rF   rG   r!   Ú_rD   ÚdstrŒ   ÚUDP_ASSOCIATEÚrelayÚhostr‘   r   r   r]   F  s.   ÿ
zsocksocket.bindc           
         s®   | j tjkrtt| ƒj|g|¢R i |¤ŽS | js|  d¡ |d }|d d… }tƒ }d}| 	|¡ d}| 	|¡ |  
||¡ tt| ƒj| ¡ | g|¢R i |¤Ž}	|	| ¡  S )N©Ú r   éÿÿÿÿs     ó    )r�   rO   rˆ   rŠ   r@   r„   r‹   r]   r   ÚwriteÚ_write_SOCKS5_addressr…   ÚgetvalueÚtell)
r   Úbytesr   r   ÚaddressÚflagsÚheaderÚRSVÚ
STANDALONEÚsentr‘   r   r   r„   k  s    


ÿzsocksocket.sendtoc                    s>   | j tjkr| j||| jfi |¤ŽS tt| ƒj||fi |¤ŽS r&   )r�   rO   rˆ   r„   rŽ   rŠ   r@   r…   )r   r³   rµ   r   r‘   r   r   r…     s   zsocksocket.sendc           	         s¾   | j tjkrtt| ƒ ||¡S | js|  d¡ ttt| ƒ 	|d |¡ƒ}| 
dt¡ | d¡}t|ƒr7tdƒ‚|  |¡\}}| jrV| j\}}||ksP|d|fvrVt td¡‚| |¡||ffS )Nr«   i   r   r   zReceived UDP packet fragmentr   zPacket filtered)r�   rO   rˆ   rŠ   r@   r†   r‹   r]   r   r‡   Úseekr   r–   ÚordÚNotImplementedErrorÚ_read_SOCKS5_addressrŽ   r_   r   )	r   Úbufsizerµ   ÚbufÚfragÚfromhostÚfromportÚpeerhostÚpeerportr‘   r   r   r†   …  s   


zsocksocket.recvfromc                 O   s   | j |i |¤Ž\}}|S r&   )r†   )r   r}   r~   r³   r¦   r   r   r   r‡   ™  s   zsocksocket.recvc                    s   | j r| j  ¡  tt| ƒ ¡ S r&   )r‹   r`   rŠ   r@   r'   r‘   r   r   r`   �  s   
zsocksocket.closec                 C   r%   )z:Returns the bound IP address and port number at the proxy.)r�   r'   r   r   r   Úget_proxy_sockname¢  rN   zsocksocket.get_proxy_socknamec                 C   s   |   ¡ S )z>
        Returns the IP and port number of the proxy.
        )Úgetpeernamer'   r   r   r   rœ   ¨  s   zsocksocket.get_proxy_peernamec                 C   r%   )zwReturns the IP address and port number of the destination machine.

        Note: get_proxy_peername returns the proxy.)rŽ   r'   r   r   r   Úget_peername°  s   zsocksocket.get_peernamec                 G   s   d}|   | ||¡\| _| _dS )z7Negotiates a stream connection through a SOCKS5 server.ó   N)r¥   rŽ   r�   )r   Ú	dest_addrÚCONNECTr   r   r   Ú_negotiate_SOCKS5¸  s   ÿzsocksocket._negotiate_SOCKS5c                    s  | j \}}}}}}	| d¡}
| dd¡}zã|r|	r|
 d¡ n|
 d¡ |
 ¡  |  |d¡}|dd… dkr:td	ƒ‚|dd… d
kr†|rF|	sJtdƒ‚|
 dtt|ƒƒ 	¡  | tt|	ƒƒ 	¡  |	 ¡ |
 ¡  |  |d¡}|dd… dkrytd	ƒ‚|dd… dkr…tdƒ‚n|dd… dkrž|dd… dkrštdƒ‚td	ƒ‚|
 d| d ¡ |  
||
¡}|
 ¡  |  |d¡}|dd… dkrÃtd	ƒ‚t|dd… ƒ}|dkrÝt |d¡}td ||¡ƒ‚|  |¡}tt| ƒ | j¡ ||fW | ¡  |
 ¡  S | ¡  |
 ¡  w )z‘
        Send SOCKS5 request with given command (CMD field) and
        address (DST field). Returns resolved DST address that was used.
        ÚwbÚrbr   s    s    r   r   ó   ú%SOCKS5 proxy server sent invalid dataó   zPNo username/password supplied. Server requested username/password authenticationrÈ   r®   zSOCKS5 authentication failedó   ÿz7All offered SOCKS5 authentication methods were rejectedr
   úUnknown errorú{:#04x}: {})rŒ   Úmakefiler¯   Úflushr›   r/   r3   Úchrr•   r?   r°   r»   ÚSOCKS5_ERRORSÚgetr4   r#   r½   rŠ   r@   r[   r�   r`   )r   ÚconnÚcmdr§   rB   rC   rD   rE   rF   rG   ÚwriterÚreaderÚchosen_authÚauth_statusÚresolvedÚrespÚstatusr_   Úbndr‘   r   r   r¥   ¾  sv   

ÿÿþýÿþÿÿÿ

ÿ
zsocksocket._SOCKS5_requestc              	   C   sD  |\}}| j \}}}}}}	tjdtjdi}
tjtjfD ]1}z%t ||¡}| |
| | ¡ t ||¡}| t d|¡¡ ||fW   S  tj	yL   Y qw |rd| 
d¡}| dtt|ƒƒ 
¡  | ¡ n1t ||tjtjtjtj¡}|d }|d }|d d }t ||¡}| |
| | ¡ t ||¡}| t d|¡¡ ||fS )z~
        Return the host and port packed for the SOCKS5 protocol,
        and the resolved address as a tuple object.
        rÈ   ó   ú>HÚidnar¡   r   r:   )rŒ   rO   ÚAF_INETÚAF_INET6Ú	inet_ptonr¯   Ú	inet_ntopÚstructÚpackr_   r?   rÖ   r•   rU   Ú	AF_UNSPECrV   ÚIPPROTO_TCPÚAI_ADDRCONFIG)r   rC   r—   rª   rD   rB   r¦   rE   rF   rG   Úfamily_to_bytern   Ú
addr_bytesÚ
host_bytesÚ	addressesÚtarget_addrr   r   r   r°      s:   ÿ
 ýz socksocket._write_SOCKS5_addressc                 C   s–   |   |d¡}|dkrt |   |d¡¡}n'|dkr'|   |d¡}|   |t|ƒ¡}n|dkr7t tj|   |d¡¡}ntdƒ‚t d|   |d	¡¡d
 }||fS )Nr   rÈ   r:   r¡   rã   é   rÏ   rä   r   r   )	r›   rO   Ú	inet_ntoar»   ré   rç   r/   rê   Úunpack)r   r—   ÚatyprC   ÚlengthrD   r   r   r   r½   M  s   zsocksocket._read_SOCKS5_addressc                 C   sª  | j \}}}}}}|  d¡}	|  dd¡}
z·d}zt |¡}W n tjy7   |r-d}d}nt t |¡¡}Y nw |	 t ddd	|¡¡ |	 |¡ |rO|	 |¡ |	 d
¡ |r`|	 | 	d¡d
 ¡ |	 
¡  |  |
d¡}|dd	… d
krvtdƒ‚t|d	d… ƒ}|dkr�t |d¡}td ||¡ƒ‚t |dd… ¡t d|dd… ¡d f| _|r±t |¡|f| _n||f| _W |
 ¡  |	 ¡  dS W |
 ¡  |	 ¡  dS |
 ¡  |	 ¡  w )z0Negotiates a connection through a SOCKS4 server.rÌ   rÍ   r   Fs      Tz>BBHr:   r   r®   rå   r>   z%SOCKS4 proxy server sent invalid datar   éZ   rÒ   rÓ   Nrä   )rŒ   rÔ   rO   Ú	inet_atonr_   Úgethostbynamer¯   rê   rë   r?   rÕ   r›   r/   r»   ÚSOCKS4_ERRORSrØ   r5   r#   rõ   rö   r�   rŽ   r`   )r   rÉ   Ú	dest_portrB   rC   rD   rE   rF   rG   rÛ   rÜ   Úremote_resolverð   rà   rá   r_   r   r   r   Ú_negotiate_SOCKS4\  s\   
ÿ€ú



ÿÿûÿ
zsocksocket._negotiate_SOCKS4c                 C   sX  | j \}}}}}}|r|nt |¡}d| d¡ d t|ƒ ¡  d d| d¡ g}	|r;|r;|	 dt|d | ƒ ¡ |	 d¡ |  d |	¡¡ |  	¡ }
|
 
¡ }|
 ¡  |sZtdƒ‚z| d	d
¡\}}}W n typ   tdƒ‚w | d¡sztdƒ‚zt|ƒ}W n ty‹   tdƒ‚w |dkr¢d ||¡}|dv rž|d7 }t|ƒ‚d| _||f| _dS )zwNegotiates a connection through an HTTP server.

        NOTE: This currently only supports HTTP CONNECT-style proxies.s   CONNECT rå   ó   :s	    HTTP/1.1s   Host: s   Proxy-Authorization: basic s   
r”   ú r   z'HTTP proxy server sent invalid responsezHTTP/z0Proxy server does not appear to be an HTTP proxyz4HTTP proxy server did not return a valid HTTP statuséÈ   z{}: {})i�  i“  i•  za
[*] Note: The HTTP proxy server may not be supported by PySocks (must be a CONNECT tunnel proxy))s   0.0.0.0r   N)rŒ   rO   rû   r?   ÚstrÚappendr   ÚsendallÚjoinrÔ   Úreadliner`   r/   Úsplitr‰   rS   rY   r6   r#   r�   rŽ   )r   rÉ   rý   rB   rC   rD   rE   rF   rG   Úhttp_headersÚfobjÚstatus_linerp   Ústatus_codeÚ
status_msgr_   r   r   r   Ú_negotiate_HTTP˜  sV   
ÿÿýÿ
ÿ
ÿÿÿzsocksocket._negotiate_HTTPc              
      sú  t |ƒdks|d  d¡rt dt|ƒ ¡‚|\}}| jtjkr?| js(|  d¡ t 	|¡}|dkr8|s8d| _
dS ||f| _
dS | j\}}}}}	}
t|ttfƒr\t |ƒdks\|r\t|tƒs`tdƒ‚tt| ƒ | j¡ |du r…|| _
tt| ƒ | j¡ tt| ƒ ||f¡ dS |  ¡ }z
tt| ƒ |¡ W n5 tjyÈ } z(|  ¡  |sÂ|\}}d	 ||¡}t| }d
 ||¡}t d||¡ t||ƒ‚|‚d}~ww z| j| }|| ||ƒ W dS  tjyñ } z|së|  ¡  td|ƒ‚|‚d}~w tyü   |  ¡  ‚ w )zã
        Connects to the specified destination through a proxy.
        Uses the same API as socket's connect().
        To select the proxy server, use set_proxy().

        dest_pair - 2-tuple of (IP/hostname, port).
        r   r   rR   z PySocks doesn't support IPv6: %sr«   r¢   Nz0Invalid destination-connection (host, port) pairz{}:{}zError connecting to {} proxy {}z%s due to: %szSocket error)r•   rS   rO   r_   r  r�   rˆ   r‹   r]   rû   rŽ   rŒ   rX   r€   ÚtuplerY   r/   rŠ   r@   r[   r�   r^   r¤   r`   r#   ÚPRINTABLE_PROXY_TYPESÚlogÚdebugr2   Ú_proxy_negotiatorsr    )r   ra   Úcatch_errorsrÉ   rý   rB   rd   re   rE   rF   rG   r_   Úproxy_serverÚprintable_typer!   Ú	negotiater‘   r   r   r^   Ù  s|   	ÿ


ÿÿÿþÿÿ
€ó

€ýzsocksocket.connectc              
   C   sH   z
| j |dd� W dS  ty# } z|jr|jW  Y d}~S ‚ d}~ww )a&   https://docs.python.org/3/library/socket.html#socket.socket.connect_ex
        Like connect(address), but return an error indicator instead of raising an exception for errors returned by the C-level connect() call (other problems, such as "host not found" can still raise exceptions).
        T)r  r   N)r^   ÚOSErrorÚerrno)r   ra   r   r   r   r   Ú
connect_ex6  s   €úzsocksocket.connect_exc                 C   s4   | j \}}}}}}|pt |¡}|stdƒ‚||fS )zD
        Return proxy address to connect to as tuple object
        zInvalid proxy type)rŒ   ÚDEFAULT_PORTSrØ   r/   )r   rB   rd   re   rE   rF   rG   r   r   r   r¤   F  s   ÿzsocksocket._proxy_addr©NNNTNN)r   r&   )*r*   r+   r,   r-   rA   rO   ræ   rV   r$   r›   r[   r   r   r\   rŸ   r]   r„   r…   r†   r‡   r`   rÅ   Úgetproxysocknamerœ   ÚgetproxypeernamerÇ   rÆ   rË   r¥   r°   r½   rÿ   r  r   r   r   r  r   r^   r  r¤   Ú__classcell__r   r   r‘   r   r@   ñ   sR    ÿ	
ÿ%b-<<ý\
r@   r  )	NNNNNTNNN)DÚbase64r   Úcollections.abcr   ÚImportErrorÚcollectionsr  r   r   r   r   Úior   ÚloggingÚosr   rO   rê   ÚsysÚ__version__r   Úversion_infoÚwin_inet_ptonÚ	getLoggerr*   r  ÚPROXY_TYPE_SOCKS4r   ÚPROXY_TYPE_SOCKS5r   ÚPROXY_TYPE_HTTPr   ÚPROXY_TYPESrx   ÚzipÚvaluesÚkeysr  Ú
_orgsocketrw   r   ÚIOErrorr    r/   r2   r3   r4   r5   r6   rü   r×   r  rH   rL   rM   ÚgetdefaultproxyrQ   Ú
wrapmoduleru   rv   rƒ   r{   ÚmethodrX   rz   r  Úsetattrr@   r   r   r   r   Ú<module>   s˜    ÿÿÿ

ü	ø
ÿ
û=€