§
    ÈtºfXD  ã                   ó  — d Z ddlZddlZddlmZmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZ  G d	„ d
ej        ¦  «        Z G d„ d¦  «        Z G d„ de	j        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        ZdS )z_
Tests for L{twisted.protocol.socks}, an implementation of the SOCKSv4 and
SOCKSv4a protocols.
é    N)ÚaddressÚdefer)ÚDNSLookupError)Úsocks)Ú	iterbytes)Úproto_helpers)Úunittestc                   ó(   — e Zd ZdZdZd„ Zd„ Zd„ ZdS )ÚStringTCPTransportFNc                 ó   — | j         S )N)Úpeer©Úselfs    úV/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/test/test_socks.pyÚgetPeerzStringTCPTransport.getPeer   s
   € ØŒyÐó    c                 ó.   — t          j        ddd¦  «        S )NÚTCPz2.3.4.5é*   )r   ÚIPv4Addressr   s    r   ÚgetHostzStringTCPTransport.getHost   s   € ÝÔ" 5¨)°RÑ8Ô8Ð8r   c                 ó   — d| _         d S )NT)ÚstringTCPTransport_closingr   s    r   ÚloseConnectionz!StringTCPTransport.loseConnection   s   € Ø*.ˆÔ'Ð'Ð'r   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   © r   r   r   r      sL   € € € € € Ø!&ÐØ€Dðð ð ð9ð 9ð 9ð/ð /ð /ð /ð /r   r   c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚFakeResolverReactorzP
    Bare-bones reactor with deterministic behavior for the resolve method.
    c                 ó   — || _         dS )zÃ
        @type names: L{dict} containing L{str} keys and L{str} values.
        @param names: A hostname to IP address mapping. The IP addresses are
            stringified dotted quads.
        N)Únames)r   r"   s     r   Ú__init__zFakeResolverReactor.__init__'   s   € ð ˆŒ
ˆ
ˆ
r   c           	      óÐ   — 	 t          j        | j        |         ¦  «        S # t          $ r: t          j        t          d|                     d¦  «        z   ¦  «        ¦  «        cY S w xY w)zQ
        Resolve a hostname by looking it up in the C{names} dictionary.
        z"FakeResolverReactor couldn't find zutf-8)r   Úsucceedr"   ÚKeyErrorÚfailr   Údecode)r   Úhostnames     r   ÚresolvezFakeResolverReactor.resolve/   sx   € ð	Ý”= ¤¨HÔ!5Ñ6Ô6Ð6øÝð 	ð 	ð 	Ý”:ÝØ8¸8¿?º?È7Ñ;SÔ;SÑSñô ñô ð ð ð ð	øøøs   ‚! ¡AA%Á$A%N)r   r   r   Ú__doc__r#   r*   r   r   r   r    r    "   s<   € € € € € ðð ðð ð ðð ð ð ð r   r    c                   ó"   — e Zd ZdZdZd„ Zd„ ZdS )ÚSOCKSv4DriverNc                 óÐ   —  ||Ž }t          ¦   «         |_        t          j        d||¦  «        |j        _        |                     ¦   «          || _        t          j        |¦  «        S )Nr   )	r   Ú	transportr   r   r   ÚconnectionMadeÚdriver_outgoingr   r%   )r   ÚhostÚportÚklassÚargsÚprotos         r   ÚconnectClasszSOCKSv4Driver.connectClassD   s]   € à��t�ˆÝ,Ñ.Ô.ˆŒÝ&Ô2°5¸$ÀÑEÔEˆŒÔØ×ÒÑÔÐØ$ˆÔÝŒ}˜UÑ#Ô#Ð#r   c                 óV   —  ||Ž }|| _         |dk    rd}t          j        d|f¦  «        S )Nr   éÒ  ú6.7.8.9)Údriver_listenr   r%   )r   r3   r4   r5   Úfactorys        r   ÚlistenClasszSOCKSv4Driver.listenClassM   s8   € à�%˜�,ˆØ$ˆÔØ�1Š9ˆ9ØˆDÝŒ}˜i¨Ð.Ñ/Ô/Ð/r   )r   r   r   r1   r;   r7   r=   r   r   r   r-   r-   =   s>   € € € € € à€Oð €Mð$ð $ð $ð0ð 0ð 0ð 0ð 0r   r-   c                   óB   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
