Ë
    š„jèB  ã                  ó  — 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
Zd dlZd dlZd dl
mZmZmZmZmZmZmZ ddlmZmZmZmZmZmZ ddlmZmZmZmZ ddl m!Z!m"Z"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/m0Z0 ddgZ1ejd                  e3gZ4e)r,e1jk                  d«       e4jk                  e)jd                  «       d„ Z6 G d„ dejn                  jp                  «      Z9d„ Z: G d„ dejn                  jv                  «      Z< G d„ dejn                  jz                  «      Z> G d„ dejn                  j~                  «      Z@ G d„ dejn                  j~                  «      ZAd#d„ZB G d„ de«      ZCd$d„ZDd „ ZEe G d!„ d"ee«      «       ZFy)%é    )ÚannotationsN)ÚDataHandlerÚFileHandlerÚ
FTPHandlerÚHTTPCookieProcessorÚHTTPDefaultErrorHandlerÚHTTPErrorProcessorÚUnknownHandleré   )ÚInstanceStoreMixinÚadd_accept_encoding_headerÚcreate_connectionÚcreate_socks_proxy_socketÚget_redirect_methodÚmake_socks_proxy_opts)ÚFeaturesÚRequestHandlerÚResponseÚregister_rh)ÚCertificateVerifyErrorÚ	HTTPErrorÚIncompleteReadÚ
ProxyErrorÚRequestErrorÚSSLErrorÚTransportErroré   )Úbrotli)r   )Úupdate_url_query)Únormalize_urlÚselect_proxyÚgzipÚdeflateÚbrc                óZ   —  | |i |¤Ž}t        |d«      rt        |_        |�	|df|_        |S )NÚ_create_connectionr   )Úhasattrr   r&   Úsource_address)Ú
http_classr(   ÚargsÚkwargsÚhcs        úP/var/www/html/GAP/venv/lib/python3.12/site-packages/yt_dlp/networking/_urllib.pyÚ_create_http_connectionr.   5   s<   € Ù	�TÐ	$˜VÑ	$€BäˆrÐ'Ô(Ü 1ˆÔàÐ!Ø+¨QÐ/ˆÔà€Ió    c                  óˆ   ‡ — e Zd ZdZdˆ fd„	Zed„ «       Zd„ Zd„ Zed„ «       Z	ed„ «       Z
ed„ «       Zˆ fd	„Zd
„ ZeZeZˆ xZS )ÚHTTPHandlera¦  Handler for HTTP requests and responses.

    This class, when installed with an OpenerDirector, automatically adds
    the standard headers to every HTTP request and handles gzipped, deflated and
    brotli responses from web servers.

    Part of this code was copied from:

    http://techknack.net/python-urllib2-handlers/

    Andrew Rowls, the author of that code, agreed to release it to the
    public domain.
    c                ó@   •— t        ‰| �  |i |¤Ž || _        || _        y ©N)ÚsuperÚ__init__Ú_source_addressÚ_context)ÚselfÚcontextr(   r*   r+   Ú	__class__s        €r-   r5   zHTTPHandler.__init__P   s$   ø€ Ü‰Ñ˜$Ð) &Ò)Ø-ˆÔØˆ�r/   c                ó^   — | }|j                   j                  dd «      }|rt        ||«      }|S )NúYtdl-socks-proxy)ÚheadersÚpopÚmake_socks_conn_class)ÚbaseÚreqÚ
