§
    ‹ŸjÈ�  ã                   ó  — 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 dlZd dlm	Z	 d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlmZmZmZ d dlmZ d dlmZmZmZmZmZ d dlmZ d dlmZ d d	l m!Z! d d
l"m#Z#m$Z$ d dlm%Z% d dl&m'Z'm(Z(m)Z)m*Z* d dl+m,Z, d dl-m.Z.m/Z/m0Z0 d dl1m2Z2m3Z3  G d„ de/¦  «        Z4 G d„ de/¦  «        Z5 G d„ de/¦  «        Z6 G d„ de/¦  «        Z7 G d„ de/¦  «        Z8 G d„ de/¦  «        Z9 G d„ de/¦  «        Z: G d„ de/¦  «        Z; G d „ d!e/¦  «        Z< G d"„ d#e/¦  «        Z= G d$„ d%e/¦  «        Z> G d&„ d'e/¦  «        Z? G d(„ d)e/¦  «        Z@ G d*„ d+e/¦  «        ZA G d,„ d-e/¦  «        ZB G d.„ d/e/¦  «        ZC G d0„ d1e'¦  «        ZD G d2„ d3ejE        ¦  «        ZF G d4„ d5ejE        ¦  «        ZG G d6„ d7ejE        ¦  «        ZH G d8„ d9ejE        ¦  «        ZI G d:„ d;ejE        ¦  «        ZJ G d<„ d=ejE        ¦  «        ZKdS )>é    N)Úclosing)ÚBytesIO)Úutf8Ú
native_strÚ
to_unicode)Úgen)ÚHTTPRequestÚHTTPResponseÚ_RequestProxyÚ	HTTPErrorÚ
HTTPClient)Ú
HTTPServer)ÚIOLoop)ÚIOStream)Úgen_logÚapp_log)Únetutil)ÚAsyncHTTPTestCaseÚbind_unused_portÚgen_testÚ	ExpectLog)Úignore_deprecation)ÚApplicationÚRequestHandlerÚurl)Úformat_timestampÚHTTPHeadersc                   ó   — e Zd Zd„ ZdS )ÚHelloWorldHandlerc                 óŽ   — |                       dd¦  «        }|                      dd¦  «         |                      d|z  ¦  «         d S )NÚnameÚworldúContent-Typeú
text/plainz	Hello %s!)Úget_argumentÚ
set_headerÚfinish)Úselfr!   s     úi/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/tornado/test/httpclient_test.pyÚgetzHelloWorldHandler.get%   sH   € Ø× Ò  ¨Ñ1Ô1ˆØ�Š˜¨Ñ5Ô5Ð5Ø�Š�K $Ñ&Ñ'Ô'Ð'Ð'Ð'ó    N©Ú__name__Ú
__module__Ú__qualname__r*   © r+   r)   r   r   $   s#   € € € € € ð(ð (ð (ð (ð (r+   r   c                   ó   — e Zd Zd„ ZdS )ÚPostHandlerc                 óˆ   — |                       d|                      d¦  «        ›d|                      d¦  «        ›�¦  «         d S )NzPost arg1: Úarg1z, arg2: Úarg2)r'   r%   ©r(   s    r)   ÚpostzPostHandler.post,   sT   € Ø�Šˆà× Ò  Ñ(Ô(Ð(Ð(¨$×*;Ò*;¸FÑ*CÔ*CÐ*CðEñ	
ô 	
ð 	
ð 	
ð 	
r+   N©r-   r.   r/   r7   r0   r+   r)   r2   r2   +   ó#   € € € € € ð
ð 
ð 
ð 
ð 
r+   r2   c                   ó   — e Zd Zd„ ZdS )Ú
PutHandlerc                 ón   — |                       d¦  «         |                       | j        j        ¦  «         d S )Nz
Put body: ©ÚwriteÚrequestÚbodyr6   s    r)   ÚputzPutHandler.put4   s1   € Ø�
Š
�<Ñ Ô Ð Ø�
Š
�4”<Ô$Ñ%Ô%Ð%Ð%Ð%r+   N)r-   r.   r/   rA   r0   r+   r)   r;   r;   3   ó#   € € € € € ð&ð &ð &ð &ð &r+   r;   c                   ó   — e Zd Zd„ ZdS )ÚRedirectHandlerc           	      óÆ   — |                       d¦  «         |                      |                      d¦  «        t          |                      dd¦  «        ¦  «        ¬¦  «         d S )Nzredirects can have bodies toor   ÚstatusÚ302)rF   )r>   Úredirectr%   Úintr6   s    r)   ÚpreparezRedirectHandler.prepare:   se   € Ø�
Š
Ð2Ñ3Ô3Ð3Ø�ŠØ×Ò˜eÑ$Ô$­S°×1BÒ1BÀ8ÈUÑ1SÔ1SÑ-TÔ-Tð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r+   N©r-   r.   r/   rJ   r0   r+   r)   rD   rD   9   r9   r+   rD   c                   ó   — e Zd Zd„ ZdS )ÚRedirectWithoutLocationHandlerc                 óX   — |                       d¦  «         |                      ¦   «          d S )Né-  )Ú
set_statusr'   r6   s    r)   rJ   z&RedirectWithoutLocationHandler.prepareB   s%   € à�Š˜ÑÔÐØ�Š‰Œˆˆˆr+   NrK   r0   r+   r)   rM   rM   A   s#   € € € € € ðð ð ð ð r+   rM   c                   ó.   — e Zd Zej        d„ ¦   «         ZdS )ÚChunkHandlerc              #   ó²   K  — |                       d¦  «         |                      ¦   «          t          j        d¦  «        V — |                       d¦  «         d S )NÚasdfç{®Gáz„?Úqwer)r>   Úflushr   Úsleepr6   s    r)   r*   zChunkHandler.getI   sQ   è è € à�
Š
�6ÑÔÐØ�
Š
‰ŒˆåŒi˜‰oŒoÐÐÐØ�
Š
�6ÑÔÐÐÐr+   N)r-   r.   r/   r   Ú	coroutiner*   r0   r+   r)   rR   rR   H   s/   € € € € € Ø„]ðð ñ „]ðð ð r+   rR   c                   ó   — e Zd Zd„ ZdS )ÚAuthHandlerc                 óP   — |                       | j        j        d         ¦  «         d S )NÚAuthorization)r'   r?   Úheadersr6   s    r)   r*   zAuthHandler.getS   s$   € Ø�Š�D”LÔ(¨Ô9Ñ:Ô:Ð:Ð:Ð:r+   Nr,   r0   r+   r)   r[   r[   R   s#   € € € € € ð;ð ;ð ;ð ;ð ;r+   r[   c                   ó   — e Zd Zd„ ZdS )ÚCountdownHandlerc                 ó¶   — t          |¦  «        }|dk    r.|                      |                      d|dz
  ¦  «        ¦  «         d S |                      d¦  «         d S )Nr   Ú	countdowné   ÚZero)rI   rH   Úreverse_urlr>   )r(   Úcounts     r)   r*   zCountdownHandler.getX   sZ   € Ý�E‘