S )ÚConnectTestszV
    Tests for SOCKS and SOCKSv4a connect requests using the L{SOCKSv4} protocol.
    c                 óÄ   — t          ¦   «         | _        t          ¦   «         | j        _        | j                             ¦   «          t          ddi¦  «        | j        _        d S ©Ns	   localhostú	127.0.0.1©r-   Úsockr   r/   r0   r    Úreactorr   s    r   ÚsetUpzConnectTests.setUp[   óN   € Ý!‘O”OˆŒ	Ý0Ñ2Ô2ˆŒ	ÔØŒ	× Ò Ñ"Ô"Ð"Ý/°¸{Ð0KÑLÔLˆŒ	ÔÐÐr   c                 óf   — | j         j        }|�"|                      |j        j        d¦  «         d S d S )Nz-Outgoing SOCKS connections need to be closed.)rD   r1   Ú
assertTruer/   r   )r   Úoutgoings     r   ÚtearDownzConnectTests.tearDowna   sF   € Ø”9Ô,ˆØÐØ�OŠOØÔ"Ô=Ø?ñô ð ð ð ð  Ðr   c           	      ó�  — | j                              t          j        dddd¦  «        t	          j        d¦  «        z   dz   dz   ¦  «         | j         j                             ¦   «         }| j         j                             ¦   «          |  	                    |t          j        ddd	d¦  «        t	          j        d¦  «        z   ¦  «         |  
                    | j         j        j        ¦  «         |                      | j         j        ¦  «         | j                              d
¦  «         |  	                    | j         j        j                             ¦   «         d
¦  «         | j         j                             d¦  «         |  	                    | j         j                             ¦   «         d¦  «         | j                              d¦  «         d S )Nú!BBHé   é   é"   ú1.2.3.4ó   fooBARó    r   éZ   ó   hello, worldó   hi thereúfake reason)rD   ÚdataReceivedÚstructÚpackÚsocketÚ	inet_atonr/   ÚvalueÚclearÚassertEqualÚassertFalser   ÚassertIsNotNoner1   ÚconnectionLost)r   Úsents     r   Útest_simplezConnectTests.test_simplei   s—  € ØŒ	×ÒÝŒK˜  1 bÑ)Ô)ÝÔ˜yÑ)Ô)ñ*àñð ññ	
ô 	
ð 	
ð ŒyÔ"×(Ò(Ñ*Ô*ˆØŒ	Ô×!Ò!Ñ#Ô#Ð#Ø×ÒØ•&”+˜f a¨¨RÑ0Ô0µ6Ô3CÀIÑ3NÔ3NÑNñ	
ô 	
ð 	
ð 	×Ò˜œÔ,ÔGÑHÔHÐHØ×Ò˜TœYÔ6Ñ7Ô7Ð7ð 	Œ	×Ò˜Ñ/Ô/Ð/Ø×Ò˜œÔ2Ô<×BÒBÑDÔDÀoÑVÔVÐVð 	Œ	Ô!×.Ò.¨{Ñ;Ô;Ð;Ø×Ò˜œÔ,×2Ò2Ñ4Ô4°kÑBÔBÐBàŒ	× Ò  Ñ/Ô/Ð/Ð/Ð/r   c           	      ó¸  — t          j        dddd¦  «        t          j        d¦  «        z   dz   dz   }t	          |¦  «        D ]}| j                             |¦  «         Œ| j        j                             ¦   «         }| j        j         	                    ¦   «          |  
                    |t          j        ddd	d¦  «        t          j        d