conn_classÚsocks_proxys       r-   Ú_make_conn_classzHTTPHandler._make_conn_classU   s1   € àˆ
Ø—k‘k—o‘oÐ&8¸$Ó?ˆÙÜ.¨z¸;ÓGˆJØÐr/   c                óÀ   — | j                  t        j                  j                  |«      }| j	                  t        j                  t        || j                  «      |«      S r3   )	rD   ÚhttpÚclientÚHTTPConnectionÚdo_openÚ	functoolsÚpartialr.   r6   ©r8   rA   rB   s      r-   Ú	http_openzHTTPHandler.http_open]   sO   € Ø×*Ñ*¬4¯;©;×+EÑ+EÀsÓKˆ
Ø�|‰|œI×-Ñ-Ü# Z°×1EÑ1EóGØHKóMð 	Mr/   c                óØ   — | j                  t        j                  j                  |«      }| j	                  t        j                  t        || j                  «      || j                  ¬«      S )N)r9   )
rD   rF   rG   ÚHTTPSConnectionrI   rJ   rK   r.   r6   r7   rL   s      r-   Ú
https_openzHTTPHandler.https_openb   sY   € Ø×*Ñ*¬4¯;©;×+FÑ+FÈÓLˆ
Ø�|‰|Ü×ÑÜ'¨°T×5IÑ5IóKà˜Ÿ™ð ó (ð 	(r/   c                ó²   — | s| S 	 t        j                  | t         j                   «      S # t         j                  $ r t        j                  | «      cY S w xY wr3   )ÚzlibÚ
decompressÚ	MAX_WBITSÚerror©Údatas    r-   r#   zHTTPHandler.deflatei   sH   € áØˆKð	)Ü—?‘? 4¬$¯.©.¨Ó9Ð9øÜ�z‰zò 	)Ü—?‘? 4Ó(Ò(ð	)ús   †$+ «(AÁAc                ó4   — | s| S t        j                  | «      S r3   )r   rS   rV   s    r-   r   zHTTPHandler.brotlir   s   € áØˆKÜ× Ñ  Ó&Ð&r/   c                óZ   — | s| S t        j                  | t         j                  dz  ¬«      S )Né   )Úwbits)rR   rS   rT   rV   s    r-   ÚgzzHTTPHandler.gzx   s&   € ñ ØˆKÜ�‰˜t¬4¯>©>¸BÑ+>Ô?Ð?r/   c                ó|   •— |j                  «       }t        |«      }||k7  rt        ||¬«      }t        ‰| �  |«      S )N)Úurl)Úget_full_urlr    Úupdate_Requestr4   Údo_request_)r8   rA   r^   Úurl_escapedr:   s       €r-   Úhttp_requestzHTTPHandler.http_request€   sC   ø€ ð ×ÑÓ ˆÜ# CÓ(ˆð �+ÒÜ  ¨+Ô6ˆCä‰wÑ" 3Ó'Ð'r/   c                ó`  — |}d }d„ t        |j                  j                  dd«      j                  d«      «      D «       D ]„  }|dk(  r$| j	                  |xs |j                  «       «      }Œ,|dk(  r$| j                  |xs |j                  «       «      }ŒU|dk(  sŒ[t        sŒb| j                  |xs |j                  «       «      }Œ† |�dt        j                  j                  t        j                  |«      |j                  |j                  |j                  «      }|j                  |_        d|j                  cxk  rd	k  rln |S |j                  j                  d
«      }|rK|j!                  d«      j#                  «       }t%        |«      }||k7  r|j                  d
= ||j                  d
<   |S )Nc              3  ó<   K  — | ]  }|j                  «       –— Œ y ­wr3   )Ústrip)Ú.0Úes     r-   ú	<genexpr>z,HTTPHandler.http_response.<locals>.<genexpr>™   s   è ø€ Òj q˜Ÿ™ŸÑjùs   ‚zContent-encodingÚ ú,r"   r#   r$   i,  i�  ÚLocationz
iso-8859-1)Úreversedr=   ÚgetÚsplitr\   Úreadr#   r   ÚurllibÚrequestÚ
addinfourlÚioÚBytesIOr^   ÚcodeÚmsgÚencodeÚdecoder    )r8   rA   ÚrespÚold_respÚdecoded_responseÚencodingÚlocationÚlocation_escapeds           r-   Úhttp_responsezHTTPHandler.http_response’   s|  € Øˆð
  ÐÙj¬H°T·\±\×5EÑ5EÐFXÐZ\Ó5]×5cÑ5cÐdgÓ5hÓ,iÔjò 	PˆHØ˜6Ò!Ø#'§7¡7Ð+;Ò+J¸t¿y¹y»{Ó#KÑ Ø˜YÒ&Ø#'§<¡<Ð0@Ò0OÀDÇIÁIÃKÓ#PÑ Ø˜TÓ!¦fØ#'§;¡;Ð/?Ò/NÀ4Ç9Á9Ã;Ó#OÑ ð	Pð Ð'Ü—>‘>×,Ñ,¬R¯Z©ZÐ8HÓ-IÈ8×K[ÑK[Ð]e×]iÑ]iÐks×kxÑkxÓyˆDØ—|‘|ˆDŒHð �$—)‘)Ô!˜cÔ!ð ˆð —|‘|×'Ñ'¨