”
ˆØ�1Š9ˆ9Ø�MŠM˜$×*Ò*¨;¸À¹	ÑBÔBÑCÔCÐCÐCÐCà�JŠJ�vÑÔÐÐÐr+   Nr,   r0   r+   r)   r`   r`   W   s#   € € € € € ðð ð ð ð r+   r`   c                   ó   — e Zd Zd„ ZdS )ÚEchoPostHandlerc                 óD   — |                       | j        j        ¦  «         d S ©Nr=   r6   s    r)   r7   zEchoPostHandler.posta   s   € Ø�
Š
�4”<Ô$Ñ%Ô%Ð%Ð%Ð%r+   Nr8   r0   r+   r)   rh   rh   `   s#   € € € € € ð&ð &ð &ð &ð &r+   rh   c                   ó   — e Zd Zd„ ZdS )ÚUserAgentHandlerc                 ól   — |                       | j        j                             dd¦  «        ¦  «         d S )Nú
User-AgentzUser agent not set)r>   r?   r^   r*   r6   s    r)   r*   zUserAgentHandler.getf   s0   € Ø�
Š
�4”<Ô'×+Ò+¨LÐ:NÑOÔOÑPÔPÐPÐPÐPr+   Nr,   r0   r+   r)   rl   rl   e   s(   € € € € € ðQð Qð Qð Qð Qr+   rl   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚContentLength304Handlerc                 ó\   — |                       d¦  «         |                      dd¦  «         d S )Né0  úContent-Lengthé*   )rP   r&   r6   s    r)   r*   zContentLength304Handler.getk   s/   € Ø�Š˜ÑÔÐØ�ŠÐ(¨"Ñ-Ô-Ð-Ð-Ð-r+   c                 ó   — d S rj   r0   r6   s    r)   Ú_clear_representation_headersz5ContentLength304Handler._clear_representation_headerso   s	   € ð 	ˆr+   N)r-   r.   r/   r*   rv   r0   r+   r)   rp   rp   j   s2   € € € € € ð.ð .ð .ðð ð ð ð r+   rp   c                   ó   — e Zd Zd„ ZdS )ÚPatchHandlerc                 óD   — |                       | j        j        ¦  «         dS )z=Return the request payload - so we can check it is being keptNr=   r6   s    r)   ÚpatchzPatchHandler.patchv   s   € à�
Š
�4”<Ô$Ñ%Ô%Ð%Ð%Ð%r+   N)r-   r.   r/   rz   r0   r+   r)   rx   rx   u   rB   r+   rx   c                   óH   — e Zd Zej        dz   Zd„ ZexZxZxZxZ	xZ
xZxZZdS )ÚAllMethodsHandler)ÚOTHERc                 ó`   — | j         j        €J ‚|                      | j         j        ¦  «         d S rj   )r?   Úmethodr>   r6   s    r)   r   zAllMethodsHandler.method~   s0   € ØŒ|Ô"Ð.Ð.Ð.Ø�
Š
�4”<Ô&Ñ'Ô'Ð'Ð'Ð'r+   N)r-   r.   r/   r   ÚSUPPORTED_METHODSr   r*   Úheadr7   rA   ÚdeleteÚoptionsrz   Úotherr0   r+   r)   r|   r|   {   sW   € € € € € Ø&Ô8¸:ÑEÐð(ð (ð (ð BHÐG€CÐGˆ$ÐG�ÐG˜ÐG˜fÐG wÐG°¸¸¸r+   r|   c                   ó   — e Zd Zd„ ZdS )ÚSetHeaderHandlerc                 ó¤   — t          |                      d¦  «        | j        j        d         ¦  «        D ]\  }}|                      ||¦  «         Œd S )NÚkÚv)ÚzipÚget_argumentsr?   Ú	argumentsr&   )r(   rˆ   r‰   s      r)   r*   zSetHeaderHandler.get†   sZ   € õ ˜×*Ò*¨3Ñ/Ô/°´Ô1GÈÔ1LÑMÔMð 	"ð 	"‰DˆAˆqØ�OŠO˜A˜qÑ!Ô!Ð!Ð!ð	"ð 	"r+   Nr,   r0   r+   r)   r†   r†   …   s#   € € € € € ð"ð "ð "ð "ð "r+   r†   c                   ó   — e Zd Zdd„ZdS )ÚInvalidGzipHandlerÚreturnNc                 óF  — |                       dd¦  «         |                       dd¦  «         d                     d„ t          d¦  «        D ¦   «         ¦  «        d d…         }t          j        |                     ¦   «         d	¬
¦  «        dz   }|                      |¦  «         d S )Nr#   r$   úContent-EncodingÚgzipÚ c              3   ó"   K  — | ]
}d |› d�V — ŒdS )zHello World ú
Nr0   )Ú.0Úis     r)   ú	<genexpr>z)InvalidGzipHandler.get.<locals>.<genexpr>•   s.   è è € ÐAÐA°Ð+ aÐ+Ð+Ð+ÐAÐAÐAÐAÐAÐAr+   i(#  i;F é   )Úcompressleveló    )r&   ÚjoinÚranger’   ÚcompressÚencoder>   )r(   Útextr@   s      r)   r*   zInvalidGzipHandler.getŽ   s•   € à�Š˜¨Ñ5Ô5Ð5Ø�ŠÐ*¨FÑ3Ô3Ð3ð �wŠwÐAÐAµU¸4±[´[ÐAÑAÔAÑAÔAÀ'À6À'ÔJˆÝŒ}˜TŸ[š[™]œ]¸!Ð<Ñ<Ô<¸vÑEˆØ�
Š
�4ÑÔÐÐÐr+   )r�   Nr,   r0   r+   r)   rŽ   rŽ   �   s(   € € € € € ð	ð 	ð 	ð 	ð 	ð 	r+   rŽ   c                   ó   — e Zd Zd„ ZdS )ÚHeaderEncodingHandlerc                 óv   — |                       | j        j        d                              d¦  «        ¦  «         d S )NÚFooú	ISO8859-1)r'   r?   r^   rŸ   r6   s    r)   r*   zHeaderEncodingHandler.get›   s2   € Ø�Š�D”LÔ(¨Ô/×6Ò6°{ÑCÔCÑDÔDÐDÐDÐDr+   Nr,   r0   r+   r)   r¢   r¢   š   s(   € € € € € ðEð Eð Eð Eð Er+   r¢   c                   ó„  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Zd„ Zd„ Zed„ ¦   «         Zd„ Zed„ ¦   «         Z ed„ ¦   «         Z!ed„ ¦   «         Z"ed „ ¦   «         Z#ed!„ ¦   «         Z$d"„ Z%d#„ Z&d$„ Z'd%„ Z(d&„ Z)d'„ Z*ed(„ ¦   «         Z+d)„ Z,d*S )+ÚHTTPClientCommonTestCasec                 ó¨  — t          t          dt          ¦  «        t          dt          ¦  «        t          dt          ¦  «        t          dt
          ¦  «        t          dt          ¦  «        t          dt          ¦  «        t          dt          ¦  «        t          dt          d	¬
¦  «        t          dt          ¦  «        t          dt          ¦  «        t          dt          ¦  «        t          dt          ¦  «        t          dt          ¦  «        t          dt          ¦  «        t          dt           ¦  «        t          dt"          ¦  «        gd¬¦  «        S )Nú/helloú/postz/putz	/redirectú/redirect_without_locationú/chunkú/authz/countdown/([0-9]+)rb   )r!   ú	/echopostú/user_agentú/304_with_content_lengthú/all_methodsú/patchz/set_headerú/invalid_gzipú/header-encodingT)r’   )r   r   r   r2   r;   rD   rM   rR   r[   r`   rh   rl   rp   r|   rx   r†   rŽ   r¢   r6   s    r)   Úget_appz HTTPClientCommonTestCase.get_app¥   s  € Ýå�HÕ/Ñ0Ô0Ý�G�[Ñ)Ô)Ý�F�JÑ'Ô'Ý�K¥Ñ1Ô1ÝÐ0Õ2PÑQÔQÝ�H�lÑ+Ô+Ý�G�[Ñ)Ô)ÝÐ)Õ+;À+ÐNÑNÔNÝ�K¥Ñ1Ô1Ý�MÕ#3Ñ4Ô4ÝÐ.Õ0GÑHÔHÝ�NÕ$5Ñ6Ô6Ý�H�lÑ+Ô+Ý�MÕ#3Ñ4Ô4Ý�OÕ%7Ñ8Ô8ÝÐ&Õ(=Ñ>Ô>ð!ð$ ð'
ñ 
ô 
ð 	
r+   c                 ó¦   — d}|                       dd|¬¦  «        }|                      |j        d¦  «         |                      |j        |¦  «         d S )Ns   some patch datar²   ÚPATCH©r   r@   éÈ   ©ÚfetchÚassertEqualÚcoder@   )r(   r@   Úresponses      r)   Útest_patch_receives_payloadz4HTTPClientCommonTestCase.test_patch_receives_payload¼   sT   € Ø!ˆØ—:’:˜h¨w¸T�:ÑBÔBˆØ×Ò˜œ¨Ñ,Ô,Ð,Ø×Ò˜œ¨Ñ-Ô-Ð-Ð-Ð-r+   c                 ó   — |                       d¦  «        }|                      |j        d¦  «         |                      |j        d         d¦  «         |                      |j        d¦  «         |j        €J ‚|                      t          |j        ¦  «        d¦  «         |                       d¦  «        }|                      |j        d¦  «         d S )	Nr©   r¹   r#   r$   ó   Hello world!r   z/hello?name=Bens
   Hello Ben!)r»   r¼   r½   r^   r@   Úrequest_timerI   ©r(   r¾   s     r)   Útest_hello_worldz)HTTPClientCommonTestCase.test_hello_worldÂ   sÁ   € Ø—:’:˜hÑ'Ô'ˆØ×Ò˜œ¨Ñ,Ô,Ð,Ø×Ò˜Ô)¨.Ô9¸<ÑHÔHÐHØ×Ò˜œ¨Ñ8Ô8Ð8ØÔ$Ð0Ð0Ð0Ø×Ò�˜XÔ2Ñ3Ô3°QÑ7Ô7Ð7à—:’:Ð/Ñ0Ô0ˆØ×Ò˜œ¨Ñ6Ô6Ð6Ð6Ð6r+   c                 ó¤   — g }|                       d|j        ¬¦  «        }|                      |dg¦  «         |                      |j        ¦  «         d S )Nr©   ©Ústreaming_callbackrÁ   )r»   Úappendr¼   ÚassertFalser@   )r(   Úchunksr¾   s      r)   Útest_streaming_callbackz0HTTPClientCommonTestCase.test_streaming_callbackÍ   sS   € àˆØ—:’:˜h¸6¼=�:ÑIÔIˆà×Ò˜ /Ð!2Ñ3Ô3Ð3Ø×Ò˜œÑ'Ô'Ð'Ð'Ð'r+   c                 ó¢   — |                       ddd¬¦  «        }|                      |j        d¦  «         |                      |j        d¦  «         d S )Nrª   ÚPOSTzarg1=foo&arg2=barr¸   r¹   s   Post arg1: foo, arg2: barrº   rÃ   s     r)   Ú	test_postz"HTTPClientCommonTestCase.test_postÕ   sQ   € Ø—:’:˜g¨fÐ;N�:ÑOÔOˆØ×Ò˜œ¨Ñ,Ô,Ð,Ø×Ò˜œÐ(DÑEÔEÐEÐEÐEr+   c                 ó  — |                       d¦  «        }|                      |j        d¦  «         g }|                       d|j        ¬¦  «        }|                      |ddg¦  «         |                      |j        ¦  «         d S )Nr¬   ó   asdfqwerrÆ   ó   asdfó   qwer)r»   r¼   r@   rÈ   rÉ   )r(   r¾   rÊ   s      r)   Útest_chunkedz%HTTPClientCommonTestCase.test_chunkedÚ   s~   € Ø—:’:˜hÑ'Ô'ˆØ×Ò˜œ¨Ñ4Ô4Ð4àˆØ—:’:˜h¸6¼=�:ÑIÔIˆØ×Ò˜ '¨7Ð!3Ñ4Ô4Ð4Ø×Ò˜œÑ'Ô'Ð'Ð'Ð'r+   c                 ó¸  ‡ — t          ¦   «         \  }}t          |¦  «        5  t          j        ˆ fd„¦   «         }t	          j        ||¦  «         ‰                      d|z  ¦  «        }|                     ¦   «          ‰                      |j	        d¦  «         ‰ j
                             |                     ¦   «         ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nc              3   ó  •K  — t          | ¦  «        }|                     d¦  «        V —}d|vr‰                     d¦  «         |                     d                     dd¦  «        ¦  «        V — |                     ¦   «          d S )Nó   

ó   HTTP/1.úrequires HTTP/1.xs7   HTTP/1.1 200 OK
Transfer-Encoding: chunked

1
1
1
2
0