¦  «        z   ¦  «         |                      | j        j        j        ¦  «         |                      | j        j        ¦  «         | j                             d¦  «         |  
                    | j        j        j                             ¦   «         d¦  «         | j        j                             d¦  «         |  
                    | j        j                             ¦   «         d¦  «         | j                             d¦  «         dS )áu  
        If the destination IP address has zeros for the first three octets and
        non-zero for the fourth octet, the client is attempting a v4a
        connection.  A hostname is specified after the user ID string and the
        server connects to the address that hostname resolves to.

        @see: U{http://en.wikipedia.org/wiki/SOCKS#SOCKS_4a_protocol}
        rM   rN   rO   rP   ú0.0.0.1ó   fooBAZ ó
   localhost r   rT   rB   rU   rV   rW   N)rY   rZ   r[   r\   r   rD   rX   r/   r]   r^   r_   r`   r   ra   r1   rb   ©r   ÚclientRequestÚbyterc   s       r   Ú test_socks4aSuccessfulResolutionz-ConnectTests.test_socks4aSuccessfulResolution‚   s¶  € õ ŒK˜  1 bÑ)Ô)ÝÔ˜yÑ)Ô)ñ*àñð ñð 	õ ˜mÑ,Ô,ð 	)ð 	)ˆDØŒI×"Ò" 4Ñ(Ô(Ð(Ð(àŒyÔ"×(Ò(Ñ*Ô*ˆØŒ	Ô×!Ò!Ñ#Ô#Ð#ð 	×ÒØ•&”+˜f a¨¨RÑ0Ô0µ6Ô3CÀKÑ3PÔ3PÑPñ	
ô 	
ð 	
ð 	×Ò˜œÔ,ÔGÑHÔHÐHØ×Ò˜TœYÔ6Ñ7Ô7Ð7ð 	Œ	×Ò˜Ñ/Ô/Ð/Ø×Ò˜œÔ2Ô<×BÒBÑDÔDÀoÑVÔVÐVð 	Œ	Ô!×.Ò.¨{Ñ;Ô;Ð;Ø×Ò˜œÔ,×2Ò2Ñ4Ô4°kÑBÔBÐBàŒ	× Ò  Ñ/Ô/Ð/Ð/Ð/r   c           	      ó  — t          j        dddd¦  «        t          j        d¦  «        z   dz   dz   }t	          |¦  «        D ]}| j                             |¦  «         Œ| j        j                             ¦   «         }|  	                    |t          j        ddd	d¦  «        t          j        d
¦  «        z   ¦  «         |  
                    | j        j        j        ¦  «         |                      | j        j        ¦  «         dS )ú‹
        Failed hostname resolution on a SOCKSv4a packet results in a 91 error
        response and the connection getting closed.
        rM   rN   rO   rP   rg   rh   ó   failinghost r   é[   ú0.0.0.0N©rY   rZ   r[   r\   r   rD   rX   r/   r]   r_   rI   r   ÚassertIsNoner1   rj   s       r   Útest_socks4aFailedResolutionz)ConnectTests.test_socks4aFailedResolution°   ó  € õ ŒK˜  1 bÑ)Ô)ÝÔ˜yÑ)Ô)ñ*àñð ñð 	õ ˜mÑ,Ô,ð 	)ð 	)ˆDØŒI×"Ò" 4Ñ(Ô(Ð(Ð(ð ŒyÔ"×(Ò(Ñ*Ô*ˆØ×ÒØ•&”+˜f a¨¨QÑ/Ô/µ&Ô2BÀ9Ñ2MÔ2MÑMñ	
ô 	
ð 	
ð
 	�Š˜œ	Ô+ÔFÑGÔGÐGØ×Ò˜$œ)Ô3Ñ4Ô4Ð4Ð4Ð4r   c           	      óò  — d„ | j         _        | j                              t          j        dddd¦  «        t          j        d¦  «        z   dz   dz   ¦  «         |                      | j         j         	                    ¦   «         t          j        dd	d
d	¦  «        t          j        d¦  «        z   ¦  «         |  
                    | j         j        j        ¦  «         |                      | j         j        ¦  «         d S )Nc                 ó   — dS ©Nr   r   ©ÚcodeÚserverr3   Úusers       r   ú<lambda>z0ConnectTests.test_accessDenied.<locals>.<lambda>Î   ó   € ¸q€ r   rM   rN   rO   é’  ú10.2.3.4rR   rS   r   rq   rr   )rD   Ú	authorizerX   rY   rZ   r[   r\   r_   r/   r]   rI   r   rt   r1   r   s    r   Útest_accessDeniedzConnectTests.test_accessDeniedÍ   sí   € Ø@Ð@ˆŒ	ÔØŒ	×ÒÝŒK˜  1 dÑ+Ô+ÝÔ˜zÑ*Ô*ñ+àñð ññ	
ô 	
ð 	
ð 	×ÒØŒIÔ×%Ò%Ñ'Ô'ÝŒK˜  2 qÑ)Ô)­FÔ,<¸YÑ,GÔ,GÑGñ	
ô 	
ð 	
ð 	�Š˜œ	Ô+ÔFÑGÔGÐGØ×Ò˜$œ)Ô3Ñ4Ô4Ð4Ð4Ð4r   c                 óü  — | j                              t          j        dddd¦  «        t	          j        d¦  «        z   dz   dz   ¦  «         | j         j                             ¦   «          | j                              d¦  «         |                      | j         j	        j         
                    ¦   «         d¦  «         | j         j	        j                             ¦   «          | j         j	                             d	¦  «         d S ©
NrM   rN   rO   rP   rQ   rR   rS   rU   rW   )rD   rX   rY   rZ   r[   r\   r/   r^   r_   r1   r]   r   rb   r   s    r   Útest_eofRemotezConnectTests.test_eofRemoteÜ   sê   € ØŒ	×ÒÝŒK˜  1 bÑ)Ô)ÝÔ˜yÑ)Ô)ñ*àñð ññ	
ô 	
ð 	
ð 	Œ	Ô×!Ò!Ñ#Ô#Ð#ð 	Œ	×Ò˜Ñ/Ô/Ð/Ø×Ò˜œÔ2Ô<×BÒBÑDÔDÀoÑVÔVÐVð 	Œ	Ô!Ô+×:Ò:Ñ<Ô<Ð<ØŒ	Ô!×0Ò0°Ñ?Ô?Ð?Ð?Ð?r   c                 ó¬  — | j                              t          j        dddd¦  «        t	          j        d¦  «        z   dz   dz   ¦  «         | j         j                             ¦   «          | j                              d¦  «         |                      | j         j	        j         
                    ¦   «         d¦  «         | j                              d	¦  «         d S r…   )rD   rX   rY   rZ   r[   r\   r/   r^   r_   r1   r]   rb   r   s    r   Útest_eofLocalzConnectTests.test_eofLocalí   sÍ   € ØŒ	×ÒÝŒK˜  1 bÑ)Ô)ÝÔ˜yÑ)Ô)ñ*àñð ññ	
ô 	
ð 	
ð 	Œ	Ô×!Ò!Ñ#Ô#Ð#ð 	Œ	×Ò˜Ñ/Ô/Ð/Ø×Ò˜œÔ2Ô<×BÒBÑDÔDÀoÑVÔVÐVð 	Œ	× Ò  Ñ/Ô/Ð/Ð/Ð/r   N)r   r   r   r+   rF   rK   rd   rm   ru   rƒ   r†   rˆ   r   r   r   r?   r?   V   s�   € € € € € ðð ðMð Mð Mðð ð ð0ð 0ð 0ð2,0ð ,0ð ,0ð\5ð 5ð 5ð:5ð 5ð 5ð@ð @ð @ð"0ð 0ð 0ð 0ð 0r   r?   c                   óB   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
S )Ú	BindTestszS
    Tests for SOCKS and SOCKSv4a bind requests using the L{SOCKSv4} protocol.
    c                 óÄ   — t          ¦   «         | _        t          ¦   «         | j        _        | j                             ¦   «          t          ddi¦  «        | j        _        d S rA   rC   r   s    r   rF   zBindTests.setUp  rG   r   c           	      ó^  — | j                              t          j        dddd¦  «        t	          j        d¦  «        z   dz   dz   ¦  «         | j         j                             ¦   «         }| j         j                             ¦   «          |  	                    |t          j        ddd	d
¦  «        t	          j        d¦  «        z   ¦  «         |  
                    | j         j        j        ¦  «         |                      | j         j        ¦  «         | j         j                             d¦  «        }|                      |¦  «         t          ¦   «         |_        |                     ¦   «          | j         j                             ¦   «         }| j         j                             ¦   «          |  	                    |t          j        ddd	d¦  «        t	          j        d¦  «        z   ¦  «         |  
                    | j         j        j        ¦  «         | j                              d¦  «         |  	                    |j                             ¦   «         d¦  «         |                     d¦  «         |  	                    | j         j                             ¦   «         d¦  «         | j                              d¦  «         d S )NrM   rN   é   rP   rQ   rR   rS   r   rT   r9   r:   ©rQ   éá  rr   rU   rV   rW   )rD   rX   rY   rZ   r[   r\   r/   r]   r^   r_   r`   r   ra   r;   ÚbuildProtocolr   r0   rb   ©r   rc   Úincomings      r   rd   zBindTests.test_simple  sf  € ØŒ	×ÒÝŒK˜  1 bÑ)Ô)ÝÔ˜yÑ)Ô)ñ*àñð ññ	