Ó3ˆHÙà#Ÿ?™?¨<Ó8×?Ñ?ÓA�Ü#0°Ó#:Ð ØÐ/Ò/ØŸ™ ZÐ0Ø/?�D—L‘L Ñ,Øˆr/   )NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r5   ÚstaticmethodrD   rM   rP   r#   r   r\   rc   r€   Úhttps_requestÚhttps_responseÚ__classcell__©r:   s   @r-   r1   r1   A   s€   ø„ ñõ ð
 ñó ðòMò
(ð ñ)ó ð)ð ñ'ó ð'ð
 ñ@ó ð@ô(ò$ð> !€MØ"„Nr/   r1   c                ó¸   ‡— t        | t        j                  j                  t        j                  j                  f«      sJ ‚t        |«      Š G ˆfd„d| «      }|S )Nc                  ó   •— e Zd ZeZˆ fd„Zy)ú.make_socks_conn_class.<locals>.SocksConnectionc           
     óz  •— t        ‰d   ‰d   f| j                  | j                  t        j                  t
        | j                  | j                  f‰«      ¬«      | _        t        | t        j                  j                  «      r7| j                  j                  | j                  | j                  ¬«      | _        y y )NÚaddrÚport)Útimeoutr(   Ú_create_socket_func)Úserver_hostname)r   r�   r(   rJ   rK   r   Úhostr�   ÚsockÚ
isinstancerF   rG   rO   r7   Úwrap_socket)r8   Ú
proxy_argss    €r-   Úconnectz6make_socks_conn_class.<locals>.SocksConnection.connect¾   s–   ø€ Ü)Ø˜FÑ# Z°Ñ%7Ð8ØŸ™Ø#×2Ñ2Ü$-×$5Ñ$5Ü-°·	±	¸4¿9¹9Ð/EÀzó%Sô	TˆDŒIô ˜$¤§¡× ;Ñ ;Ô<Ø ŸM™M×5Ñ5°d·i±iÐQU×QZÑQZÐ5Ó[�•	ð =r/   N)r�   r‚   rƒ   r   r&   r˜   )r—   s   €r-   ÚSocksConnectionrŒ   »   s   ø„ Ø.Ðõ	\r/   r™   )Ú
issubclassrF   rG   rH   rO   r   )Ú
base_classrC   r™   r—   s      @r-   r?   r?   µ   s[   ø€ Ü�jÜ�‰×"Ñ"¤D§K¡K×$?Ñ$?ð#Aô Bð Bð Bô ' {Ó3€Jö\˜*ô \ð Ðr/   c                  ób   — e Zd ZdZej
                  j                  j                  xZxZ	xZ
Zd„ Zy)ÚRedirectHandlera£  YoutubeDL redirect handler

    The code is based on HTTPRedirectHandler implementation from CPython [1].

    This redirect handler fixes and improves the logic to better align with RFC7261
     and what browsers tend to do [2][3]

    1. https://github.com/python/cpython/blob/master/Lib/urllib/request.py
    2. https://datatracker.ietf.org/doc/html/rfc7231
    3. https://github.com/python/cpython/issues/91306
    c                óð  — |dvr-t         j                  j                  |j                  ||||«      ‚|j                  }dg}t        |j                  «       |«      }	|	|j                  «       k7  rd }|j                  ddg«       |j                  j                  «       D �
�ci c]  \  }
}|
j                  «       |vsŒ|
|“Œ }}
}t         j                  j                  |||j                  d|	|¬«      S c c}}
w )N)i-  i.  i/  i3  i4  ÚCookiezContent-LengthzContent-TypeT)r=   Úorigin_req_hostÚunverifiableÚmethodrW   )rq   rU   r   Úfull_urlrW   r   Ú
get_methodÚextendr=   ÚitemsÚtitlerr   ÚRequestr    )r8   rA   Úfprv   rw   r=   ÚnewurlÚnew_dataÚremove_headersÚ
new_methodÚkÚvÚnew_headerss                r-   Úredirect_requestz RedirectHandler.redirect_requestÚ   sç   € ØÐ0Ñ0Ü—,‘,×(Ñ(¨¯©°t¸SÀ'È2ÓNÐNà—8‘8ˆð
 #˜ˆä(¨¯©Ó)9¸4Ó@ˆ
à˜Ÿ™Ó)Ò)ØˆHØ×!Ñ!Ð#3°^Ð"DÔEà(+¯©×(9Ñ(9Ó(;×_¡  1¸q¿w¹w»yÐP^Ò?^�q˜!‘tÐ_ˆÑ_ä�~‰~×%Ñ%Ø˜K¸×9LÑ9LØ j°xð &ó Að 	Aùó `s   Â C2Â;C2N)r�   r‚   rƒ   r„   rq   rr   ÚHTTPRedirectHandlerÚhttp_error_302Úhttp_error_301Úhttp_error_303Úhttp_error_307Úhttp_error_308r±   © r/   r-   r�   r�   Ë   s5   „ ñ
ð IOÏÉ×HjÑHj×HyÑHyÐy€NÐy�^Ðy n°~óAr/   r�   c                  ó   — e Zd ZdZdd„Zd„ Zy)ÚProxyHandleréd   Nc                óZ   — || _         dD ]  }t        | |› d�| j                  fd„«       Œ! y )N)rF   ÚhttpsÚftpÚ_openc                ó   —  || «      S r3   r¸   )ÚrÚmeths     r-   ú<lambda>z'ProxyHandler.__init__.<locals>.<lambda>ù   s   € ÉDÐQRËG€ r/   )ÚproxiesÚsetattrÚ
proxy_open)r8   rÄ   Úschemes      r-   r5   zProxyHandler.__init__õ   s4   € ØˆŒà.ò 	UˆFÜ�D˜V˜H EÐ*¸4¿?¹?Ò,SÕTñ	Ur/   c                ó@  — t        |j                  «       | j                  «      }|€y t        j                  j                  |«      j                  j                  «       dv r|j                  d|«       y t        j                  j                  j                  | ||d «      S )N)Úsocks4Úsocks4aÚsocks5Úsocks5hr<   )r!   r_   rÄ   rq   ÚparseÚurlparserÇ   ÚlowerÚ
add_headerrr   rº   rÆ   )r8   rA   Úproxys      r-   rÆ   zProxyHandler.proxy_openû   s‚   € Ü˜S×-Ñ-Ó/°·±Ó>ˆØˆ=ØÜ�<‰<× Ñ  Ó'×.Ñ.×4Ñ4Ó6Ð:dÑdØ�N‰NÐ-¨uÔ5àÜ�~‰~×*Ñ*×5Ñ5Ø�#�u˜dó$ð 	$r/   r3   )r�   r‚   rƒ   Úhandler_orderr5   rÆ   r¸   r/   r-   rº   rº   ò   s   „ Ø€MóUó	$r/   rº   c                  ó   — e Zd Zd„ Zy)Ú
PUTRequestc                 ó   — y)NÚPUTr¸   ©r8   s    r-   r¤   zPUTRequest.get_method  s   € Ør/   N©r�   r‚   rƒ   r¤   r¸   r/   r-   rÔ   rÔ     s   „ ór/   rÔ   c                  ó   — e Zd Zd„ Zy)ÚHEADRequestc                 ó   — y)NÚHEADr¸   r×   s    r-   r¤   zHEADRequest.get_method  s   € Ør/   NrØ   r¸   r/   r-   rÚ   rÚ     s   „ ór/   rÚ   c                óÀ  — | j                   j                  «       }|j                  |xs i «       |�|n| j                  }t	        |xs | j                  «       |«      }| j                  «       }|dk(  rt        }	n&|dk(  rt        }	nt        j                  j                  }	 |	|||| j                  | j                  ¬«      }
t        | d«      r| j                  |
_        |
S )NrÜ   rÖ   )rW   r=   r    r¡   r�   )r=   ÚcopyÚupdaterW   r   r_   r¤   rÚ   rÔ   rq   rr   r¨   r    r¡   r'   r�   )rA   r^   rW   r=   ÚqueryÚreq_headersÚreq_dataÚreq_urlÚreq_get_methodÚreq_typeÚnew_reqs              r-   r`   r`     sÄ   € Ø—+‘+×"Ñ"Ó$€KØ×Ñ�w’} "Ô%ØÐ'‰t¨S¯X©X€HÜ˜sÒ8 c×&6Ñ&6Ó&8¸%Ó@€GØ—^‘^Ó%€NØ˜ÒÜ‰Ø	˜5Ò	 Ü‰ä—>‘>×)Ñ)ˆÙØ�h¨Ø×+Ñ+¸#×:JÑ:JôL€Gô ˆs�IÔØŸ+™+ˆŒØ€Nr/   c                  ó,   ‡ — e Zd ZdZdˆ fd„Zdd„Zˆ xZS )ÚUrllibResponseAdapterzX
    HTTP Response adapter class for urllib addinfourl and http.client.HTTPResponse
    c                ó¦   •— t         ‰| �  ||j                  |j                  t	        |dd «      xs |j                  «       t	        |dd «      ¬«       y )NÚstatusÚreason)r©   r=   r^   rê   rë   )r4   r5   r=   r^   ÚgetattrÚgetcode)r8   Úresr:   s     €r-   r5   zUrllibResponseAdapter.__init__*  sL   ø€ ô
 	‰ÑØ˜CŸK™K¨S¯W©WÜ˜3 ¨$Ó/Ò@°3·;±;³=ÌÐQTÐV^Ð`dÓIeð 	õ 	gr/   c                óê  — | j                   ry	 | j                  j                  |«      }t        | j                  dd «      }t	        | j                  t
        j                  j                  «      r|€| j                  «        |S t	        | j                  t        j                  j                  «      r†|�„t	        |t        j                  «      r<|j                  «       t        |j!                  «       «      k\  r>| j                  «        |S t	        |t        j"                  «      r|€| j                  «        |S |�|j                   r| j                  «        |S # t$        $ r}t'        |«       |‚d }~ww xY w)Nr/   r©   )Úclosedr©   rp   rì   r•   rF   rG   ÚHTTPResponseÚcloserq   Úresponsers   rt   ru   ÚtellÚlenÚ	getbufferÚBufferedReaderÚ	ExceptionÚhandle_response_read_exceptions)r8   ÚamtrW   Ú
underlyingrh   s        r-   rp   zUrllibResponseAdapter.read3  s  € Ø�;Š;Øð	Ø—7‘7—<‘< Ó$ˆDÜ  §¡¨$°Ó5ˆJÜ˜$Ÿ'™'¤4§;¡;×#;Ñ#;Ô<ÀÐASà—
‘
”ð ˆKô ˜DŸG™G¤V§_¡_×%?Ñ%?Ô@ÀZÐE[ä˜j¬"¯*©*Ô5à!—‘Ó(¬C°
×0DÑ0DÓ0FÓ,GÒGØŸ
™
œð ˆKô   
¬B×,=Ñ,=Ô>À3À;ð —J‘J”Lð ˆKð Ð'¨J×,=Ò,=à—
‘
”ØˆKøÜò 	Ü+¨AÔ.ØˆGûð	ús+   �A3E ÂBE Ä	-E Ä7E Å	E2Å E-Å-E2)rî   z5http.client.HTTPResponse | urllib.response.addinfourlr3   )r�   r‚   rƒ   r„   r5   rp   rˆ   r‰   s   @r-   rè   rè   %  s   ø„ ñõg÷r/   rè   c                ó    — t        | t        j                  «      sy t        | t        j                  «      rt	        | ¬«      | ‚t        | ¬«      | ‚)N©Úcause)r•   Ússlr   ÚSSLCertVerificationErrorr   ©rh   s    r-   Úhandle_sslerrorr  O  s=   € Ü�aœŸ™Ô&ØÜ�!”S×1Ñ1Ô2Ü$¨1Ô-°1Ð4Ü
˜Ô
 Ð"r/   c                óv  — t        | t        j                  j                  «      r,t        t	        | j
                  «      | | j                  ¬«      | ‚t        | t        j                  «      rt        | «       y t        | t        t        t        j                  j                  gt        ¢­«      rt        | ¬«      | ‚y )N)rK   rþ   Úexpectedrý   )r•   rF   rG   r   rõ   rK   r  rÿ   r   r  ÚOSErrorÚEOFErrorÚHTTPExceptionÚCONTENT_DECODE_ERRORSr   r  s    r-   rù   rù   W  s~   € Ü�!”T—[‘[×/Ñ/Ô0Ü¤S¨¯©£^¸1ÀqÇzÁzÔRÐXYÐYÜ	�A”s—|‘|Ô	$Ü˜ÕÜ	�Aœ¤¬4¯;©;×+DÑ+DÐ]ÔG\Ñ]Ô	^ä 1Ô%¨1Ð,ð 
_r/   c                  ó€   ‡ — e Zd ZdZdZej                  ej                  fZdZ	ddœdˆ fd„Z
ˆ fd„Zdd„Zd	„ Zd
„ Zˆ xZS )ÚUrllibRH)rF   r½   rW   r¾   )rF   rÉ   rÊ   rË   rÌ   rq   F)Úenable_file_urlsc               óx   •— t        ‰| �  di |¤Ž || _        | j                  rg | j                  ¢d‘­| _        y y )NÚfiler¸   )r4   r5   r  Ú_SUPPORTED_URL_SCHEMES)r8   r  r+   r:   s      €r-   r5   zUrllibRH.__init__h  sA   ø€ Ü‰ÑÑ"˜6Ò"Ø 0ˆÔØ× Ò Ø*P¨D×,GÑ,GÐ*PÈÑ*PˆDÕ'ð !r/   c                ó�   •— t         ‰| �  |«       |j                  dd «       |j                  dd «       |j                  dd «       y )NÚ	cookiejarr�   Ú
legacy_ssl)r4   Ú_check_extensionsr>   )r8   Ú
extensionsr:   s     €r-   r  zUrllibRH._check_extensionsn  s:   ø€ Ü‰Ñ! *Ô-Ø�‰�{ DÔ)Ø�‰�y $Ô'Ø�‰�| TÕ*r/   c           
     óè  — t         j                  j                  «       }t        |«      t	        t        t        | j                  «      «      | j                  |¬«      | j                  ¬«      t        |«      t        «       t        «       t        «       t        «       t        «       t!        «       g	}| j"                  r|j%                  t'        «       «       |D ]  }|j)                  |«       Œ g |_        |S )N)Úlegacy_ssl_support)Ú
debuglevelr9   r(   )rq   rr   ÚOpenerDirectorrº   r1   ÚintÚboolÚverboseÚ_make_sslcontextr(   r   r   r
   r   r   r	   r�   r  Úappendr   Úadd_handlerÚ
addheaders)r8   rÄ   r  r  ÚopenerÚhandlersÚhandlers          r-   Ú_create_instancezUrllibRH._create_instancet  sÈ   € Ü—‘×.Ñ.Ó0ˆä˜Ó!ÜÜœt D§L¡LÓ1Ó2Ø×-Ñ-ÐASÐ-ÓTØ#×2Ñ2ô4ô   	Ó*Ü‹MÜÓÜ#Ó%Ü‹LÜÓ ÜÓð
ˆð × Ò Ø�O‰OœK›MÔ*àò 	(ˆGØ×Ñ˜wÕ'ð	(ð ˆÔØˆr/   c                ó$   — t        |t        «       y r3   )r   ÚSUPPORTED_ENCODINGS)r8   Ú_r=   s      r-   Ú_prepare_headerszUrllibRH._prepare_headers‘  s   € Ü" 7Ô,?Õ@r/   c                ó|  — | j                  |«      }t        j                  j                  |j                  |j
                  ||j                  ¬«      }| j                  | j                  |«      | j                  |«      |j                  j                  d«      ¬«      }	 |j                  || j                  |«      ¬«      }t3        |«      S # t        j                  j                  $ r‹}t!        |j"                  t$        j&                  j(                  t        j*                  j,                  f«      r=d|j.                  _        t        t3        |j"                  «      dt5        |«      v ¬«      |‚‚ d }~wt        j                  j6                  $ ra}|j8                  }dt5        |«      j;                  «       v st!        |t<        «      rt?        |¬	«      |‚tA        |«       tC        |¬	«      |‚d }~wt$        j&                  jD                  tF        f$ r}tI        |¬	«      |‚d }~wtJ        $ r}tA        |«       ‚ d }~ww xY w)
N)r^   rW   r=   r¢   r  )rÄ   r  r  )r�   Tzredirect error)Úredirect_loopztunnel connection failedrý   )&Ú_get_headersrq   rr   r¨   r^   rW   r¢   Ú_get_instanceÚ_get_proxiesÚ_get_cookiejarr  rn   ÚopenÚ_calculate_timeoutrU   r   r•   r©   rF   rG   rñ   ró   rs   Ú_closerÚclose_calledrè   ÚstrÚURLErrorrë   rÏ   ÚSocksProxyErrorr   rù   r   Ú
InvalidURLÚ
ValueErrorr   rø   )r8   rr   r=   Ú
urllib_reqr  rî   rh   rþ   s           r-   Ú_sendzUrllibRH._send”  sÌ  € Ø×#Ñ# GÓ,ˆÜ—^‘^×+Ñ+Ø—‘Ø—‘ØØ—>‘>ð	 ,ó 
ˆ
ð ×#Ñ#Ø×%Ñ% gÓ.Ø×)Ñ)¨'Ó2Ø&×1Ñ1×5Ñ5°lÓCð $ó 
ˆð
	Ø—+‘+˜j°$×2IÑ2IÈ'Ó2R�+ÓSˆCô4 % SÓ)Ð)øô3 �|‰|×%Ñ%ò 	Ü˜!Ÿ$™$¤§¡×!9Ñ!9¼6¿?¹?×;UÑ;UÐ VÔWà)-�—	‘	Ô&ÜÔ 5°a·d±dÓ ;ÐK[Ô_bÐcdÓ_eÐKeÔfÐlmÐmØûÜ�|‰|×$Ñ$ò 	1Ø—H‘HˆEð *¬S°«Z×-=Ñ-=Ó-?Ñ?Ä:ÈeÔUdÔCeÜ  qÔ)¨qÐ0ä+¨EÔ2Ü  qÔ)¨qÐ0ûÜ—‘×&Ñ&¬
Ð3ò 	/ô
  QÔ'¨QÐ.ûÜò 	Ü+¨AÔ.Øûð	ús>   Â"C ÃH;Ã)BE/Å/ H;ÆAG+Ç+&H;ÈHÈH;È*H6È6H;)r  r  r3   )r�   r‚   rƒ   r  Ú_SUPPORTED_PROXY_SCHEMESr   ÚNO_PROXYÚ	ALL_PROXYÚ_SUPPORTED_FEATURESÚRH_NAMEr5   r  r"  r&  r7  rˆ   r‰   s   @r-   r
  r
  a  sI   ø„ à=ÐØQÐØ#×,Ñ,¨h×.@Ñ.@ÐAÐØ€Gà38÷ Qô+óò:Aö)*r/   r
  )NNNN)rh   zssl.SSLError)GÚ
__future__r   rJ   Úhttp.clientrF   rt   rÿ   Úurllib.errorrq   Úurllib.parseÚurllib.requestÚurllib.responserR   r   r   r   r   r   r	   r
   Ú_helperr   r   r   r   r   r   Úcommonr   r   r   r   Ú
exceptionsr   r   r   r   r   r   r   Údependenciesr   Úsocksr3  Úutilsr   Úutils.networkingr    r!   r$  rU   r  r  r  r.   rr   ÚAbstractHTTPHandlerr1   r?   r²   r�   ÚBaseHandlerrº   r¨   rÔ   rÚ   r`   rè   r  rù   r
  r¸   r/   r-   ú<module>rL     sZ  ðÝ "ã Û Û 	Û 
Û Û Û Û Û ÷÷ ñ ÷÷ ÷ DÓ C÷÷ ñ õ "Ý 1Ý $ß :à˜yÐ)Ð ØŸ™ WÐ-Ð á	Ø×Ñ˜tÔ$Ø× Ñ  §¡Ô.ò	ôq#�&—.‘.×4Ñ4ô q#òhô,$A�f—n‘n×8Ñ8ô $AôN$�6—>‘>×-Ñ-ô $ô*�—‘×'Ñ'ô ô
�&—.‘.×(Ñ(ô ó
ô('˜Hô 'óT#ò-ð ô[*ˆ~Ð1ó [*ó ñ[*r/   