ó   
ó   
©r   Ú
read_untilÚskipTestr>   ÚreplaceÚclose©ÚconnÚaddressÚstreamÚrequest_datar(   s       €r)   Úaccept_callbackzDHTTPClientCommonTestCase.test_chunked_close.<locals>.accept_callbacké   s™   øè è € õ " $™œ�Ø%+×%6Ò%6°{Ñ%CÔ%CÐCÐC�Ø \Ð1Ð1Ø—M’MÐ"5Ñ6Ô6Ð6Ø—l’lð
÷ ‚GØ˜wñô ñô ð ð ð ð —’‘”���r+   úhttp://127.0.0.1:%d/s   12)r   r   r   rY   r   Úadd_accept_handlerr»   Úrethrowr¼   r@   Úio_loopÚremove_handlerÚfileno©r(   ÚsockÚportrå   Úresps   `    r)   Útest_chunked_closez+HTTPClientCommonTestCase.test_chunked_closeã   s  ø€ õ &Ñ'Ô'‰
ˆˆdÝ�T‰]Œ]ð 	7ð 	7åŒ]ðð ð ð ñ Œ]ðõ0 Ô& t¨_Ñ=Ô=Ð=Ø—:’:Ð4°tÑ;Ñ<Ô<ˆDØ�LŠL‰NŒNˆNØ×Ò˜TœY¨Ñ.Ô.Ð.ØŒL×'Ò'¨¯ª©¬Ñ6Ô6Ð6ð?	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7ð 	7ð 	7s   ¢B CÃCÃCc                 óh   — |                       |                      ddd¬¦  «        j        d¦  «         d S )Nr­   ÚAladdinúopen sesame©Úauth_usernameÚauth_passwordó"   Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==©r¼   r»   r@   r6   s    r)   Útest_basic_authz(HTTPClientCommonTestCase.test_basic_auth  sG   € à×ÒØ�JŠJØ yÀð ñ ô äØ1ñ		
ô 	
ð 	
ð 	
ð 	
r+   c                 ój   — |                       |                      dddd¬¦  «        j        d¦  «         d S )Nr­   rò   ró   Úbasic)rõ   rö   Ú	auth_moder÷   rø   r6   s    r)   Útest_basic_auth_explicit_modez6HTTPClientCommonTestCase.test_basic_auth_explicit_mode  sN   € Ø×ÒØ�JŠJØØ'Ø+Ø!ð	 ñ ô ô
 Ø1ñ	
ô 	
ð 	
ð 	
ð 	
r+   c                 óô   — |                       |                      ddd¬¦  «        j        d¦  «         t          j        dd¦  «        }|                       |                      d|d¬¦  «        j        d	¦  «         d S )
Nr­   Útestu   123Â£rô   s   Basic dGVzdDoxMjPCow==ÚNFDu   josÃ©u   sÉ™crÉ™ts   Basic am9zw6k6c8mZY3LJmXQ=)r¼   r»   r@   ÚunicodedataÚ	normalize)r(   Úusernames     r)   Útest_basic_auth_unicodez0HTTPClientCommonTestCase.test_basic_auth_unicode  s†   € à×ÒØ�JŠJ�w¨fÀGˆJÑLÔLÔQØ%ñ	
ô 	
ð 	
õ Ô(¨°Ñ8Ô8ˆØ×ÒØ�JŠJ�w¨hÀjˆJÑQÔQÔVØ)ñ	
ô 	
ð 	
ð 	
ð 	
r+   c           	      ó  — t          t          dd¬¦  «        5  |                      t          t          f¦  «        5  |                      ddddd¬	¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )
Nzuncaught exceptionF©Úrequiredr­   rò   ró   rT   T)rõ   rö   rü   Úraise_error)r   r   ÚassertRaisesÚ
ValueErrorr   r»   r6   s    r)   Útest_unsupported_auth_modez3HTTPClientCommonTestCase.test_unsupported_auth_mode+  s  € õ •wÐ 4¸uÐEÑEÔEð 	ð 	Ø×"Ò"¥Jµ	Ð#:Ñ;Ô;ð ð Ø—
’
ØØ"+Ø"/Ø$Ø $ð ñ ô ð ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s4   ˜"A9ºA!ÁA9Á!A%	Á%A9Á(A%	Á)A9Á9A=Â A=c                 óÀ  — |                       dd¬¦  «        }|                      d|j        ¦  «         |                      |j        d                              d¦  «        ¦  «         |                       d¦  «        }|                      d|j        ¦  «         |                      |j                             d¦  «        ¦  «         |                      d	|j        ¦  «         d S )
Nz/countdown/2F©Úfollow_redirectsé.  ÚLocationz/countdown/1r¹   z/countdown/0s   Zero)r»   r¼   r½   Ú
assertTruer^   ÚendswithÚeffective_urlr@   rÃ   s     r)   Útest_follow_redirectz-HTTPClientCommonTestCase.test_follow_redirect9  sÁ   € Ø—:’:˜n¸u�:ÑEÔEˆØ×Ò˜˜hœmÑ,Ô,Ð,Ø�Š˜Ô(¨Ô4×=Ò=¸nÑMÔMÑNÔNÐNà—:’:˜nÑ-Ô-ˆØ×Ò˜˜hœmÑ,Ô,Ð,Ø�Š˜Ô.×7Ò7¸ÑGÔGÑHÔHÐHØ×Ò˜ (¤-Ñ0Ô0Ð0Ð0Ð0r+   c                 ój   — |                       dd¬¦  «        }|                      d|j        ¦  «         d S )Nr«   Tr  rO   ©r»   r¼   r½   rÃ   s     r)   Útest_redirect_without_locationz7HTTPClientCommonTestCase.test_redirect_without_locationC  s8   € Ø—:’:Ð:ÈT�:ÑRÔRˆð
 	×Ò˜˜hœmÑ,Ô,Ð,Ð,Ð,r+   c                 ól   — |                       ddd¬¦  «        }|                      |j        d¦  «         d S )Nú/redirect?url=/put&status=307ÚPUTÚhellor¸   ó   Put body: hello©r»   r¼   r@   rÃ   s     r)   Útest_redirect_put_with_bodyz4HTTPClientCommonTestCase.test_redirect_put_with_bodyK  sB   € Ø—:’:Ø+°EÀð ñ 
ô 
ˆð 	×Ò˜œÐ(:Ñ;Ô;Ð;Ð;Ð;r+   c                 ól   — |                       ddd¬¦  «        }|                      |j        d¦  «         d S )Nr  r  T©r   Úallow_nonstandard_methodss
   Put body: r  rÃ   s     r)   Útest_redirect_put_without_bodyz7HTTPClientCommonTestCase.test_redirect_put_without_bodyQ  sC   € à—:’:Ø+ØØ&*ð ñ 
ô 
ˆð
 	×Ò˜œ¨Ñ6Ô6Ð6Ð6Ð6r+   c                 ó4  — dD ]û}d|z  }|                       |dd¬¦  «        }|                      d|j        ¦  «         dD ]q}|                       ||d¬	¦  «        }|d