ô 	
ð 	
ð ŒyÔ"×(Ò(Ñ*Ô*ˆØŒ	Ô×!Ò!Ñ#Ô#Ð#Ø×ÒØ•&”+˜f a¨¨TÑ2Ô2µVÔ5EÀiÑ5PÔ5PÑPñ	
ô 	
ð 	
ð 	×Ò˜œÔ,ÔGÑHÔHÐHØ×Ò˜TœYÔ4Ñ5Ô5Ð5ð ”9Ô*×8Ò8Ð9JÑKÔKˆØ×Ò˜XÑ&Ô&Ð&Ý/Ñ1Ô1ˆÔØ×ÒÑ!Ô!Ð!ð ŒyÔ"×(Ò(Ñ*Ô*ˆØŒ	Ô×!Ò!Ñ#Ô#Ð#Ø×ÒØ•&”+˜f a¨¨QÑ/Ô/µ&Ô2BÀ9Ñ2MÔ2MÑMñ	
ô 	
ð 	
ð 	×Ò˜œÔ,ÔGÑHÔHÐHð 	Œ	×Ò˜Ñ/Ô/Ð/Ø×Ò˜Ô+×1Ò1Ñ3Ô3°_ÑEÔEÐEð 	×Ò˜kÑ*Ô*Ð*Ø×Ò˜œÔ,×2Ò2Ñ4Ô4°kÑBÔBÐBàŒ	× Ò  Ñ/Ô/Ð/Ð/Ð/r   c           	      óˆ  — t          j        dddd¦  «        t          j        d¦  «        z   dz   dz   }t	          |¦  «        D ]}| j                             |¦  «         Œ| j        j                             ¦   «         }| j        j         	                    ¦   «          |  
                    |t          j        ddd	d
¦  «        t          j        d¦  «        z   ¦  «         |                      | j        j        j        ¦  «         |                      | j        j        ¦  «         | j        j                             d¦  «        }|                      |¦  «         t!          ¦   «         |_        |                     ¦   «          | j        j                             ¦   «         }| j        j         	                    ¦   «          |  
                    |t          j        ddd	d¦  «        t          j        d¦  «        z   ¦  «         |                      | j        j        j        d¦  «         | j                             d¦  «         |  
                    |j                             ¦   «         d¦  «         |                     d¦  «         |  
                    | j        j                             ¦   «         d¦  «         | j                             d¦  «         dS )rf   rM   rN   r�   rP   rg   rh   ri   r   rT   r9   r:   )rB   r�   rr   NrV   rW   )rY   rZ   r[   r\   r   rD   rX   r/   r]   r^   r_   r`   r   ra   r;   r�   r   r0   ÚassertIsNotrb   )r   rk   rl   rc   r’   s        r   Útest_socks4azBindTests.test_socks4a7  s‡  € õ ŒK˜  1 bÑ)Ô)ÝÔ˜yÑ)Ô)ñ*àñð ñð 	õ ˜mÑ,Ô,ð 	)ð 	)ˆDØŒI×"Ò" 4Ñ(Ô(Ð(Ð(àŒyÔ"×(Ò(Ñ*Ô*ˆØŒ	Ô×!Ò!Ñ#Ô#Ð#ð 	×ÒØ•&”+˜f a¨¨TÑ2Ô2µVÔ5EÀiÑ5PÔ5PÑPñ	
ô 	
ð 	
ð 	×Ò˜œÔ,ÔGÑHÔHÐHØ×Ò˜TœYÔ4Ñ5Ô5Ð5ð ”9Ô*×8Ò8Ð9LÑMÔMˆØ×Ò˜XÑ&Ô&Ð&Ý/Ñ1Ô1ˆÔØ×ÒÑ!Ô!Ð!ð ŒyÔ"×(Ò(Ñ*Ô*ˆØŒ	Ô×!Ò!Ñ#Ô#Ð#Ø×ÒØ•&”+˜f a¨¨QÑ/Ô/µ&Ô2BÀ9Ñ2MÔ2MÑMñ	
ô 	
ð 	
ð 	×Ò˜œÔ,ÔGÈÑNÔNÐNð 	Œ	×Ò˜{Ñ+Ô+Ð+Ø×Ò˜Ô+×1Ò1Ñ3Ô3°[ÑAÔAÐAð 	×Ò˜kÑ*Ô*Ð*Ø×Ò˜œÔ,×2Ò2Ñ4Ô4°kÑBÔBÐBàŒ	× Ò  Ñ/Ô/Ð/Ð/Ð/r   c           	      ó  — t          j        dddd¦  «        t          j        d¦  «        z   dz   dz   }t	          |¦  «        D ]}| j                             |¦  «         Œ| j        j                             ¦   «         }|  	                    |t          j        ddd	d¦  «        t          j        d
¦  «        z   ¦  «         |  
                    | j        j        j        ¦  «         |                      | j        j        ¦  «         dS )ro   rM   rN   r�   rP   rg   rh   rp   r   rq   rr   Nrs   rj   s       r   ru   z&BindTests.test_socks4aFailedResolutionr  rv   r   c           	      óò  — d„ | j         _        | j                              t          j        dddd¦  «        t          j        d¦  «        z   dz   dz   ¦  «         |                      | j         j         	                    ¦   «         t          j        dd	d
d	¦  «        t          j        d¦  «        z   ¦  «         |  
                    | j         j        j        ¦  «         |                      | j         j        ¦  «         d S )Nc                 ó   — dS ry   r   rz   s       r   r~   z-BindTests.test_accessDenied.<locals>.<lambda>�  r   r   rM   rN   r�   r€   r�   rR   rS   r   rq   rr   )rD   r‚   rX   rY   rZ   r[   r\   r_   r/   r]   rI   r   rt   r;   r   s    r   rƒ   zBindTests.test_accessDenied�  sí   € Ø@Ð@ˆŒ	ÔØŒ	×ÒÝŒK˜  1 dÑ+Ô+ÝÔ˜zÑ*Ô*ñ+àñð ññ	
ô 	
ð 	
ð 	×ÒØŒIÔ×%Ò%Ñ'Ô'ÝŒK˜  2 qÑ)Ô)­FÔ,<¸YÑ,GÔ,GÑGñ	
ô 	
ð 	
ð 	�Š˜œ	Ô+ÔFÑGÔGÐGØ×Ò˜$œ)Ô1Ñ2Ô2Ð2Ð2Ð2r   c           	      óò  — | j                              t          j        dddd¦  «        t	          j        d¦  «        z   dz   dz   ¦  «         | j         j                             ¦   «         }| j         j                             ¦   «          | j         j	         
                    d¦  «        }|                      |¦  «         t          ¦   «         |_        |                     ¦   «          | j         j                             ¦   «         }| j         j                             ¦   «          |                      |t          j        dd	d
d	¦  «        t	          j        d¦  «        z   ¦  «         |                      | j         j        j        ¦  «         | j                              d¦  «         |                      |j                             ¦   «         d¦  «         |j                             ¦   «          |                     d¦  «         d S ©NrM   rN   r�   rP   rQ   rR   rS   rŽ   r   rT   rr   rU   rW   )rD   rX   rY   rZ   r[   r\   r/   r]   r^   r;   r�   ra   r   r0   r_   r`   r   r   rb   r‘   s      r   r†   zBindTests.test_eofRemotež  sÊ  € ØŒ	×ÒÝŒK˜  1 bÑ)Ô)ÝÔ˜yÑ)Ô)ñ*àñð ññ	
ô 	
ð 	
ð ŒyÔ"×(Ò(Ñ*Ô*ˆØŒ	Ô×!Ò!Ñ#Ô#Ð#ð ”9Ô*×8Ò8Ð9JÑKÔKˆØ×Ò˜XÑ&Ô&Ð&Ý/Ñ1Ô1ˆÔØ×ÒÑ!Ô!Ð!ð ŒyÔ"×(Ò(Ñ*Ô*ˆØŒ	Ô×!Ò!Ñ#Ô#Ð#Ø×ÒØ•&”+˜f a¨¨QÑ/Ô/µ&Ô2BÀ9Ñ2MÔ2MÑMñ	
ô 	
ð 	
ð 	×Ò˜œÔ,ÔGÑHÔHÐHð 	Œ	×Ò˜Ñ/Ô/Ð/Ø×Ò˜Ô+×1Ò1Ñ3Ô3°_ÑEÔEÐEð 	Ô×)Ò)Ñ+Ô+Ð+Ø×Ò Ñ.Ô.Ð.Ð.Ð.r   c           	      óÊ  — | j                              t          j        dddd¦  «        t	          j        d¦  «        z   dz   dz   ¦  «         | j         j                             ¦   «         }| j         j                             ¦   «          | j         j	         
                    d¦  «        }|                      |¦  «         t          ¦   «         |_        |                     ¦   «          | j         j                             ¦   «         }| j         j                             ¦   «          |                      |t          j        dd	d