v r)|                      t          |¦  «        |j        ¦  «         ŒG|                      |j        t          |¦  «        dg¦  «         Œr|                       |d¬¦  «        }|                      d|j        ¦  «         |                      d|j        ¦  «         ŒüdD ]–}d}dD ]B}|                       ||d¬	¦  «        }|                      |t          |j        ¦  «        ¦  «         ŒC|                       |d¬¦  «        }|                      d|j        ¦  «         |                      d|j        ¦  «         Œ—d S )N)rO   r  i/  z$/redirect?url=/all_methods&status=%drÍ   r+   r¸   s   GET)ÚGETÚOPTIONSr  ÚDELETETr   )rO   r  ÚHEAD©r   r¹   )i3  i4  z%/redirect?url=/all_methods&status=307)r$  r%  rÍ   r  r&  )r»   r¼   r@   r   ÚassertInr½   r   )r(   rF   r   rï   r   s        r)   Útest_method_after_redirectz3HTTPClientCommonTestCase.test_method_after_redirectZ  sÃ  € à%ð 	-ð 	-ˆFØ8¸6ÑAˆCØ—:’:˜c¨&°s�:Ñ;Ô;ˆDØ×Ò˜V T¤YÑ/Ô/Ð/ð >ð Eð E�Ø—z’z #¨fÐPT�zÑUÔU�Ø˜ZÐ'Ð'Ø×$Ò$¥T¨&¡\¤\°4´9Ñ=Ô=Ð=Ð=à—M’M $¤)­d°6©l¬l¸FÐ-CÑDÔDÐDÐDð —:’:˜c¨&�:Ñ1Ô1ˆDØ×Ò˜S $¤)Ñ,Ô,Ð,Ø×Ò˜S $¤)Ñ,Ô,Ð,Ð,ð !ð 	-ð 	-ˆFØ9ˆCØEð @ð @�Ø—z’z #¨fÐPT�zÑUÔU�Ø× Ò  ­°D´IÑ)>Ô)>Ñ?Ô?Ð?Ð?Ø—:’:˜c¨&�:Ñ1Ô1ˆDØ×Ò˜S $¤)Ñ,Ô,Ð,Ø×Ò˜S $¤)Ñ,Ô,Ð,Ð,ð	-ð 	-r+   c                 óâ   — |                       d¦  «                             dd¦  «        }|                      |¦  «        }|                      dt	          j        d¦  «        z   |j        ¦  «         d S )Nr­   zhttp://zhttp://me:secret@s   Basic s	   me:secret)Úget_urlrÞ   r»   r¼   Úbase64Ú	b64encoder@   )r(   r   r¾   s      r)   Útest_credentials_in_urlz0HTTPClientCommonTestCase.test_credentials_in_urlx  sa   € Ø�lŠl˜7Ñ#Ô#×+Ò+¨IÐ7JÑKÔKˆØ—:’:˜c‘?”?ˆØ×Ò˜¥VÔ%5°lÑ%CÔ%CÑCÀXÄ]ÑSÔSÐSÐSÐSr+   c                 óX  — d}t          j        d¦  «        }|                      dd|ddi¬¦  «        }|                      |j        d         d	¦  «         |                      |j        t          |¦  «        ¦  «         |                      dd|ddi¬¦  «        }|                      |j        d         d
¦  «         |                      |j        |¦  «         |                      dd|ddid¬¦  «        }|                      |j        d         d
¦  «         |                      |j        |¦  «         d S )Nõ   Ã©s   e9r®   rÍ   r#   zapplication/blah)r   r@   r^   rs   Ú2Ú1Úfoo)r   r@   r^   Ú
user_agent)ÚbinasciiÚa2b_hexr»   r¼   r^   r@   r   )r(   Úunicode_bodyÚ	byte_bodyr¾   s       r)   Útest_body_encodingz+HTTPClientCommonTestCase.test_body_encoding}  sW  € ØˆÝÔ$ UÑ+Ô+ˆ	ð —:’:ØØØØ#Ð%7Ð8ð	 ñ 
ô 
ˆð 	×Ò˜Ô)Ð*:Ô;¸SÑAÔAÐAØ×Ò˜œ­¨\Ñ(:Ô(:Ñ;Ô;Ð;ð —:’:ØØØØ#Ð%7Ð8ð	 ñ 
ô 
ˆð 	×Ò˜Ô)Ð*:Ô;¸SÑAÔAÐAØ×Ò˜œ¨	Ñ2Ô2Ð2ð —:’:ØØØØ#Ð%7Ð8Øð ñ 
ô 
ˆð 	×Ò˜Ô)Ð*:Ô;¸SÑAÔAÐAØ×Ò˜œ¨	Ñ2Ô2Ð2Ð2Ð2r+   c                 ó¤  — |                       d¦  «        }|                      t          |j        ¦  «        t          ¦  «         |                      t          |j        d         ¦  «        t          ¦  «         |                      t          |j        ¦  «        t          ¦  «         |                      t          |j	        ¦  «        t          ¦  «         d S )Nr©   r#   )
r»   r¼   Útyper@   Úbytesr^   Ústrr½   rI   r  rÃ   s     r)   Ú
test_typesz#HTTPClientCommonTestCase.test_types¡  s    € Ø—:’:˜hÑ'Ô'ˆØ×Ò�˜hœmÑ,Ô,­eÑ4Ô4Ð4Ø×Ò�˜hÔ.¨~Ô>Ñ?Ô?ÅÑEÔEÐEØ×Ò�˜hœmÑ,Ô,­cÑ2Ô2Ð2Ø×Ò�˜hÔ4Ñ5Ô5µsÑ;Ô;Ð;Ð;Ð;r+   c                 óˆ  — |                       ddddi¬¦  «        }|                      |j        d         d¦  «         |                      |j        d¦  «         |                      t          |j        ¦  «        d¦  «         t          j        d	|j        ¬
¦  «        }|                      | 	                    ¦   «         d¦  «         d S )Nr¬   FzAccept-Encodingr’   )Údecompress_responser^   r‘   rÐ   é"   Úr)ÚmodeÚfileobj)
r»   r¼   r^   ÚassertNotEqualr@   Úlenr’   ÚGzipFileÚbufferÚread)r(   r¾   Úfs      r)   Ú	test_gzipz"HTTPClientCommonTestCase.test_gzip¨  s¾   € ð —:’:Ø¨%Ð:KÈVÐ9Tð ñ 
ô 
ˆð 	×Ò˜Ô)Ð*<Ô=¸vÑFÔFÐFØ×Ò˜HœM¨;Ñ7Ô7Ð7ð 	×Ò�˜Xœ]Ñ+Ô+¨RÑ0Ô0Ð0ÝŒM˜s¨H¬OÐ<Ñ<Ô<ˆØ×Ò˜Ÿš™œ ;Ñ/Ô/Ð/Ð/Ð/r+   c                 ó0  — t          t          dd¬¦  «        5  	 |                      d¦  «        }|                      |j        d¦  «         |                      |j        d d…         d¦  «         n# t          $ r Y nw xY wd d d ¦  «         d S # 1 swxY w Y   d S )Nz..*Malformed HTTP message.*unconsumed gzip dataFr  r³   r¹   é   s   Hello World 0
)r   r   r»   r¼   r½   r@   r   rÃ   s     r)   Útest_invalid_gzipz*HTTPClientCommonTestCase.test_invalid_gzip¹  sù   € õ ÝÐEÐPUð
ñ 
ô 
ð 	ð 	ðØŸ:š: oÑ6Ô6�Ø× Ò  ¤°Ñ4Ô4Ð4Ø× Ò  ¤¨s°¨sÔ!3Ð5GÑHÔHÐHÐHøÝð ð ð Ø�ðøøøð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s5   ˜BšAA.Á-BÁ.
A;Á8BÁ:A;Á;BÂBÂBc                 ó  ‡ ‡‡‡— g Ši Šg Šˆˆfd„}ˆˆˆ fd„}‰                       d||¬¦  «         ‰                      t          ‰¦  «        d‰¦  «         ‰                      ‰d         d¦  «         ‰                      ‰dd	g¦  «         d S )
Nc                 ó"  •— |                       d¦  «        rd S |                       d¦  «        r‰                     | ¦  «         d S | dk    rD|                      dd¦  «        \  }}|                     ¦   «         ‰|                     ¦   «         <   d S d S )NzHTTP/1.1 101úHTTP/z
ú:rc   )Ú
startswithrÈ   ÚsplitÚstripÚlower)Úheader_linerˆ   r‰   Ú
first_liner^   s      €€r)   Úheader_callbackzFHTTPClientCommonTestCase.test_header_callback.<locals>.header_callbackË  sš   ø€ Ø×%Ò% nÑ5Ô5ð /à�Ø×'Ò'¨Ñ0Ô0ð /Ø×!Ò! +Ñ.Ô.Ð.Ð.Ð.Ø Ò&Ð&Ø"×(Ò(¨¨aÑ0Ô0‘��1Ø%&§W¢W¡Y¤Y�˜Ÿš™	œ	Ñ"Ð"Ð"ð 'Ð&r+   c                 ój   •— ‰                      ‰d         d¦  «         ‰                     | ¦  «         d S )Nzcontent-typeztext/html; charset=UTF-8)r¼   rÈ   )ÚchunkrÊ   r^   r(   s    €€€r)   rÇ   zIHTTPClientCommonTestCase.test_header_callback.<locals>.streaming_callbackÕ  s9   ø€ ð ×Ò˜W ^Ô4Ð6PÑQÔQÐQØ�MŠM˜%Ñ Ô Ð Ð Ð r+   r¬   )rZ  rÇ   rc   r   zHTTP/[0-9]\.[0-9] 200.*
rÑ   rÒ   )r»   r¼   rG  ÚassertRegex)r(   rZ  rÇ   rÊ   rY  r^   s   `  @@@r)   Útest_header_callbackz-HTTPClientCommonTestCase.test_header_callbackÆ  sØ   øøøø€ Øˆ
ØˆØˆð	/ð 	/ð 	/ð 	/ð 	/ð 	/ð	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	�
Š
ØØ+Ø1ð 	ñ 	
ô 	
ð 	
ð
 	×Ò�˜Z™œ¨!¨ZÑ8Ô8Ð8Ø×Ò˜ AœÐ(FÑGÔGÐGØ×Ò˜ '¨7Ð!3Ñ4Ô4Ð4Ð4Ð4r+   c                 óì   ‡— t          ¦   «         Šˆfd„}|                      d|¬¦  «         ‰                     ¦   «         D ]3\  }}|                      ||                     ¦   «         k    ||f¦  «         Œ4d S )Nc                 ó`   •— |                       d¦  «        rd S ‰                     | ¦  «         d S )NrR  )rT  Ú
parse_line)Úliner^   s    €r)   rZ  zTHTTPClientCommonTestCase.test_header_callback_to_parse_line.<locals>.header_callbackì  s6   ø€ Ø�Š˜wÑ'Ô'ð à�Ø×Ò˜tÑ$Ô$Ð$Ð$Ð$r+   r©   )rZ  )r   r»   Úget_allr  rV  )r(   rZ  rˆ   r‰   r^   s       @r)   Ú"test_header_callback_to_parse_linez;HTTPClientCommonTestCase.test_header_callback_to_parse_lineå  s�   ø€ õ
 ‘-”-ˆð	%ð 	%ð 	%ð 	%ð 	%ð 	�
Š
�8¨_ˆ
Ñ=Ô=Ð=Ø—O’OÑ%Ô%ð 	4ð 	4‰DˆAˆqØ�OŠO˜A §¢¡¤šN¨Q°¨FÑ3Ô3Ð3Ð3ð	4ð 	4r+   c              #   óJ  K  — t          dd¬¦  «        }| j                             d|¬¦  «        }	 |                     |                      d¦  «        ¦  «        V —}|                      |j        d¦  «         |                     ¦   «          d S # |                     ¦   «          w xY w)NÚTestDefaultUserAgentF)r5  Ú
allow_ipv6T)Úforce_instanceÚdefaultsr¯   s   TestDefaultUserAgent)ÚdictÚhttp_clientÚ	__class__r»   r,  r¼   r@   rß   )r(   ri  Úclientr¾   s       r)   Útest_configure_defaultsz0HTTPClientCommonTestCase.test_configure_defaultsö  s˜   è è € åÐ#9ÀeÐLÑLÔLˆàÔ!×+Ò+¸4È(Ð+ÑSÔSˆð	Ø#Ÿ\š\¨$¯,ª,°}Ñ*EÔ*EÑFÔFÐFÐFˆHØ×Ò˜Xœ]Ð,CÑDÔDÐDà�LŠL‰NŒNˆNˆNˆNøˆF�LŠL‰NŒNˆNˆNøøøs   ±AB ÂB"c                 óÒ   — dD ]c}t           t          fD ]R} |¦   «         }||d<   |                      d|¬¦  «        }|                      |j        dd|j        ›d|›d|›�¦  «         ŒSŒdd S )	N)ÚMyUserAgentó   MyUserAgentrn   r¯   ©r^   rq  z	response=z, value=z, container=)rj  r   r»   r¼   r@   )r(   ÚvalueÚ	containerr^   rï   s        r)   Útest_header_typesz*HTTPClientCommonTestCase.test_header_types  sŸ   € ð
 5ð 
	ð 
	ˆEÝ"¥KÐ0ð 	ð 	�	Ø#˜)™+œ+�Ø(-�˜Ñ%Ø—z’z -¸�zÑAÔA�Ø× Ò Ø”IØ"�Nà”y�y�y % % %¨¨ð4ñô ð ð ð		ð
	ð 
	r+   c                 ó,  ‡ — t          ¦   «         \  }}t          |¦  «        5  t          j        ˆ fd„¦   «         }t	          j        ||¦  «         	 ‰                      d|z  ¦  «        }|                     ¦   «          ‰                      |j	        d         d¦  «         ‰ j
                             |                     ¦   «         ¦  «         n1# ‰ j
                             |                     ¦   «         ¦  «         w xY w	 d d d ¦  «         d S # 1 swxY w Y   d S )Nc              3   ó  •K  — t          | ¦  «        }|                     d¦  «        V —}d|vr‰                     d¦  «         |                     d                     dd¦  «        ¦  «        V — |                     ¦   «          d S )NrÖ   r×   rØ   s2   HTTP/1.1 200 OK
X-XSS-Protection: 1;
	mode=block

rÙ   rÚ   rÛ   rà   s       €r)   rå   zIHTTPClientCommonTestCase.test_multi_line_headers.<locals>.accept_callback  s—   øè è € å! $™œ�Ø%+×%6Ò%6°{Ñ%CÔ%CÐCÐC�Ø \Ð1Ð1Ø—M’MÐ"5Ñ6Ô6Ð6Ø—l’lð÷
 ‚GØ˜wñô ñ	ô 	ð 	ð 	ð 	ð —’‘”���r+   ræ   zX-XSS-Protectionz1; mode=block)r   r   r   rY   r   rç   r»   rè   r¼   r^   ré   rê   rë   rì   s   `    r)   Útest_multi_line_headersz0HTTPClientCommonTestCase.test_multi_line_headers  sM  ø€ õ &Ñ'Ô'‰
ˆˆdÝ�T‰]Œ]ð 	;ð 	;åŒ]ðð ð ð ñ Œ]ðõ" Ô& t¨_Ñ=Ô=Ð=ð;Ø—z’zÐ"8¸4Ñ"?Ñ@Ô@�Ø—’‘”�Ø× Ò  ¤Ð.@Ô!AÀ?ÑSÔSÐSà”×+Ò+¨D¯KªK©M¬MÑ:Ô:Ð:Ð:ø�”×+Ò+¨D¯KªK©M¬MÑ:Ô:Ð:Ð:øøøÐ:ð5	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð 	;ð 	;s*   ¢-D	ÁAC
Â-D	Ã
.C8Ã8D	Ä	DÄDc              #   óÌ   K  — | j                              |                      d¦  «        ddi¬¦  «        V —}|                      |j        d                     d¦  «        ¦  «         d S )Nr´   r¤   u   bÃ¤rrr  r¥   )rk  r»   r,  r¼   r@   rŸ   rÃ   s     r)   Útest_header_encodingz-HTTPClientCommonTestCase.test_header_encoding2  ss   è è € àÔ)×/Ò/Ø�LŠLÐ+Ñ,Ô,à�xðð 0ñ 
ô 
ð 
ð 
ˆð 	×Ò˜œ¨¯ª¸Ñ(DÔ(DÑEÔEÐEÐEÐEr+   c                 ó¨   — |                       d¦  «        }|                      |j        d¦  «         |                      |j        d         d¦  «         d S )Nr°   rr   rs   Ú42)r»   r¼   r½   r^   rÃ   s     r)   Útest_304_with_content_lengthz5HTTPClientCommonTestCase.test_304_with_content_length<  sS   € ð
 —:’:Ð8Ñ9Ô9ˆØ×Ò˜œ¨Ñ,Ô,Ð,Ø×Ò˜Ô)Ð*:Ô;¸TÑBÔBÐBÐBÐBr+   c              #   óž   K  — | j                              |                      d¦  «        ¦  «        V —}|                      |j        d¦  «         d S ©Nr©   rÁ   ©rk  r»   r,  r¼   r@   rÃ   s     r)   Útest_future_interfacez.HTTPClientCommonTestCase.test_future_interfaceE  sL   è è € àÔ)×/Ò/°·²¸XÑ0FÔ0FÑGÔGÐGÐGˆØ×Ò˜œ¨Ñ8Ô8Ð8Ð8Ð8r+   c              #   ó„  K  — |                       t          ¦  «        5 }| j                             |                      d¦  «        ¦  «        V — d d d ¦  «         n# 1 swxY w Y   |j        €J ‚|j        j        €J ‚|                      |j        j        d¦  «         |                      |j        j        j        d¦  «         d S ©Nú	/notfoundé”  )	r	  r   rk  r»   r,  Ú	exceptionr¾   r¼   r½   )r(   Úcontexts     r)   Útest_future_http_errorz/HTTPClientCommonTestCase.test_future_http_errorJ  s  è è € à×Ò�yÑ)Ô)ð 	D¨WØÔ"×(Ò(¨¯ª°kÑ)BÔ)BÑCÔCÐCÐCÐCð	Dð 	Dð 	Dñ 	Dô 	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Døøøð 	Dð 	Dð 	Dð 	DàÔ Ð,Ð,Ð,ØÔ Ô)Ð5Ð5Ð5Ø×Ò˜Ô*Ô/°Ñ5Ô5Ð5Ø×Ò˜Ô*Ô3Ô8¸#Ñ>Ô>Ð>Ð>Ð>s   �0AÁAÁ Ac              #   ó¢   K  — | j                              |                      d¦  «        d¬¦  «        V —}|                      |j        d¦  «         d S )Nr„  F)r  r…  )rk  r»   r,  r¼   r½   rÃ   s     r)   Útest_future_http_error_no_raisez8HTTPClientCommonTestCase.test_future_http_error_no_raiseS  s^   è è € àÔ)×/Ò/Ø�LŠL˜Ñ%Ô%°5ð 0ñ 
ô 
ð 
ð 
ˆð 	×Ò˜œ¨Ñ,Ô,Ð,Ð,Ð,r+   c              #   ó~  K  — |                       d¦  «        }| j                             |¦  «        V —}|                      |j        j        |¦  «         |                      t          |j        t          ¦  «        ¦  «         | j                             |j        ¦  «        V —}|                      |j	        d¦  «         d S r  )
r,  rk  r»   r¼   r?   r   r  Ú
isinstancer	   r@   )r(   r   r¾   Ú	response2s       r)   Ú test_reuse_request_from_responsez9HTTPClientCommonTestCase.test_reuse_request_from_responseZ  s­   è è € ð �lŠl˜8Ñ$Ô$ˆØÔ)×/Ò/°Ñ4Ô4Ð4Ð4ˆØ×Ò˜Ô)Ô-¨sÑ3Ô3Ð3Ø�Š�
 8Ô#3µ[ÑAÔAÑBÔBÐBØÔ*×0Ò0°Ô1AÑBÔBÐBÐBˆ	Ø×Ò˜œ¨Ñ9Ô9Ð9Ð9Ð9r+   c              #   óà  K  — |                       d¦  «        }t          |d¬¦  «        }| j                             |¦  «        V —}|                      |j        d¦  «         |                      t          t          f¦  «        5 }t          |d¬¦  «        }| j                             |¦  «        V — d d d ¦  «         n# 1 swxY w Y   |  	                    dt          |j        ¦  «        ¦  «         d S )Nr©   z	127.0.0.1©Únetwork_interfacer¹   znot-interface-or-ip)r,  r	   rk  r»   r¼   r½   r	  r
  r   r)  r>  r†  )r(   r   r?   r¾   r‡  s        r)   Útest_bind_source_ipz,HTTPClientCommonTestCase.test_bind_source_ipg  s   è è € à�lŠl˜8Ñ$Ô$ˆÝ˜c°[ÐAÑAÔAˆØÔ)×/Ò/°Ñ8Ô8Ð8Ð8ˆØ×Ò˜œ¨Ñ,Ô,Ð,à×Ò¥
­IÐ6Ñ7Ô7ð 	2¸7Ý! #Ð9NÐOÑOÔOˆGØÔ"×(Ò(¨Ñ1Ô1Ð1Ð1Ð1ð	2ð 	2ð 	2ñ 	2ô 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2øøøð 	2ð 	2ð 	2ð 	2ð 	�ŠÐ+­S°Ô1BÑ-CÔ-CÑDÔDÐDÐDÐDs   Â.B;Â;B?ÃB?c                 óâ  — dD ]A}|                       d|¬¦  «        }|                      |j        t          |¦  «        ¦  «         ŒBdD ]B}|                       d|d¬¦  «        }|                      |j        t          |¦  «        ¦  «         ŒC|                       dd¬¦  «        }|                      |j        d¦  «         |                       ddd	¬
¦  «        }|                      |j        d¦  «         d S )N©r$  r&  r%  r±   r(  ©rÍ   r  r·   r+   r¸   r'  r}   Tr   s   OTHER)r»   r¼   r@   r   )r(   r   r¾   s      r)   Útest_all_methodsz)HTTPClientCommonTestCase.test_all_methodss  sú   € Ø2ð 	:ð 	:ˆFØ—z’z .¸�zÑ@Ô@ˆHØ×Ò˜Xœ]­D°©L¬LÑ9Ô9Ð9Ð9Ø.ð 	:ð 	:ˆFØ—z’z .¸Àc�zÑJÔJˆHØ×Ò˜Xœ]­D°©L¬LÑ9Ô9Ð9Ð9Ø—:’:˜n°V�:Ñ<Ô<ˆØ×Ò˜œ¨Ñ,Ô,Ð,Ø—:’:Ø 7Àdð ñ 
ô 
ˆð 	×Ò˜œ¨Ñ1Ô1Ð1Ð1Ð1r+   c                 óÀ  — dD ]§}|                       t          ¦  «        5 }|                      d|d¬¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt	          |j        ¦  «        ¦  «         |                      d|d¬¦  «        }|                      |j        d¦  «         Œ¨dD ]°}|                       t          ¦  «        5 }|                      d|d	d¬
¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt	          |j        ¦  «        ¦  «         |dk    r5|                      d|d	dd¬¦  «         |                      |j        d¦  «         Œ±d S )Nr•  r±   T)r   r  zmust not be Noner   r¹   r”  rÑ   )r   r@   r  zmust be Noner$  )r   r@   r!  r  )r	  r
  r»   r)  r>  r†  r¼   r½   )r(   r   r‡  rï   s       r)   Útest_body_sanity_checksz0HTTPClientCommonTestCase.test_body_sanity_checks�  s  € à.ð 	-ð 	-ˆFØ×"Ò"¥:Ñ.Ô.ð L°'Ø—
’
˜>°&Àd�
ÑKÔKÐKðLð Lð Lñ Lô Lð Lð Lð Lð Lð Lð Løøøð Lð Lð Lð Là�MŠMÐ,­c°'Ô2CÑ.DÔ.DÑEÔEÐEà—:’:Ø vÈð ñ ô ˆDð ×Ò˜TœY¨Ñ,Ô,Ð,Ð,ð 3ð 	1ð 	1ˆFØ×"Ò"¥:Ñ.Ô.ð °'Ø—
’
Ø"¨6¸ÈTð ñ ô ð ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð �MŠM˜.­#¨gÔ.?Ñ*@Ô*@ÑAÔAÐAð ˜ŠˆØ—
’
Ø"Ø!Ø Ø.2Ø $ð ñ ô ð ð × Ò  ¤¨CÑ0Ô0Ð0øð#	1ð 	1s#   ŸAÁA	ÁA	Ã	C/Ã/C3	Ã6C3	c                 ó”   — |                       ddd¬¦  «        }|                     ¦   «          |                      |j        d¦  «         d S )Nz/redirect?status=307&url=/putr  s   hellor¸   r  )r»   rè   r¼   r@   rÃ   s     r)   Útest_put_307z%HTTPClientCommonTestCase.test_put_307±  sT   € Ø—:’:Ø+°EÀð ñ 
ô 
ˆð 	×ÒÑÔÐØ×Ò˜œÐ(:Ñ;Ô;Ð;Ð;Ð;r+   c                 ó´   — |                       d¦  «        }|                     ¦   «          |                      |j        d         t	          d¦  «        ¦  «         d S )Nz/set_header?k=foo&v=%E9r¤   r1  )r»   rè   r¼   r^   r   rÃ   s     r)   Útest_non_ascii_headerz.HTTPClientCommonTestCase.test_non_ascii_header¸  sR   € à—:’:Ð7Ñ8Ô8ˆØ×ÒÑÔÐØ×Ò˜Ô)¨%Ô0µ*¸XÑ2FÔ2FÑGÔGÐGÐGÐGr+   c                 ó^  — t          j         ¦   «         }|                      d¦  «        }|                     ¦   «          |                      |j        ¦  «         |j        €J ‚|                      |j        d¦  «         |                      |j        d¦  «         |                      |j        ¦  «         |j        €J ‚|                      t          |j        |z
  ¦  «        d¦  «         |j	         
                    ¦   «         D ]/\  }}|                      d|cxk    odk     nc d|› d|› �¦  «         Œ0d S )Nr©   r   g      ð?z
time_info[z] out of bounds: )Útimer»   rè   ÚassertIsNotNonerÂ   ÚassertGreaterEqualÚ
assertLessÚ
start_timeÚabsÚ	time_infoÚitemsr  )r(   r¢  r¾   rˆ   r‰   s        r)   Útest_response_timesz,HTTPClientCommonTestCase.test_response_times¾  s@  € õ ”Y‘[”[ˆ
Ø—:’:˜hÑ'Ô'ˆØ×ÒÑÔÐØ×Ò˜XÔ2Ñ3Ô3Ð3ØÔ$Ð0Ð0Ð0Ø×Ò Ô 5°qÑ9Ô9Ð9Ø�Š˜Ô-¨sÑ3Ô3Ð3ð 	×Ò˜XÔ0Ñ1Ô1Ð1ØÔ"Ð.Ð.Ð.Ø�Š�˜HÔ/°*Ñ<Ñ=Ô=¸sÑCÔCÐCàÔ&×,Ò,Ñ.Ô.ð 	Pð 	P‰DˆAˆqØ�OŠO˜A ˜L˜LšL˜L SšL˜L˜L˜LÐ*N°qÐ*NÐ*NÈ1Ð*NÐ*NÑOÔOÐOÐOð	Pð 	Pr+   c                 ó4  — |                       dd¬¦  «        }|                      |j        d¦  «         |                       dd¬¦  «        }|                      |j        d¦  «         |                       ddd¬¦  «        }|                      |j        d¦  «         d S )Nr©   r   )Úconnect_timeoutr¹   )Úrequest_timeout)r¨  r©  r  rÃ   s     r)   Útest_zero_timeoutz*HTTPClientCommonTestCase.test_zero_timeoutÒ  s‘   € Ø—:’:˜h¸�:Ñ:Ô:ˆØ×Ò˜œ¨Ñ,Ô,Ð,à—:’:˜h¸�:Ñ:Ô:ˆØ×Ò˜œ¨Ñ,Ô,Ð,à—:’:˜h¸È1�:ÑMÔMˆØ×Ò˜œ¨Ñ,Ô,Ð,Ð,Ð,r+   c              #   óp  K  — | j                              |                      d¦  «        ¦  «        }|                      |                     ¦   «         ¦  «         t          t          d¦  «        5 }t          d¦  «        D ]!}t          j	        d¦  «        V — |j
        r nŒ"d d d ¦  «         d S # 1 swxY w Y   d S )Nz/404z$Exception after Future was cancelledéd   rU   )rk  r»   r,  r  Úcancelr   r   r�   r   rX   Úlogged_stack)r(   ÚfutÚelr—   s       r)   Útest_error_after_cancelz0HTTPClientCommonTestCase.test_error_after_cancelÜ  só   è è € àÔ×$Ò$ T§\¢\°&Ñ%9Ô%9Ñ:Ô:ˆØ�Š˜Ÿ
š
™œÑ%Ô%Ð%Ý•wÐ FÑGÔGð 	È2õ
 ˜3‘Z”Zð ð �Ý”i ‘o”oÐ%Ð%Ð%Ø”?ð Ø�Eðð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Á,2B+Â+B/Â2B/c                 óþ  — dD ]ù\  }}|                       |d¬¦  «        5  |                      t          ¦  «        5  |                      dd|i¬¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |                       |d¬¦  «        5  |                      t          ¦  «        5  |                      d|di¬¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   Œúd S )N))zfoobar:Úcr)zfoo
bar:Úlf)z	foo
bar:Úcrlfrs  )r!   Úpositionr©   r4  rr  Úkey)ÚsubTestr	  r
  r»   )r(   Úheaderr!   s      r)   Útest_header_crlfz)HTTPClientCommonTestCase.test_header_crlfê  sJ  € ð
ð 
	Bð 
	B‰LˆF�Dð
 —’ 4°'�Ñ:Ô:ð Bð BØ×&Ò&¥zÑ2Ô2ð Bð BØ—J’J˜x°%¸°�JÑAÔAÐAðBð Bð Bñ Bô Bð Bð Bð Bð Bð Bð Bøøøð Bð Bð Bð BðBð Bð Bñ Bô Bð Bð Bð Bð Bð Bð Bøøøð Bð Bð Bð Bð —’ 4°%�Ñ8Ô8ð Bð BØ×&Ò&¥zÑ2Ô2ð Bð BØ—J’J˜x°&¸%°�JÑAÔAÐAðBð Bð Bñ Bô Bð Bð Bð Bð Bð Bð Bøøøð Bð Bð Bð BðBð Bð Bñ Bô Bð Bð Bð Bð Bð Bð Bøøøð Bð Bð Bð Bøð
	Bð 
	Bsj   ŸA7ºA ÁA7Á A$Á$A7Á'A$Á(A7Á7A;	Á>A;	ÂC1Â4CÃC1ÃCÃC1Ã!CÃ"C1Ã1C5	Ã8C5	N)-r-   r.   r/   rµ   r¿   rÄ   rË   rÎ   rÓ   rð   rù   rý   r  r  r  r  r  r"  r*  r/  r:  r?  rL  rO  r^  rd  r   rn  ru  rx  rz  r}  r�  rˆ  rŠ  rŽ  r’  r–  r˜  rš  rœ  r¦  rª  r±  rº  r0   r+   r)   r§   r§   ¤   sù  € € € € € ð
ð 
ð 
ð..ð .ð .ð	7ð 	7ð 	7ð(ð (ð (ðFð Fð Fð
(ð (ð (ð#7ð #7ð #7ðJ
ð 
ð 
ð	
ð 	
ð 	
ð
ð 
ð 
ðð ð ð1ð 1ð 1ð-ð -ð -ð<ð <ð <ð7ð 7ð 7ð-ð -ð -ð<Tð Tð Tð
"3ð "3ð "3ðH<ð <ð <ð0ð 0ð 0ð"ð ð ð5ð 5ð 5ð>4ð 4ð 4ð" ðð ñ „Xððð ð ð";ð ;ð ;ð@ ðFð Fñ „XðFðCð Cð Cð ð9ð 9ñ „Xð9ð ð?ð ?ñ „Xð?ð ð-ð -ñ „Xð-ð ð
:ð 
:ñ „Xð
:ð ð	Eð 	Eñ „Xð	Eð2ð 2ð 2ð1ð 1ð 1ð`<ð <ð <ðHð Hð HðPð Pð Pð(-ð -ð -ð ðð ñ „XððBð Bð Bð Bð Br+   r§   c                   ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚRequestProxyTestc                 ó’   — t          t          dd¬¦  «        t          ¦   «         ¦  «        }|                      |j        d¦  «         d S )Núhttp://example.com/r4  )r5  )r   r	   rj  r¼   r5  ©r(   Úproxys     r)   Útest_request_setz!RequestProxyTest.test_request_setü  sI   € ÝÝÐ-¸%Ð@Ñ@Ô@Å$Á&Ä&ñ
ô 
ˆð 	×Ò˜Ô)¨5Ñ1Ô1Ð1Ð1Ð1r+   c                 ó’   — t          t          d¦  «        t          d¬¦  «        ¦  «        }|                      |j        d¦  «         d S )Nr¾  r4  r�  )r   r	   rj  r¼   r‘  r¿  s     r)   Útest_default_setz!RequestProxyTest.test_default_set  sK   € ÝÝÐ-Ñ.Ô.µÀuÐ0MÑ0MÔ0Mñ
ô 
ˆð 	×Ò˜Ô0°%Ñ8Ô8Ð8Ð8Ð8r+   c                 ó–   — t          t          dd¬¦  «        t          d¬¦  «        ¦  «        }|                      |j        d¦  «         d S )Nr¾  r4  )Ú
proxy_hostÚbar)r   r	   rj  r¼   rÅ  r¿  s     r)   Útest_both_setzRequestProxyTest.test_both_set  sQ   € ÝÝÐ-¸%Ð@Ñ@Ô@Å$ÐRWÐBXÑBXÔBXñ
ô 
ˆð 	×Ò˜Ô)¨5Ñ1Ô1Ð1Ð1Ð1r+   c                 óŒ   — t          t          d¦  «        t          ¦   «         ¦  «        }|                      |j        ¦  «         d S ©Nr¾  )r   r	   rj  ÚassertIsNonerõ   r¿  s     r)   Útest_neither_setz!RequestProxyTest.test_neither_set  s;   € Ý�kÐ*?Ñ@Ô@Å$Á&Ä&ÑIÔIˆØ×Ò˜%Ô-Ñ.Ô.Ð.Ð.Ð.r+   c                 óÌ   — t          t          d¦  «        t          ¦   «         ¦  «        }|                      t          ¦  «        5  |j         d d d ¦  «         d S # 1 swxY w Y   d S rÉ  )r   r	   rj  r	  ÚAttributeErrorr4  r¿  s     r)   Útest_bad_attributez#RequestProxyTest.test_bad_attribute  s�   € Ý�kÐ*?Ñ@Ô@Å$Á&Ä&ÑIÔIˆØ×Ò�~Ñ.Ô.ð 	ð 	ØŒIˆIð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ÁAÁAÁ Ac                 ót   — t          t          d¦  «        d ¦  «        }|                      |j        ¦  «         d S rÉ  )r   r	   rÊ  rõ   r¿  s     r)   Útest_defaults_nonez#RequestProxyTest.test_defaults_none  s7   € Ý�kÐ*?Ñ@Ô@À$ÑGÔGˆØ×Ò˜%Ô-Ñ.Ô.Ð.Ð.Ð.r+   N)	r-   r.   r/   rÁ  rÃ  rÇ  rË  rÎ  rÐ  r0   r+   r)   r¼  r¼  û  sn   € € € € € ð2ð 2ð 2ð9ð 9ð 9ð2ð 2ð 2ð/ð /ð /ðð ð ð
/ð /ð /ð /ð /r+   r¼  c                   ó   — e Zd Zd„ ZdS )ÚHTTPResponseTestCasec                 óö   — t          t          d¦  «        dt          ¦   «         ¬¦  «        }t          |¦  «        }|                      |                     d¦  «        ¦  «         |                      d|¦  «         d S )Núhttp://example.comr¹   )rI  zHTTPResponse(zcode=200)r
   r	   r   r>  r  rT  r)  )r(   r¾   Úss      r)   Útest_strzHTTPResponseTestCase.test_str  so   € ÝÝÐ,Ñ-Ô-¨s½7¹9¼9ð