d	¦  «        t	          j        d¦  «        z   ¦  «         |                      | j         j        j        ¦  «         | j                              d¦  «         |                      |j                             ¦   «         d¦  «         | j                              d¦  «         d S rš   )rD   rX   rY   rZ   r[   r\   r/   r]   r^   r;   r�   ra   r   r0   r_   r`   r   rb   r‘   s      r   rˆ   zBindTests.test_eofLocal¾  s·  € ØŒ	×ÒÝŒK˜  1 bÑ)Ô)ÝÔ˜yÑ)Ô)ñ*àñð ññ	
ô 	
ð 	
ð ŒyÔ"×(Ò(Ñ*Ô*ˆØŒ	Ô×!Ò!Ñ#Ô#Ð#ð ”9Ô*×8Ò8Ð9JÑKÔKˆØ×Ò˜XÑ&Ô&Ð&Ý/Ñ1Ô1ˆÔØ×ÒÑ!Ô!Ð!ð ŒyÔ"×(Ò(Ñ*Ô*ˆØŒ	Ô×!Ò!Ñ#Ô#Ð#Ø×ÒØ•&”+˜f a¨¨QÑ/Ô/µ&Ô2BÀ9Ñ2MÔ2MÑMñ	
ô 	
ð 	
ð 	×Ò˜œÔ,ÔGÑHÔHÐHð 	Œ	×Ò˜Ñ/Ô/Ð/Ø×Ò˜Ô+×1Ò1Ñ3Ô3°_ÑEÔEÐEð 	Œ	× Ò  Ñ/Ô/Ð/Ð/Ð/r   c           	      óº  — | j                              t          j        dddd¦  «        t	          j        d¦  «        z   dz   dz   ¦  «         | j         j                             ¦   «         }| j         j                             ¦   «          | j         j	         
                    d¦  «        }|                      |¦  «         | j         j                             ¦   «         }| j         j                             ¦   «          |                      |t          j        dd	d
d	¦  «        t	          j        d¦  «        z   ¦  «         |                      | j         j        j        ¦  «         d S )NrM   rN   r�   rP   rQ   rR   rS   )z1.6.6.6iš  r   rq   rr   )rD   rX   rY   rZ   r[   r\   r/   r]   r^   r;   r�   rt   r_   rI   r   r‘   s      r   Útest_badSourcezBindTests.test_badSourceÝ  s@  € ØŒ	×ÒÝŒK˜  1 bÑ)Ô)ÝÔ˜yÑ)Ô)ñ*àñð ññ	
ô 	
ð 	
ð ŒyÔ"×(Ò(Ñ*Ô*ˆØŒ	Ô×!Ò!Ñ#Ô#Ð#ð ”9Ô*×8Ò8Ð9IÑJÔJˆØ×Ò˜(Ñ#Ô#Ð#ð ŒyÔ"×(Ò(Ñ*Ô*ˆØŒ	Ô×!Ò!Ñ#Ô#Ð#Ø×ÒØ•&”+˜f a¨¨QÑ/Ô/µ&Ô2BÀ9Ñ2MÔ2MÑMñ	
ô 	
ð 	
ð 	�Š˜œ	Ô+ÔFÑGÔGÐGÐGÐGr   N)r   r   r   r+   rF   rd   r•   ru   rƒ   r†   rˆ   r�   r   r   r   rŠ   rŠ   þ   s¡   € € € € € ðð ðMð Mð Mð%0ð %0ð %0ðN90ð 90ð 90ðv5ð 5ð 5ð:3ð 3ð 3ð/ð /ð /ð@0ð 0ð 0ð>Hð Hð Hð Hð Hr   rŠ   )r+   r[   rY   Útwisted.internetr   r   Útwisted.internet.errorr   Útwisted.protocolsr   Útwisted.python.compatr   Útwisted.testr   Útwisted.trialr	   ÚStringTransportr   r    ÚSOCKSv4r-   ÚTestCaser?   rŠ   r   r   r   ú<module>r§      s—  ððð ð
 €€€Ø €€€à +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø #Ð #Ð #Ð #Ð #Ð #Ø +Ð +Ð +Ð +Ð +Ð +Ø &Ð &Ð &Ð &Ð &Ð &Ø "Ð "Ð "Ð "Ð "Ð "ð/ð /ð /ð /ð /˜Ô6ñ /ô /ð /ðð ð ð ð ñ ô ð ð60ð 0ð 0ð 0ð 0�E”Mñ 0ô 0ð 0ð2e0ð e0ð e0ð e0ð e0�8Ô$ñ e0ô e0ð e0ðPtHð tHð tHð tHð tH�Ô!ñ tHô tHð tHð tHð tHr   