ñ 
ô 
ˆõ �‰MŒMˆØ�Š˜Ÿš _Ñ5Ô5Ñ6Ô6Ð6Ø�Š�j !Ñ$Ô$Ð$Ð$Ð$r+   N)r-   r.   r/   rÖ  r0   r+   r)   rÒ  rÒ    s#   € € € € € ð%ð %ð %ð %ð %r+   rÒ  c                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚSyncHTTPClientTestc                 óL  ‡ ‡‡— t          d¬¦  «        ‰ _        t          j        ¦   «         Št          j        ˆˆ fd„¦   «         Šˆˆ fd„}t          j        |¬¦  «        ‰ _        ‰ j                             ¦   «          ‰ 	                    ¦   «          t          ¦   «         ‰ _        d S )NF)Úmake_currentc                  óæ   •— t          ¦   «         \  } ‰_        t          dt          fg¦  «        }t	          |¦  «        ‰_        ‰j                             | ¦  «         ‰                     ¦   «          d S )Nú/)r   rî   r   r   r   ÚserverÚ
add_socketÚset)rí   ÚappÚeventr(   s     €€r)   Úinit_serverz-SyncHTTPClientTest.setUp.<locals>.init_server+  s^   ø€ å.Ñ0Ô0‰OˆD�$”)Ý Õ%6Ð7Ð8Ñ9Ô9ˆCÝ$ S™/œ/ˆDŒKØŒK×"Ò" 4Ñ(Ô(Ð(Ø�IŠI‰KŒKˆKˆKˆKr+   c                  ón   •— ‰j                              ‰ ¦  «         ‰j                              ¦   «          d S rj   )Úserver_ioloopÚrun_syncÚstart)râ  r(   s   €€r)   ræ  z'SyncHTTPClientTest.setUp.<locals>.start3  s5   ø€ ØÔ×'Ò'¨Ñ4Ô4Ð4ØÔ×$Ò$Ñ&Ô&Ð&Ð&Ð&r+   )Útarget)r   rä  Ú	threadingÚEventr   rY   ÚThreadÚserver_threadræ  Úwaitr   rk  )r(   ræ  rá  râ  s   ` @@r)   ÚsetUpzSyncHTTPClientTest.setUp'  s¹   øøø€ Ý#°Ð7Ñ7Ô7ˆÔÝ”Ñ!Ô!ˆå	Œð	ð 	ð 	ð 	ð 	ñ 
Œð	ð	'ð 	'ð 	'ð 	'ð 	'ð 	'õ 'Ô-°UÐ;Ñ;Ô;ˆÔØÔ× Ò Ñ"Ô"Ð"Ø�
Š
‰Œˆå%™<œ<ˆÔÐÐr+   c                 óà   ‡ — ˆ fd„}‰ j                              |¦  «         ‰ j                             ¦   «          ‰ j                             ¦   «          ‰ j                              d¬¦  «         d S )Nc                  óœ   •— ‰j                              ¦   «          t          j        ˆfd„¦   «         } ‰j                             | ¦  «         d S )Nc               3   ó    •K  — ‰j                              ¦   «         V — t          d¦  «        D ]} d V — Œ‰j                             ¦   «          d S )Né   )rÝ  Úclose_all_connectionsr�   rä  Ústop)r—   r(   s    €r)   Ú	slow_stopzCSyncHTTPClientTest.tearDown.<locals>.stop_server.<locals>.slow_stopF  s^   øè è € à”k×7Ò7Ñ9Ô9Ð9Ð9Ð9õ ˜q™œð ð �AØ�E�E�E�EØÔ"×'Ò'Ñ)Ô)Ð)Ð)Ð)r+   )rÝ  ró  r   rY   rä  Úadd_callback)rô  r(   s    €r)   Ústop_serverz0SyncHTTPClientTest.tearDown.<locals>.stop_server>  s]   ø€ ØŒK×ÒÑÔÐõ Œ]ð*ð *ð *ð *ñ Œ]ð*ð Ô×+Ò+¨IÑ6Ô6Ð6Ð6Ð6r+   T)Úall_fds)rä  rõ  rë  rœ   rk  rß   )r(   rö  s   ` r)   ÚtearDownzSyncHTTPClientTest.tearDown=  s   ø€ ð	7ð 	7ð 	7ð 	7ð 	7ð& 	Ô×'Ò'¨Ñ4Ô4Ð4ØÔ×ÒÑ!Ô!Ð!ØÔ×ÒÑ Ô Ð ØÔ× Ò ¨Ð Ñ.Ô.Ð.Ð.Ð.r+   c                 ó   — d| j         |fz  S )Nzhttp://127.0.0.1:%d%s)rî   )r(   Úpaths     r)   r,  zSyncHTTPClientTest.get_urlV  s   € Ø&¨$¬)°TÐ):Ñ:Ð:r+   c                 ó–   — | j                              |                      d¦  «        ¦  «        }|                      d|j        ¦  «         d S )NrÜ  rÁ   r€  rÃ   s     r)   Útest_sync_clientz#SyncHTTPClientTest.test_sync_clientY  sB   € ØÔ#×)Ò)¨$¯,ª,°sÑ*;Ô*;Ñ<Ô<ˆØ×Ò˜¨(¬-Ñ8Ô8Ð8Ð8Ð8r+   c                 ó  — |                       t          ¦  «        5 }| j                             |                      d¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   |                      |j        j        d¦  «         d S rƒ  )r	  r   rk  r»   r,  r¼   r†  r½   )r(   Ú	assertions     r)   Útest_sync_client_errorz)SyncHTTPClientTest.test_sync_client_error]  s¯   € ð ×Ò�yÑ)Ô)ð 	>¨YØÔ×"Ò" 4§<¢<°Ñ#<Ô#<Ñ=Ô=Ð=ð	>ð 	>ð 	>ñ 	>ô 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>øøøð 	>ð 	>ð 	>ð 	>à×Ò˜Ô,Ô1°3Ñ7Ô7Ð7Ð7Ð7s   ›.AÁAÁAN)r-   r.   r/   rí  rø  r,  rü  rÿ  r0   r+   r)   rØ  rØ  &  s_   € € € € € ð(ð (ð (ð,/ð /ð /ð2;ð ;ð ;ð9ð 9ð 9ð8ð 8ð 8ð 8ð 8r+   rØ  c                   ó   — e Zd Zd„ ZdS )ÚSyncHTTPClientSubprocessTestc                 ó$  — t          j        t          j        ddgt           j        t           j        dd¬¦  «        }|j        r0t          d¦  «         t          t          |j        ¦  «        ¦  «         |j        r|  	                    d¦  «         d S d S )Nz-czMfrom tornado.httpclient import HTTPClient; f = lambda: None; c = HTTPClient()Té   )ÚstdoutÚstderrÚcheckÚtimeoutzSTDOUT:z%subprocess produced unexpected output)
Ú
subprocessÚrunÚsysÚ
executableÚPIPEÚSTDOUTr  Úprintr   Úfail)r(   Úprocs     r)   Útest_destructor_logz0SyncHTTPClientSubprocessTest.test_destructor_logf  sœ   € õ Œ~å”ØØ_ðõ
 ”?ÝÔ$ØØð

ñ 

ô 

ˆð Œ;ð 	+Ý�)ÑÔÐÝ•*˜Tœ[Ñ)Ô)Ñ*Ô*Ð*ØŒ;ð 	?Ø�IŠIÐ=Ñ>Ô>Ð>Ð>Ð>ð	?ð 	?r+   N)r-   r.   r/   r  r0   r+   r)   r  r  e  s#   € € € € € ð?ð ?ð ?ð ?ð ?r+   r  c                   ó8   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚHTTPRequestTestCasec                 óf   — t          dddi¬¦  «        }|                      |j        ddi¦  «         d S )NrÔ  r4  rÆ  rr  )r	   r¼   r^   ©r(   r?   s     r)   Útest_headersz HTTPRequestTestCase.test_headers„  s;   € ÝÐ2¸UÀE¸NÐKÑKÔKˆØ×Ò˜œ¨5°%¨.Ñ9Ô9Ð9Ð9Ð9r+   c                 óp   — t          d¦  «        }ddi|_        |                      |j        ddi¦  «         d S )NrÔ  rÆ  Úbaz©r	   r^   r¼   r  s     r)   Útest_headers_setterz'HTTPRequestTestCase.test_headers_setterˆ  s=   € ÝÐ2Ñ3Ô3ˆØ  %˜.ˆŒØ×Ò˜œ¨5°%¨.Ñ9Ô9Ð9Ð9Ð9r+   c                 óh   — t          d¦  «        }d |_        |                      |j        i ¦  «         d S )NrÔ  r  r  s     r)   Útest_null_headers_setterz,HTTPRequestTestCase.test_null_headers_setter�  s5   € ÝÐ2Ñ3Ô3ˆØˆŒØ×Ò˜œ¨"Ñ-Ô-Ð-Ð-Ð-r+   c                 óx   — t          dd¬¦  «        }|                      |j        t          d¦  «        ¦  «         d S )NrÔ  r4  )r@   )r	   r¼   r@   r   r  s     r)   Ú	test_bodyzHTTPRequestTestCase.test_body’  s9   € ÝÐ2¸Ð?Ñ?Ô?ˆØ×Ò˜œ¥t¨E¡{¤{Ñ3Ô3Ð3Ð3Ð3r+   c                 ó‚   — t          d¦  «        }d|_        |                      |j        t          d¦  «        ¦  «         d S )NrÔ  r4  )r	   r@   r¼   r   r  s     r)   Útest_body_setterz$HTTPRequestTestCase.test_body_setter–  s;   € ÝÐ2Ñ3Ô3ˆØˆŒØ×Ò˜œ¥t¨E¡{¤{Ñ3Ô3Ð3Ð3Ð3r+   c                 óØ   — t           j                              t           j        j        ¦  «        }t	          d|¬¦  «        }|                      |j        dt          |¦  «        i¦  «         d S ©NrÔ  )Úif_modified_sincezIf-Modified-Since)ÚdatetimeÚnowÚtimezoneÚutcr	   r¼   r^   r   ©r(   Ú	http_dater?   s      r)   Útest_if_modified_sincez*HTTPRequestTestCase.test_if_modified_since›  si   € ÝÔ%×)Ò)­(Ô*;Ô*?Ñ@Ô@ˆ	ÝÐ2ÀiÐPÑPÔPˆØ×ÒØŒOÐ1Õ3CÀIÑ3NÔ3NÐOñ	
ô 	
ð 	
ð 	
ð 	
r+   c                 ó  — t          ¦   «         5  t          j                             ¦   «         }d d d ¦  «         n# 1 swxY w Y   t          d|¬¦  «        }|                      |j        dt          |¦  «        i¦  «         d S r"  )r   r$  Úutcnowr	   r¼   r^   r   r(  s      r)   Ú'test_if_modified_since_naive_deprecatedz;HTTPRequestTestCase.test_if_modified_since_naive_deprecated¢  sÂ   € ÝÑ!Ô!ð 	3ð 	3Ý Ô)×0Ò0Ñ2Ô2ˆIð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3åÐ2ÀiÐPÑPÔPˆØ×ÒØŒOÐ1Õ3CÀIÑ3NÔ3NÐOñ	
ô 	
ð 	
ð 	
ð 	
s   �:º>Á>N)
r-   r.   r/   r  r  r  r  r   r*  r-  r0   r+   r)   r  r  ƒ  s}   € € € € € ð:ð :ð :ð:ð :ð :ð
.ð .ð .ð
4ð 4ð 4ð4ð 4ð 4ð

ð 
ð 
ð
ð 
ð 
ð 
ð 
r+   r  c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚHTTPErrorTestCasec                 ó¸   — t          d¦  «        }t          j        |¦  «        }|                      ||¦  «         |                      |j        |j        ¦  «         d S )Né“  )r   ÚcopyÚassertIsNotr¼   r½   )r(   ÚeÚe2s      r)   Ú	test_copyzHTTPErrorTestCase.test_copy¬  sP   € Ý�c‰NŒNˆÝŒY�q‰\Œ\ˆØ×Ò˜˜BÑÔÐØ×Ò˜œ ¤Ñ)Ô)Ð)Ð)Ð)r+   c                 ó°   — t          d¦  «        }|                      t          |¦  «        d¦  «         |                      t          |¦  «        d¦  «         d S )Nr1  úHTTP 403: Forbidden)r   r¼   r>  Úrepr)r(   r4  s     r)   Útest_plain_errorz"HTTPErrorTestCase.test_plain_error²  sM   € Ý�c‰NŒNˆØ×Ò�˜Q™œÐ!6Ñ7Ô7Ð7Ø×Ò�˜a™œÐ"7Ñ8Ô8Ð8Ð8Ð8r+   c                 óf  — t          t          d¦  «        d¦  «        }|                      t          ¦  «        5 }|                     ¦   «          d d d ¦  «         n# 1 swxY w Y   |j        }|                      t          |¦  «        d¦  «         |                      t          |¦  «        d¦  «         d S )Nr¾  r1  r8  )	r
   r	   r	  r   rè   r†  r¼   r>  r9  )r(   rï   Úcmr4  s       r)   Útest_error_with_responsez*HTTPErrorTestCase.test_error_with_response·  sÔ   € Ý�KÐ(=Ñ>Ô>ÀÑDÔDˆØ×Ò�yÑ)Ô)ð 	¨RØ�LŠL‰NŒNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	àŒLˆØ×Ò�˜Q™œÐ!6Ñ7Ô7Ð7Ø×Ò�˜a™œÐ"7Ñ8Ô8Ð8Ð8Ð8s   ¸AÁAÁ AN)r-   r.   r/   r6  r:  r=  r0   r+   r)   r/  r/  «  sA   € € € € € ð*ð *ð *ð9ð 9ð 9ð
9ð 9ð 9ð 9ð 9r+   r/  )Lr-  r6  Ú
contextlibr   r2  r’   rè  r$  Úior   r  r
  rž  Útypingr  ÚunittestÚtornado.escaper   r   r   Útornador   Útornado.httpclientr	   r
   r   r   r   Útornado.httpserverr   Útornado.ioloopr   Útornado.iostreamr   Útornado.logr   r   r   Útornado.testingr   r   r   r   Útornado.test.utilr   Útornado.webr   r   r   Útornado.httputilr   r   r   r2   r;   rD   rM   rR   r[   r`   rh   rl   rp   rx   r|   r†   rŽ   r¢   r§   ÚTestCaser¼  rÒ  rØ  r  r  r/  r0   r+   r)   ú<module>rN     sñ  ðØ €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø 
€
€
€
Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€à 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð *Ð )Ð )Ð )Ð )Ð )Ø !Ð !Ð !Ð !Ð !Ð !Ø %Ð %Ð %Ð %Ð %Ð %Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TØ 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :ð(ð (ð (ð (ð (˜ñ (ô (ð (ð
ð 
ð 
ð 
ð 
�.ñ 
ô 
ð 
ð&ð &ð &ð &ð &�ñ &ô &ð &ð
ð 
ð 
ð 
ð 
�nñ 
ô 
ð 
ðð ð ð ð  ^ñ ô ð ðð ð ð ð �>ñ ô ð ð;ð ;ð ;ð ;ð ;�.ñ ;ô ;ð ;ð
ð ð ð ð �~ñ ô ð ð&ð &ð &ð &ð &�nñ &ô &ð &ð
Qð Qð Qð Qð Q�~ñ Qô Qð Qð
ð ð ð ð ˜nñ ô ð ð&ð &ð &ð &ð &�>ñ &ô &ð &ðHð Hð Hð Hð H˜ñ Hô Hð Hð"ð "ð "ð "ð "�~ñ "ô "ð "ð
ð 
ð 
ð 
ð 
˜ñ 
ô 
ð 
ðEð Eð Eð Eð E˜Nñ Eô Eð EðT	Bð T	Bð T	Bð T	Bð T	BÐ0ñ T	Bô T	Bð T	Bðn/ð /ð /ð /ð /�xÔ(ñ /ô /ð /ðB%ð %ð %ð %ð %˜8Ô,ñ %ô %ð %ð<8ð <8ð <8ð <8ð <8˜Ô*ñ <8ô <8ð <8ð~?ð ?ð ?ð ?ð ? 8Ô#4ñ ?ô ?ð ?ð<%
ð %
ð %
ð %
ð %
˜(Ô+ñ %
ô %
ð %
ðP9ð 9ð 9ð 9ð 9˜Ô)ñ 9ô 9ð 9ð 9ð 9r+   