+
     BiP+                       ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIt^ RIHtHtHt ^ RIHtHtHtHtHtHtHtHtHtHtHtHtH t H!t!H"t"H#t# ^ RI$H%t%H&t&  ^ RI't'Rt(. RNRNR	NR
NRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNR NR!NR"NR#NR$NR%Nt*R&]PV                  R',          ,          t,Rs-R]
P\                  3R(R/R) llt/R* t0. t1RjR+ lt2R, t3]	Ph                  ! R-]	Pj                  4      t6R. t7 ! R/ R4      t8 ! R0 R4      t9R1 t: ! R2 R	4      t; ! R3 R];4      t< ! R4 R
];4      t= ! R5 R];4      t>R6 t? ! R7 R];4      t@ ! R8 R4      tA ! R9 R]A4      tB ! R: R]B4      tC ! R; R4      tD ! R< R]D];4      tE ! R= R]D];4      tF]P                  tH ! R> R4      tI ! R? R];]I4      tJ ! R@ R];]I4      tK ! RA RB];4      tL ! RC R]L4      tM]N! ]P                  RD4      '       d    ! RE RF]L4      tP]*P                  RF4        ! RG R];4      tR ! RH R];4      tSRI tTRJ tU ! RK R];4      tVRL tW ! RM R];4      tX ! RN R]X4      tY ! RO R];4      tZRPRRQR/RR lt[RSR/RT lt\Rs]RU t^Rs_RV t`RsaRW tbRscRX td ! RY RZ4      teR[ tfRkR\ ltgR] thR^ ti]P                  R_8X  d   ^ R`IkHltlHmtm Ra tnRb toRc tpRd tqR# ]P                  Re8X  d   Rf tsRg tqRh ttRi tpR# ]ftq]gtpR#   ]) d    Rt( ELi ; i)l    N)URLError	HTTPErrorContentTooShortError)urlparseurlspliturljoinunwrapquoteunquote
_splittype
_splithost
_splitport
_splituser_splitpasswd
_splitattr_splitvalue	_splittagunquote_to_bytes
urlunparse)
addinfourladdclosehookTFRequestOpenerDirectorBaseHandlerHTTPDefaultErrorHandlerHTTPRedirectHandlerHTTPCookieProcessorProxyHandlerHTTPPasswordMgrHTTPPasswordMgrWithDefaultRealmHTTPPasswordMgrWithPriorAuthAbstractBasicAuthHandlerHTTPBasicAuthHandlerProxyBasicAuthHandlerAbstractDigestAuthHandlerHTTPDigestAuthHandlerProxyDigestAuthHandlerHTTPHandlerFileHandler
FTPHandlerCacheFTPHandlerDataHandlerUnknownHandlerHTTPErrorProcessorurlopeninstall_openerbuild_openerpathname2urlurl2pathname
getproxiesurlretrieve
urlcleanupz%d.%d:N   Ncontextc                    V'       d   \        VR 7      p\        V4      pM\        f   \        4       ;spM\        pVP                  WV4      # )r8   )HTTPSHandlerr1   _openeropen)urldatatimeoutr8   https_handleropeners   &&&$  %/usr/lib/python3.14/urllib/request.pyr/   r/      sC    V $W5m,	'>)&;;s'**    c                 
    V s R # N)r<   )rB   s   &rC   r0   r0      s    GrD   c           	         \        V 4      w  rE\        P                  ! \        W4      4      ;_uu_ 4       pVP	                  4       pVR 8X  d4   V'       g,   \
        P                  P                  V4      V3uuRRR4       # V'       d   \        VR4      pM8\        P                  ! RR7      pVP                  p\        P                  V4       T;_uu_ 4        W3p	Rp
R	p^ p^ pRV9   d   \        VR,          4      pV'       d
   V! WV4       VP                  V
4      ;p'       dB   V\!        V4      ,          pVP#                  V4       V^,          pV'       g   KO  V! WV4       KZ   RRR4       RRR4       X^ 8  d   XV8  d   \%        RW3,          X	4      hX	#   + '       g   i     L<; i  + '       g   i     LG; i)
fileNwbF)deletecontent-lengthzContent-Lengthz1retrieval incomplete: got only %i out of %i bytesi    )r   
contextlibclosingr/   infoospathnormpathr=   tempfileNamedTemporaryFilename_url_tempfilesappendintreadlenwriter   )r>   filename
reporthookr?   url_typerQ   fpheaderstfpresultbssizerY   blocknumblocks   &&&&           rC   r5   r5      st      _NH			GC.	/	/2'') vh77##D)72 
0	/ x&C--U;CxxH!!(+S&FBDDH7*7#3458.772;&%&E
"		% A:xT2 ' ! 
0F qyTD["?l"$ 	$ M1 S! 
0	/sH   F/ F/ F/AF/,F	!F	&1F	F	(F/F,'F//F?	c                      \          F  p  \        P                  ! V 4       K  	  \         R  \        '       d   RsR# R#   \         d     KE  i ; i):NNNN)rV   rP   unlinkOSErrorr<   )	temp_files    rC   r6   r6      sJ    #		IIi  $ 	qw   		s   >AAz:\d+$c                     V P                   p\        V4      ^,          pVR8X  d   V P                  RR4      p\        P	                  RV^4      pVP                  4       # )    Host)full_urlr   
get_header_cut_port_resublower)requestr>   hosts   &  rC   request_hostrv     sX     

CC=Drz!!&"- Ba(D::<rD   c                   *  a  ] tR tRt o R/ RRR3R lt]R 4       t]P                  R 4       t]P                  R 4       t]R 4       t	]	P                  R	 4       t	]	P                  R
 4       t	R t
R tR tR tR tR tR tR tRR ltR tR tRtV tR# )r   i  NFc                    Wn         / V n        / V n        R V n        W n        R V n        VP                  4        F  w  rxV P                  Wx4       K  	  Vf   \        V 4      pW@n	        WPn
        V'       d	   W`n        R # R # rF   )ro   r`   unredirected_hdrs_datar?   _tunnel_hostitems
add_headerrv   origin_req_hostunverifiablemethod)	selfr>   r?   r`   r~   r   r   keyvalues	   &&&&&&&  rC   __init__Request.__init__  ss     !#
	 !--/JCOOC' *"*40O.( K rD   c                    V P                   '       d'   R P                  V P                  V P                   4      # V P                  # )z{}#{})fragmentformat	_full_urlr   s   &rC   ro   Request.full_url1  s.    ===>>$..$--@@~~rD   c                    \        V4      V n        \        V P                  4      w  V n        V n        V P	                  4        R # rF   )r	   r   r   r   _parse)r   r>   s   &&rC   ro   r   7  s/      (1$..(A%rD   c                0    R V n         R V n        RV n        R # Nrm   )r   r   selectorr   s   &rC   ro   r   >  s    rD   c                    V P                   # rF   )rz   r   s   &rC   r?   Request.dataD  s    zzrD   c                    WP                   8w  d3   Wn         V P                  R 4      '       d   V P                  R 4       R# R# R# )Content-lengthN)rz   
has_headerremove_header)r   r?   s   &&rC   r?   r   H  s<    ::J /00""#34 1 rD   c                    R V n         R # rF   )r?   r   s   &rC   r?   r   R  s	    	rD   c                    \        V P                  4      w  V n        pV P                  f   \        RV P                  ,          4      h\        V4      w  V n        V n        V P                  '       d   \        V P                  4      V n        R # R # )Nzunknown url type: %r)	r   r   type
ValueErrorro   r   ru   r   r   )r   rests   & rC   r   Request._parseV  sf    $T^^4	4993dmmCDD#-d#3 	4=999		*DI rD   c                @    V P                   e   RMRp\        V RV4      # )NPOSTGETr   )r?   getattr)r   default_methods   & rC   
get_methodRequest.get_method^  s!    #'99#8etX~66rD   c                    V P                   # rF   )ro   r   s   &rC   get_full_urlRequest.get_full_urlc  s    }}rD   c                    V P                   R 8X  d%   V P                  '       g   V P                  V n        MW n         V P                  V n        Wn        R# )httpsN)r   r{   ru   ro   r   )r   ru   r   s   &&&rC   	set_proxyRequest.set_proxyf  s:    99(9(9(9 $		DI MMDM	rD   c                4    V P                   V P                  8H  # rF   )r   ro   r   s   &rC   	has_proxyRequest.has_proxyn  s    }}--rD   c                >    W P                   VP                  4       &   R # rF   )r`   
capitalizer   r   vals   &&&rC   r}   Request.add_headerq  s    ),S^^%&rD   c                >    W P                   VP                  4       &   R # rF   )ry   r   r   s   &&&rC   add_unredirected_headerRequest.add_unredirected_headeru  s    36s~~/0rD   c                J    WP                   9   ;'       g    WP                  9   # rF   )r`   ry   r   header_names   &&rC   r   Request.has_headery  s'    ||+ 6 6555	7rD   c                l    V P                   P                  VV P                  P                  W4      4      # rF   )r`   getry   )r   r   defaults   &&&rC   rp   Request.get_header}  s0    ||""&&{<> 	>rD   c                v    V P                   P                  VR 4       V P                  P                  VR 4       R # rF   )r`   popry   r   s   &&rC   r   Request.remove_header  s,    d+"";5rD   c                h    / V P                   CV P                  Cp\        VP                  4       4      # rF   )ry   r`   listr|   )r   hdrss   & rC   header_itemsRequest.header_items  s,    9$((9DLL9DJJL!!rD   )rz   r   r{   r?   r   ro   r`   ru   r   r~   r   r   ry   r   rF   )__name__
__module____qualname____firstlineno__r   propertyro   setterdeleterr?   r   r   r   r   r   r}   r   r   rp   r   r   __static_attributes____classdictcell____classdict__s   @rC   r   r     s     !%r!%E!$  
 __   
   
[[5 5 
\\ +7
.-77>
6" "rD   c                   j   a  ] tR tRt o R tR tR tR tR]P                  3R lt
RR ltR	 tR
tV tR# )r   i  c                z    R \         ,          pRV3.V n        . V n        / V n        / V n        / V n        / V n        R# )zPython-urllib/%sz
User-agentN)__version__
addheadershandlershandle_openhandle_errorprocess_responseprocess_request)r   client_versions   & rC   r   OpenerDirector.__init__  sB    +k9(.9: "!rD   c                |   \        VR 4      '       g   \        R\        V4      ,          4      hRp\        V4       EF.  pVR
9   d   K  VP	                  R4      pVRV pW4^,           R pVP                  R4      '       db   VP	                  R4      V,           ^,           pW7^,           R p \        V4      pV P                  P                  V/ 4      p	WP                  V&   MDVR8X  d   TpV P                  p	M.VR8X  d   TpV P                  p	MVR8X  d   TpV P                  p	MK  V	P                  V. 4      p
V
'       d   \        P                  ! W4       MV
P!                  V4       R	pEK1  	  V'       d5   \        P                  ! V P"                  V4       VP%                  V 4       R# R#   \         d     ELi ; i)
add_parentz%expected BaseHandler instance, got %rF_Nerrorr=   responsert   T)redirect_requestdo_open
proxy_open)hasattr	TypeErrorr   dirfind
startswithrX   r   r   r   r   r   r   
setdefaultbisectinsortrW   r   r   )r   handleraddedmethiprotocol	conditionjkindlookupr   s   &&         rC   add_handlerOpenerDirector.add_handler  s   w--C M* + + LDDD		#ABQxHqST
I##G,,NN3'!+a/aCDzt9D **..x<.4!!(+f$))j(..i'--((r2Hh0(EG !J MM$--1t$ / " s   +F,,F;:F;c                    R # rF    r   s   &rC   closeOpenerDirector.close      rD   c                n    VP                  VR4      pV F  p\        Wc4      pV! V!  pVf   K  Vu # 	  R # )Nr   )r   r   )	r   chainr   	meth_nameargsr   r   funcrb   s	   &&&&*    rC   _call_chainOpenerDirector._call_chain  s<     99T2&G7.D4[F!	  rD   Nc                0   \        V\        4      '       d   \        W4      pMTpVe   W$n        W4n        VP
                  pVR,           pV P                  P                  V. 4       F  p\        Wv4      pV! V4      pK  	  \        P                  ! RVP                  VP                  VP                  VP                  4       4       V P                  WB4      p	VR,           pV P                  P                  V. 4       F  p\        Wv4      pV! WI4      p	K  	  V	# )N_requestzurllib.Request	_response)
isinstancestrr   r?   r@   r   r   r   r   sysauditro   r`   r   _openr   )
r   fullurlr?   r@   reqr   r   	processorr   r   s
   &&&&      rC   r=   OpenerDirector.open  s    gs##'(CC88 Z'	--11(B?I90Ds)C @ 			"CLL#((CKKIYZ::c( [(	..228R@I90DC*H A rD   c                   V P                  V P                  R RV4      pV'       d   V# VP                  pV P                  V P                  WDR,           V4      pV'       d   V# V P                  V P                  RRV4      # )r   default_openr
  unknownunknown_open)r  r   r   )r   r  r?   rb   r   s   &&&  rC   r
  OpenerDirector._open  s    !!$"2"2I"0#7M88!!$"2"2H")?*+.0M 0 0) .5 	5rD   c                (   VR9   d+   V P                   R ,          pV^,          pRV,          p^pTpMV P                   pVR,           p^ pW1V3V,           pV P                  ! V!  pV'       d   V# V'       d   VRR3X,           pV P                  ! V!  # R# )httpzhttp_error_%s_errorr   http_error_defaultN)r  r   )r   r  )r   protor   dictr   http_err	orig_argsrb   s   &&*     rC   r   OpenerDirector.error   s    %%$$V,DGE'%/IHI$$D(IHY'$.!!4(M)%9:YFD##T** rD   )r   r   r   r   r   r   rF   )r   r   r   r   r   r   r   r  socket_GLOBAL_DEFAULT_TIMEOUTr=   r
  r   r   r   r   s   @rC   r   r     s;     	"-%^	 "&v/M/M :5+ +rD   c            	         \        4       p\        \        \        \        \
        \        \        \        \        .	p\        \        P                  R 4      '       d   VP                  \        4       \        4       pV Fl  pV  Fc  p\!        V\"        4      '       d'   \%        WT4      '       d   VP'                  V4       K=  K?  \!        WT4      '       g   KR  VP'                  V4       Ke  	  Kn  	  V F  pVP)                  V4       K  	  V F  pVP+                  V! 4       4       K  	  V  F1  p\!        V\"        4      '       d   V! 4       pVP+                  V4       K3  	  V# )HTTPSConnection)r   r   r-   r(   r   r   r*   r)   r.   r,   r   r  clientrW   r;   setr  r   
issubclassaddremover   )r   rB   default_classesskipklasscheckhs   *      rC   r1   r1     s    F#^[.0C!;0B"$O t{{-..|,5D E%&&e++HHUO ,E))  ! u%  !57# ! aA1  MrD   c                   6   a  ] tR tRt o RtR tR tR tRtV t	R# )r   i=  i  c                    Wn         R # rF   parent)r   r.  s   &&rC   r   BaseHandler.add_parent@  s    rD   c                    R # rF   r   r   s   &rC   r   BaseHandler.closeC  r   rD   c                \    \        VR 4      '       g   R# V P                  VP                  8  # )handler_orderT)r   r3  )r   others   &&rC   __lt__BaseHandler.__lt__G  s+    uo.. !!E$7$777rD   r-  N)
r   r   r   r   r3  r   r   r5  r   r   r   s   @rC   r   r   =  s     M8 8rD   c                   .   a  ] tR tRt o RtR t]tRtV tR# )r.   iP  i  c                    VP                   VP                  VP                  4       rTp^Tu;8:  d   R8  g!   M V P                  P	                  RWW4V4      pV# )   ,  r  )codemsgrO   r.  r   )r   rt   r   r;  r<  r   s   &&&   rC   http_response HTTPErrorProcessor.http_responseT  sN    "--x}}4 t!c!{{((4d<H rD   r   N)	r   r   r   r   r3  r=  https_responser   r   r   s   @rC   r.   r.   P  s     M	 #NrD   c                   &   a  ] tR tRt o R tRtV tR# )r   ia  c                0    \        VP                  W4WR4      hrF   )r   ro   )r   r  r_   r;  r<  r   s   &&&&&&rC   r  *HTTPDefaultErrorHandler.http_error_defaultb  s    d::rD   r   N)r   r   r   r   r  r   r   r   s   @rC   r   r   a  s     ; ;rD   c                   H   a  ] tR tRt o ^t^
tR tR t];t;t	;t
tRtRtV tR# )r   ie  c                   VP                  4       pVR9   d   VR	9   g&   VR
9   d   VR8X  g   \        VP                  W4WR4      hVP                  RR4      pRpVP                  P                  4        U	U
u/ uF  w  rV	P                  4       V9  g   K  WbK   	  pp	p
\        TVR8X  d   RMRVVP                  RR7      # u up
p	i )-  r   HEADr    z%20T)r   r`   r~   r   )rE  .  /  i3  i4  )r   rF  )rE  rH  rI  )rK   zcontent-type)	r   r   ro   replacer`   r|   rs   r   r~   )r   r  r_   r;  r<  r`   newurlmCONTENT_HEADERSkv
newheaderss   &&&&&&&     rC   r   $HTTPRedirectHandler.redirect_requestm  s     NN22qO7K&1;CLL$WAA U+<'*{{'8'8': ;':tq/9 ad':
 ;v()Vf)'*':':$(	* 	*;s   5B?B?c                   R V9   d   VR ,          pMRV9   d   VR,          pMR# \        V4      pVP                  R
9  d   \        WcV: RV: R2WR4      hVP                  '       g#   VP                  '       d   \        V4      pRV^&   \        V4      p\        VR\        P                  R7      p\        VP                  V4      pV P                  WW4WV4      pVf   R# \        VR4      '       dx   VP                  ;qn        V	P                  V^ 4      V P                   8  g   \#        V	4      V P$                  8  d*   \        VP                  VV P&                  V,           WR4      hM/ ;p	;Vn        Vn        V	P                  V^ 4      ^,           W&   VP)                  4        VP+                  4        V P,                  P/                  WP0                  R	7      # )locationuriNz - Redirection to url 'z' is not allowed/z
iso-8859-1)encodingsaferedirect_dictr@   )r  r   ftprm   )r   schemer   rQ   netlocr   r   r
   stringpunctuationr   ro   r   r   rX  r   max_repeatsrZ   max_redirectionsinf_msgrY   r   r.  r=   r@   )
r   r  r_   r;  r<  r`   rK  urlpartsnewvisiteds
   &&&&&&    rC   http_error_302"HTTPRedirectHandler.http_error_302  s     Z(FgU^F F#
 ??">>ADfM 
 }}}H~HHQKH%
 \0B0BDv.
 ##CTH; 3((*-*;*;;G'FA&$*:*::G 5 55d $s 2GA A 6 ?A@G@c'#*;!++fa014 		

{{[[99rD   zoThe HTTP server returned a redirect error that would lead to an infinite loop.
The last 30x error message was:
r   N)r   r   r   r   r_  r`  r   re  http_error_301http_error_303http_error_307http_error_308ra  r   r   r   s   @rC   r   r   e  s?      K !*N::x IWVNV^Vn~2GrD   c                    \        V 4      w  rVP                  R 4      '       g   RpT pMtVP                  R4      '       g   \        RV ,          4      hRV9   d%   VP                  R4      pVP                  R V4      pMVP                  R ^4      pVR8X  d   RpV^V p\	        V4      w  rgVe   \        V4      w  rMR;rWW3# )rU  N//zproxy URL with no authority: %r@rL   )r   r   r   r   r   r   )
proxyr[  r_scheme	authorityhost_separatorenduserinfohostportuserpasswords
   &         rC   _parse_proxyrw    s     "%(Fs##	 ""4((>FGG (?%]]3/N--^4C--Q'C"9CQsO	#I.H%h/h++rD   c                   4   a  ] tR tRt o ^dtRR ltR tRtV tR# )r   i  Nc                    Vf   \        4       pWn        VP                  4        F8  w  r#VP                  4       p\	        V RV,          W2V P
                  3R l4       K:  	  R # )Nz%s_openc                     V! WV4      # rF   r   )rrn  r   r   s   &&&&rC   <lambda>'ProxyHandler.__init__.<locals>.<lambda>  s    Qt,rD   )r4   proxiesr|   rs   setattrr   )r   r~  r   r>   s   &&  rC   r   ProxyHandler.__init__  sO    ? lG ID::<DD)d*$' -. )rD   c                0   VP                   p\        V4      w  rVrxVf   TpVP                  '       d   \        VP                  4      '       d   R # V'       dp   V'       dh   \	        V4      : R\	        V4      : 2p	\
        P                  ! V	P                  4       4      P                  R4      p
VP                  RRV
,           4       \	        V4      pVP                  W4       WE8X  g   VR8X  d   R # V P                  P                  WP                  R7      # )N:asciiProxy-authorizationBasic r   rY  )r   rw  ru   proxy_bypassr   base64	b64encodeencodedecoder}   r   r.  r=   r@   )r   r  rn  r   	orig_type
proxy_typeru  rv  rt  	user_passcredss   &&&&       rC   r   ProxyHandler.proxy_open  s    HH	/;E/B,
("J888SXX..H#*4=#*8#46I$$Y%5%5%78??HENN0(U2BC8$h+"i7&: ;;##C#==rD   )r~  rF   )	r   r   r   r   r3  r   r   r   r   r   s   @rC   r   r     s     M	.> >rD   c                   B   a  ] tR tRt o R tR tR tR	R ltR tRt	V t
R# )
r   i#  c                    / V n         R # rF   passwdr   s   &rC   r   HTTPPasswordMgr.__init__%  s	    rD   c                $  a a \        V\        4      '       d   V.pVS P                  9  d   / S P                  V&   R FN  o\        ;QJ d    . VV 3R lV 4       F  NK  	  5M! VV 3R lV 4       4      pW43S P                  V,          V&   KP  	  R# )Tc              3   H   <"   T F  pSP                  VS4      x  K  	  R # 5irF   )
reduce_uri).0udefault_portr   s   & rC   	<genexpr>/HTTPPasswordMgr.add_password.<locals>.<genexpr>/  s"       ?:=Q<00#s   "NTF)r  r  r  tuple)r   realmrT  ru  r  reduced_urir  s   f&&&& @rC   add_passwordHTTPPasswordMgr.add_password(  sz    c3%C#!#DKK'L%  ?:= ?%%  ?:= ? ?K/3nDKK{+ (rD   c                    V P                   P                  V/ 4      pR FU  pV P                  W$4      pVP                  4        F-  w  rgV F"  pV P	                  W4      '       g   K  Vu u u # 	  K/  	  KW  	  R# )Tr  )NN)r  r   r  r|   	is_suburi)	r   r  authuridomainsr  reduced_authuriurisauthinforT  s	   &&&      rC   find_user_password"HTTPPasswordMgr.find_user_password3  sf    ++//%,'L"oogDO")--/C~~c;;'   #2 ( rD   c                   \        V4      pV^,          '       d'   V^ ,          pV^,          pV^,          ;'       g    RpMRpTpRp\        V4      w  rxV'       d,   Vf(   Ve$   R^PRR/P                  V4      p	V	e   RWy3,          pWV3# )rl   rU  Nr  r   i  z%s:%d)r   r   r   )
r   rT  r  partsr[  rp  rQ   ru   portdports
   &&&       rC   r  HTTPPasswordMgr.reduce_uri=  s     881XFaI8??sD FID	*
DLV-?Rcs6{   #tm3	rD   c                    W8X  d   R # V^ ,          V^ ,          8w  d   R# V^,          pVRR R8w  d
   VR,          pV^,          P                  V4      # )TFNrU  rL   )r   )r   basetestprefixs   &&& rC   r  HTTPPasswordMgr.is_suburiT  sT    
 <7d1ga"#;#cMFAw!!&))rD   r  N)T)r   r   r   r   r   r  r  r  r  r   r   r   s   @rC   r   r   #  s#     	=.* *rD   c                   &   a  ] tR tRt o R tRtV tR# )r    ic  c                n    \         P                  WV4      w  r4Ve   W43# \         P                  V R V4      # rF   )r   r  )r   r  r  ru  rv  s   &&&  rC   r  2HTTPPasswordMgrWithDefaultRealm.find_user_passworde  s=    (;;D<CE>!11$gFFrD   r   N)r   r   r   r   r  r   r   r   s   @rC   r    r    c  s     G GrD   c                   R   a a ] tR tRt oV 3R ltRV 3R lltRR ltR tRtVt	V ;t
# )r!   im  c                2   < / V n         \        SV `	  4        R # rF   )authenticatedsuperr   )r   	__class__s   &rC   r   %HTTPPasswordMgrWithPriorAuth.__init__o  s    rD   c                t   < V P                  W%4       Ve   \        SV `	  R W#V4       \        SV `	  WW44       R # rF   )update_authenticatedr  r  )r   r  rT  ru  r  is_authenticatedr  s   &&&&&&rC   r  )HTTPPasswordMgrWithPriorAuth.add_passwords  s7    !!#8G s&9U6rD   c                    \        V\        4      '       d   V.pR F+  pV F"  pV P                  WC4      pW P                  V&   K$  	  K-  	  R# TNr  )r  r  r  r  )r   rT  r  r  r  r  s   &&&   rC   r  1HTTPPasswordMgrWithPriorAuth.update_authenticatedz  sF    c3%C'L"ooa>2B"";/  (rD   c                    R FU  pV P                  W4      pV P                   F1  pV P                  WC4      '       g   K  V P                  V,          u u # 	  KW  	  R# r  )r  r  r  )r   r  r  r  rT  s   &&   rC   r  -HTTPPasswordMgrWithPriorAuth.is_authenticated  sJ    'L"oogDO))>>#77--c22 * (rD   )r  )F)r   r   r   r   r   r  r  r  r   r   __classcell__)r  r   s   @@rC   r!   r!   m  s     7C3 3rD   c                      a  ] tR tRt o ]P
                  ! R]P                  4      tRR ltR t	R t
R tR tR	 t]t]tR
tV tR# )r"   i  z1(?:^|,)[ 	]*([^ 	,]+)[ 	]+realm=(["']?)([^"']*)\2Nc                d    Vf   \        4       pWn        V P                  P                  V n        R # rF   )r   r  r  )r   password_mgrs   &&rC   r   !AbstractBasicAuthHandler.__init__  s'    *,L" KK44rD   c              #  :  "   R p\         P                  P                  V4       F?  pVP                  4       w  rEpVR9  d   ^ RIpVP                  R\        ^4       WF3x  RpKA  	  V'       g+   V'       d   VP                  4       ^ ,          pMRpVR3x  R# R# 5i)FNzBasic Auth Realm was unquotedTrm   )"')r"   rxfinditergroupswarningswarnUserWarningsplit)r   headerfound_challengemor[  r
   r  r  s   &&      rC   _parse_realm%AbstractBasicAuthHandler._parse_realm  s     *--66v>B#%99; F5J&=)1. /!"O ? *4.  s   A,B/B7$Bc                   VP                  V4      pV'       g   R # R pV FP  pV P                  V4       F8  w  rxVP                  4       R8w  d   TpK  Vf   K$  V P                  W#V4      u u # 	  KR  	  Ve   \	        RX: 24      hR # )Nbasicz@AbstractBasicAuthHandler does not support the following scheme: )get_allr  rs   retry_http_basic_authr   )	r   authreqru   r  r`   unsupportedr  r[  r  s	   &&&&&    rC   http_error_auth_reqed.AbstractBasicAuthHandler.http_error_auth_reqed  s     //'*F!%!2!26!:<<>W,"(K$  55dGG ";  " &) * * #rD   c                   V P                   P                  W14      w  rEVe   V: RV: 2pR\        P                  ! VP	                  4       4      P                  R4      ,           pVP                  V P                  R 4      V8X  d   R # VP                  V P                  V4       V P                  P                  W"P                  R7      # R # )Nr  r  r  rY  )r  r  r  r  r  r  rp   auth_headerr   r.  r=   r@   )r   ru   r  r  ru  pwrawauths   &&&&    rC   r  .AbstractBasicAuthHandler.retry_http_basic_auth  s    ;;11%>>!2&Cf..szz|<CCGLLD~~d..5=''(8(8$?;;##C#==rD   c                   \        V P                  R 4      '       d,   V P                  P                  VP                  4      '       g   V# VP	                  R4      '       g   V P                  P                  RVP                  4      w  r#RP                  W#4      P                  4       p\        P                  ! V4      P                  4       pVP                  RRP                  VP                  4       4      4       V# )r  AuthorizationNz{0}:{1}zBasic {})r   r  r  ro   r   r  r   r  r  standard_b64encoder  r   strip)r   r  ru  r  credentialsauth_strs   &&    rC   http_request%AbstractBasicAuthHandler.http_request  s    %788{{++CLL99J~~o..;;99$MLD#**48??AK00=DDFH''(2(9(9(..:J(KM
rD   c                   \        V P                  R 4      '       dk   ^VP                  u;8:  d   R8  d,   M M(V P                  P                  VP                  R4       V# V P                  P                  VP                  R4       V# )r  r:  TF)r   r  r;  r  ro   )r   r  r   s   &&&rC   r=  &AbstractBasicAuthHandler.http_response  sc    4;; 233hmm)c)00tD  00uErD   )r  r  rF   )r   r   r   r   recompileIr  r   r  r  r  r  r=  https_requestr?  r   r   r   s   @rC   r"   r"     sM      
 1 DD
B5!**4
 !M"NrD   c                   *   a  ] tR tRt o RtR tRtV tR# )r#   i  r  c                D    VP                   pV P                  R WaV4      pV# )www-authenticate)ro   r  )r   r  r_   r;  r<  r`   r>   r   s   &&&&&&  rC   http_error_401#HTTPBasicAuthHandler.http_error_401   s(    ll--.@*-G=rD   r   N)r   r   r   r   r  r  r   r   r   s   @rC   r#   r#     s     !K rD   c                   *   a  ] tR tRt o RtR tRtV tR# )r$   i  r  c                D    VP                   pV P                  R WaV4      pV# zproxy-authenticate)ru   r  )r   r  r_   r;  r<  r`   rp  r   s   &&&&&&  rC   http_error_407$ProxyBasicAuthHandler.http_error_407  s+    
 HH	--.B*3'CrD   r   N)r   r   r   r   r  r   r   r   r   s   @rC   r$   r$     s     'K rD   c                   T   a  ] tR tRt o RR ltR tR tR tR tR t	R	 t
R
 tRtV tR# )r%   i  Nc                    Vf   \        4       pWn        V P                  P                  V n        ^ V n        ^ V n        R V n        R # rF   )r   r  r  retriednonce_count
last_nonce)r   r  s   &&rC   r   "AbstractDigestAuthHandler.__init__%  s<    >$&F KK44rD   c                    ^ V n         R# r   N)r  r   s   &rC   reset_retry_count+AbstractDigestAuthHandler.reset_retry_count.  s	    rD   c                   VP                  VR 4      pV P                  ^8  d   \        VP                  RRVR 4      hV ;P                  ^,          un        V'       dg   VP	                  4       ^ ,          pVP                  4       R8X  d   V P                  W54      # VP                  4       R8w  d   \        RV,          4      hR # R # )Ni  zdigest auth faileddigestr  zEAbstractDigestAuthHandler does not support the following scheme: '%s')r   r  r   ro   r  rs   retry_http_digest_authr   )r   r  ru   r  r`   r  r[  s   &&&&&  rC   r  /AbstractDigestAuthHandler.http_error_auth_reqed1  s    ++k40<<! CLL#/C#T+ + LLAL]]_Q'F||~)223@@7*  "?AG"H I I +	 rD   c                   VP                  R ^4      w  r4\        \        R\        V4      4      4      pV P	                  W4      pV'       d{   RV,          pVP
                  P                  V P                  R4      V8X  d   R# VP                  V P                  V4       V P                  P                  WP                  R7      pV# R# )rG  Nz	Digest %srY  )r  parse_keqv_listfilterparse_http_listget_authorizationr`   r   r  r   r.  r=   r@   )r   r  r  token	challengechalauth_valresps   &&&     rC   r  0AbstractDigestAuthHandler.retry_http_digest_authE  s    ::c1-vdOI,FGH%%c0"T)H{{t//6(B''(8(8(C;;##C#=DK rD   c                    V P                   : R V: R \        P                  ! 4       : R 2pVP                  R4      \	        ^4      ,           p\
        P                  ! V4      P                  4       pVR,          # )r  r  :N   N)r  timectimer  _randombyteshashlibsha1	hexdigest)r   noncesbdigs   &&   rC   
get_cnonce$AbstractDigestAuthHandler.get_cnonceQ  sR      ++UDJJLAHHWQ/ll1o'')3xrD   c                    VR ,          pVR,          pVP                  R4      pVP                  RR4      pVP                  RR4      pT P                  T4      w  rTf   R# T P                  P	                  Y1P
                  4      w  rT
f   R# TP                  e   T P                  TP                  T4      pMRpT
: RT: RT: 2pTP                  4       : RTP                  : 2pTf   T	! T! T4      T: RT! T4      : 24      pMRTP                  R	4      9   d   Y@P                  8X  d   T ;P                  ^,          un        M^T n        Y@n        R
T P                  ,          pT P                  T4      pT: RT: RT: RR: RT! T4      : 2	pT	! T! T4      T4      pM\        RT,          4      hRT
: RT: RT: RTP                  : RT: R2pT'       d   TRT,          ,          pT'       d   TRT,          ,          pTRT,          ,          pT'       d   TRX: RX: R2,          pT#   \         d     R# i ; i)r  r#  qop	algorithmMD5opaqueNr  r  ,z%08xzqop '%s' is not supported.z
username="z
", realm="z
", nonce="z", uri="z", response="r  z, opaque="%s"z, digest="%s"z, algorithm="%s"z, qop=auth, nc=z
, cnonce=")r   KeyErrorget_algorithm_implsr  r  ro   r?   get_entity_digestr   r   r  r  r  r'  r   )r   r  r  r  r#  r*  r+  r-  HKDru  r  entdigA1A2respdigncvaluecnoncenoncebitr  s   &&&                 rC   r  +AbstractDigestAuthHandler.get_authorization\  s   		MEME((5/Ce4I XXh-F ((39;;11%F< 88++CHHd;FF+(&
 ;25!B% 89Gsyy~%'  A% #$ "'t///G__U+F+0'661R5QH2)G 7#=>>
 #'ucll")+ Of,,DOf,,D"Y..HHDg  		s   AH6 6IIc                ~   a VR 8X  d   R oM(VR8X  d   R oMVR8X  d   R oM\        RV,          4      hV3R lpSV3# )r,  c                 h    \         P                  ! V P                  R 4      4      P                  4       # r  )r   md5r  r"  xs   &rC   r|  ?AbstractDigestAuthHandler.get_algorithm_impls.<locals>.<lambda>  s    '++ahhw&78BBDrD   SHAc                 h    \         P                  ! V P                  R 4      4      P                  4       # r>  )r   r!  r  r"  r@  s   &rC   r|  rB    s    ',,qxx'89CCErD   zSHA-256c                 h    \         P                  ! V P                  R 4      4      P                  4       # r>  )r   sha256r  r"  r@  s   &rC   r|  rB    s    '..'):;EEGrD   z.Unsupported digest authentication algorithm %rc                 "   < S! V : R V: 24      # )r  r   )r$  dr2  s   &&rC   r|  rB    s    !q!,-rD   )r   )r   r+  r3  r2  s   && @rC   r0  -AbstractDigestAuthHandler.get_algorithm_impls  sV     DA%EA)#GA  ,.78 9 9-"urD   c                    R # rF   r   )r   r?   r  s   &&&rC   r1  +AbstractDigestAuthHandler.get_entity_digest  s    rD   )r  r  r  r  r  rF   )r   r   r   r   r   r
  r  r  r'  r  r0  r1  r   r   r   s   @rC   r%   r%     s4     I(
	<|  rD   c                   .   a  ] tR tRt o RtRtR tRtV tR# )r&   i  r    c                    \        VP                  4      ^,          pV P                  RWaV4      pV P                  4        V# )rl   r  )r   ro   r  r
  r   r  r_   r;  r<  r`   ru   retrys   &&&&&&  rC   r  $HTTPDigestAuthHandler.http_error_401  s>    %a(**+=+/g? rD   r   N)	r   r   r   r   r  r3  r  r   r   r   s   @rC   r&   r&     s      "KM rD   c                   .   a  ] tR tRt o RtRtR tRtV tR# )r'   i  Proxy-AuthorizationrM  c                d    VP                   pV P                  R WaV4      pV P                  4        V# r  )ru   r  r
  rO  s   &&&&&&  rC   r   %ProxyDigestAuthHandler.http_error_407  s4    xx**+?+/g? rD   r   N)	r   r   r   r   r  r3  r   r   r   r   s   @rC   r'   r'     s     'KM rD   c                   B   a  ] tR tRt o R	R ltR tR tR tR tRt	V t
R# )
AbstractHTTPHandleri  Nc                p    Ve	   Wn        R # \         P                  P                  P                  V n        R # rF   )r  r!  HTTPConnection
debuglevel_debuglevel)r   rZ  s   &&rC   r   AbstractHTTPHandler.__init__  s$    )3)?:T[[E_E_EjEjrD   c                    Wn         R # rF   r[  )r   levels   &&rC   set_http_debuglevel'AbstractHTTPHandler.set_http_debuglevel  s     rD   c                    \         P                  P                  P                  VP                  VP                  4       4      # rF   )r  r!  rY  _get_content_lengthr?   r   r   rt   s   &&rC   rc  'AbstractHTTPHandler._get_content_length  s2    {{))==LL " 	"rD   c                n   VP                   pV'       g   \        R 4      hVP                  e   VP                  p\        V\        4      '       d   Rp\        V4      hVP                  R4      '       g   VP                  RR4       VP                  R4      '       g[   VP                  R4      '       gD   V P                  V4      pVe   VP                  R\	        V4      4       MVP                  RR4       TpVP                  4       '       d%   \        VP                  4      w  rx\        V4      w  riVP                  R4      '       g   VP                  RV4       V P                  P                   F?  w  rV
P                  4       p
VP                  V
4      '       d   K.  VP                  W4       KA  	  V# )no host givenz\POST data should be bytes, an iterable of bytes, or a file object. It cannot be of type str.zContent-typez!application/x-www-form-urlencodedr   Transfer-encodingchunkedrn   )ru   r   r?   r  r  r   r   r   rc  r   r   r   r   r.  r   r   )r   rt   ru   r?   r<  content_lengthsel_hostr[  selsel_pathrU   r   s   &&          rC   do_request_AbstractHTTPHandler.do_request_  sw   ||?++<<#<<D$$$Dn$%%n55//"79 &&'788#../BCC!%!9!9'!B!-33,c..AC 33/< $W%5%56KF!+CH!!&))++FH=;;11KD??$D%%d++//< 2
 rD   c           	     4   VP                   pV'       g   \        R 4      hV! V3RVP                  /VB pVP                  V P                  4       \        VP                  4      pTP                  VP                  P                  4        UUu/ uF  w  rxWv9  g   K  WxbK  	  upp4       RVR&   VP                  4        U	U
u/ uF  w  rV	P                  4       V
bK  	  pp	p
VP                  '       d4   / pRpW9   d   Wl,          W&   Wl VP                  VP                  VR7         VP                  VP                  4       VP                  VP                   VVP#                  R4      R7       TP'                  4       pTP*                  '       d"   TP*                  P)                  4        RTn        TP-                  4       Tn        TP0                  Tn        T# u uppi u up
p	i   \$         d   p\        T4      hRp?ii ; i   TP)                  4        h ; i)	rg  r@   r   
ConnectionrS  )r`   rh  )encode_chunkedN)ru   r   r@   set_debuglevelr[  r  ry   updater`   r|   titler{   
set_tunnelrt   r   r   r?   r   ri   getresponser   sockr   r>   reasonr<  )r   
http_classr  http_conn_argsru   r*  r`   rN  rO  rU   r   tunnel_headersproxy_auth_hdrerrr{  s   &&&,           rC   r   AbstractHTTPHandler.do_open   s   
 xx?++ tCS[[CNC	))*s,,-):):)< -)<+ )< - 	. !(6=mmoFo4::<$oFN2N(181H. +LL))>LB		$		#..*CLL#((G),8K)L  N A 666FFLLNAF  " e- G   $sm#$	GGIs=   
G
G
G (AG& /H &H1G<<HH Hr^  rF   )r   r   r   r   r   r`  rc  rn  r   r   r   r   s   @rC   rW  rW    s'     k!"
$L@ @rD   rW  c                   >   a  ] tR tRt o R t]P                  tRtV t	R# )r(   iC  c                V    V P                  \        P                  P                  V4      # rF   )r   r  r!  rY  r   r  s   &&rC   	http_openHTTPHandler.http_openE  s    ||DKK66<<rD   r   N)
r   r   r   r   r  rW  rn  r  r   r   r   s   @rC   r(   r(   C  s     = '22LrD   r   c                   H   a  ] tR tRt o RR ltR t]P                  tRt	V t
R# )r;   iL  Nc                2   Ve   TM#\         P                  P                  P                  p\        P                  W4       VfD   \         P                  P                  P                  p\         P                  P                  V4      pVe   W2n        W n	        R # rF   )
r  r!  r   rZ  rW  r   	_http_vsn_create_https_contextcheck_hostname_context)r   rZ  r8   r  http_versions   &&&& rC   r   HTTPSHandler.__init__N  sk    '1'=4;;C^C^CiCiJ((:#{{::DD++;;LI))7&#MrD   c                n    V P                  \        P                  P                  VV P                  R 7      # r:   )r   r  r!  r   r  r  s   &&rC   
https_openHTTPSHandler.https_openX  s-    << ; ;S(,   7 7rD   )r  NNN)r   r   r   r   r   r  rW  rn  r  r   r   r   s   @rC   r;   r;   L  s     	$	7 ,77rD   r;   c                   >   a  ] tR tRt o RR ltR tR t]t]tRt	V t
R# )r   i`  Nc                V    ^ RI pVf   VP                  P                  4       pWn        R# r	  )http.cookiejar	cookiejar	CookieJar)r   r  r  s   && rC   r   HTTPCookieProcessor.__init__a  s"    002I"rD   c                <    V P                   P                  V4       V# rF   )r  add_cookie_headerrd  s   &&rC   r   HTTPCookieProcessor.http_requestg  s    ((1rD   c                <    V P                   P                  W!4       V# rF   )r  extract_cookies)r   rt   r   s   &&&rC   r=  !HTTPCookieProcessor.http_responsek  s    &&x9rD   )r  rF   )r   r   r   r   r   r  r=  r  r?  r   r   r   s   @rC   r   r   `  s      # !M"NrD   c                   &   a  ] tR tRt o R tRtV tR# )r-   ir  c                >    VP                   p\        R V,          4      h)zunknown url type: %s)r   r   )r   r  r   s   && rC   r  UnknownHandler.unknown_opens  s    xx-455rD   r   N)r   r   r   r   r  r   r   r   s   @rC   r-   r-   r  s     6 6rD   c                     / pV  F<  pVP                  R ^4      w  r4V^ ,          R8X  d   VR,          R8X  d   V^R pWAV&   K>  	  V# )=r  rL   )r  )lparsedeltrN  rO  s   &    rC   r  r  w  sQ    Fyya Q43;1R5C<!BAq		 
 MrD   c                 j   . pR pR;r4V  Fj  pV'       d   W%,          pRpK  V'       d   VR8X  d   RpK*  VR8X  d   RpW%,          pK=  VR8X  d   VP                  V4       R pKY  VR8X  d   RpW%,          pKl  	  V'       d   VP                  V4       V Uu. uF  q"P                  4       NK  	  up# u upi )rm   F\Tr  r.  )rW   r  )r$  respartescaper
   curs   &     rC   r  r    s     CDFKDFd{KD#:JJtD#:E- 2 

4%()STJJLS)))s   B0c                   4   a  ] tR tRt o RtR tR t]tRtV t	R# )r)   i  Nc                   \         P                  fv    \        \        P                  ! R4      ^,          \        P                  ! \        P
                  ! 4       4      ^,          ,           4      \         n        \         P                  # \         P                  #   \        P                   d3    \        P                  ! R4      3\         n         \         P                  # i ; iN	localhost)r)   namesr  r  gethostbyname_exgethostnamegaierrorgethostbynamer   s   &rC   	get_namesFileHandler.get_names  s    $I$)++K8;++F,>,>,@A!DE%F!
    {    ?? I%+%9%9+%F$H!   Is   A$B 5CCc                   ^ RI p^ RIp\        VP                  RRR7      p \        P
                  ! V4      pVP                  pVP                  P                  VP                  RR7      pVP                  V4      ^ ,          pVP                  ! RT;'       g    RWg3,          4      p	\        VRR7      p
\        \        VR4      W4      #   \         d   p\!        YP"                  4      hRp?ii ; i)	r   NT)require_schemeresolve_host)usegmtz6Content-type: %s
Content-length: %d
Last-modified: %s
z
text/plain)
add_schemerb)email.utils	mimetypesr3   ro   rP   statst_sizeutils
formatdatest_mtimeguess_file_typemessage_from_stringr2   r   r=   ri   r   r\   )r   r  emailr  	localfilestatsrd   modifiedmtyper`   origurlexps   &&          rC   open_local_fileFileHandler.open_local_file  s     dQUV		.GGI&E==D{{--ennT-JH--i8;E//K&&,789G #9>Gd9d3WFF 	.3--	.s   A6C 1C C0C++C0r   )
r   r   r   r   r  r  r  	file_openr   r   r   s   @rC   r)   r)     s     E!."  IrD   c                 j   V '       d   V R 8X  d   R#  \         P                  ! 4       pW8X  d   R#  V'       g   R#  \         P                  ! V 4      pT\        4       P                  4       9   #   \         P                  \        3 d     LYi ; i  \         P                  \        \
        3 d     R# i ; i)r  TF)r  r  r  AttributeErrorr  UnicodeEncodeErrorr)   r  )rp  resolvehostnameaddresss   &&  rC   _is_local_authorityr    s    	[0%%'   ! &&y1 km--/// OO^,  OO^-?@ s"   A- B -B
B B21B2c                   ,   a  ] tR tRt o R tR tRtV tR# )r*   i  c                   ^ RI p^ RIpVP                  pV'       g   \        R4      h\	        V4      w  rEVf   VP
                  pM\        V4      p\        V4      w  rdV'       d   \        V4      w  rgMRp\        V4      pT;'       g    RpT;'       g    Rp \        P                  ! V4      p\        TP                  4      w  rT	P                  R4      p\!        \#        \        T4      4      pTRR TR,          rT'       d   T^ ,          '       g
   TR,          p T P%                  YgYEYP&                  4      pT;'       d    R;'       g    RpT
 FA  p\)        T4      w  ppTP+                  4       R8X  g   K(  TR9   g   K1  TP-                  4       pKC  	  TP/                  Y4      w  ppRpTP1                  TP2                  4      ^ ,          pT'       d   TR	T,          ,          pTe   T^ 8  d   TR
T,          ,          p\4        P6                  ! T4      p\9        TTTP2                  4      #   \         d   p\        T4      hRp?ii ; i  TP:                   d   p\        RT 24      ThRp?ii ; i)r   Nzftp error: no host givenrm   rU  rl   NNr  Dr   zContent-type: %s
zContent-length: %d
ftp error: rL   )aAr   r  rH  r  )ftplibr  ru   r   r   FTP_PORTrX   r   r   r   r  r  ri   r   r   r  r   mapconnect_ftpr@   r   rs   upperretrfile
guess_typero   r  r  r   
all_errors)r   r  r  r  ru   r  ru  r  r<  rQ   attrsdirsrH   fwr   attrr   r_   retrlenr`   r  r  s   &&                    rC   ftp_openFTPHandler.ftp_open  s%   xx566%
<??Dt9D  %
'-LD&Ft}zzr2	 ''-D !.zz#C&'#2YRdQ8D	9!!$D++NB<<C&&3D)$/e::<6):: ;;=D	 
 ++d1KBG((6q9E/%77"w!|1G;;//8Gb'3<<881  	 3-	 2    	9[./S8	9sC   H1 /I (I <I B+I 1I<III4 I//I4c           
          \        WW4WVR R7      # )F)
persistent)
ftpwrapper)r   ru  r  ru   r  r  r@   s   &&&&&&&rC   r  FTPHandler.connect_ftp  s    $D%*, 	,rD   r   N)r   r   r   r   r  r  r   r   r   s   @rC   r*   r*     s     29h, ,rD   c                   D   a  ] tR tRt o R tR tR tR tR tR t	Rt
V tR	# )
r+   i  c                L    / V n         / V n        ^ V n        ^<V n        ^V n        R# r	  )cacher@   soonestdelay	max_connsr   s   &rC   r   CacheFTPHandler.__init__  s%    

rD   c                    Wn         R # rF   )r  )r   ts   &&rC   
setTimeoutCacheFTPHandler.setTimeout$  s    
rD   c                    Wn         R # rF   )r  )r   rL  s   &&rC   setMaxConnsCacheFTPHandler.setMaxConns'  s    rD   c                   WVR P                  V4      V3pWpP                  9   d5   \        P                  ! 4       V P                  ,           V P                  V&   MM\        WW4WV4      V P                  V&   \        P                  ! 4       V P                  ,           V P                  V&   V P                  4        V P                  V,          # )rU  )joinr  r  r  r@   r  check_cache)r   ru  r  ru   r  r  r@   r   s   &&&&&&& rC   r  CacheFTPHandler.connect_ftp*  s    $7** $		djj 8DLL(t)-8DJJsO $		djj 8DLLzz#rD   c                   \         P                   ! 4       pV P                  V8:  dp   \        V P                  P	                  4       4       FH  w  r#W18  g   K  V P
                  V,          P                  4        V P
                  V V P                  V KJ  	  \        \        V P                  P                  4       4      4      V n        \        V P
                  4      V P                  8X  d   \        V P                  P	                  4       4       F1  w  r#W0P                  8X  g   K  V P
                  V V P                  V  M	  \        \        V P                  P                  4       4      4      V n        R # R # rF   )r  r  r   r@   r|   r  r   minvaluesrZ   r  )r   r  rN  rO  s   &   rC   r   CacheFTPHandler.check_cache5  s   IIK<<1T\\//125JJqM'')

1Q	 3
 4 3 3 567 tzz?dnn,T\\//12$

1Q	 3
 tDLL$7$7$9:;DL -rD   c                    V P                   P                  4        F  pVP                  4        K  	  V P                   P                  4        V P                  P                  4        R # rF   )r  r  r   clearr@   )r   conns   & rC   clear_cacheCacheFTPHandler.clear_cacheI  sB    JJ%%'DJJL (

rD   )r  r  r  r  r@   N)r   r   r   r   r   r  r  r  r   r	  r   r   r   s   @rC   r+   r+     s(     	<( rD   c                   &   a  ] tR tRt o R tRtV tR# )r,   iO  c                   VP                   pVP                  R ^4      w  r4VP                  R^4      w  rT\        V4      pVP                  R4      '       d   \        P
                  ! V4      pVRR pV'       g   Rp\        P                  ! RV\        V4      3,          4      p\        \        P                  ! V4      Wb4      # )r  r.  z;base64Nztext/plain;charset=US-ASCIIz$Content-type: %s
Content-length: %d
i)ro   r  r   endswithr  decodebytesr  r  rZ   r   ioBytesIO)r   r  r>   r[  r?   	mediatyper`   s   &&     rC   	data_openDataHandler.data_openP  s     llyyQ'**S+	  %i((%%d+D!#2I5I++,TD	"-# $ "**T*G99rD   r   N)r   r   r   r   r  r   r   r   s   @rC   r,   r,   O  s     : :rD   r  r  c                   V'       g
   R V ,           p \        V 4      R,          w  r4p VR8w  d   \        R4      h\        P                  R8X  d   VR,          R8X  d
   W@,           p M\	        WB4      '       g   RV,           V ,           p MiV R,          R8X  d   V R	,          p MQV R
,          R8X  d   V R,          R9   d
   V R	,          p V R,          R8X  d   V R
,          R,           V R,          ,           p V P                  RR4      p M\	        WB4      '       g   \        R4      h\        P                  ! 4       p\        P                  ! 4       p\        WVR7      # )file:N   NrH   zURL is missing a 'file:' schement:rl   r7   Nr  rl  ///r  :Nrl   NrU  :r7   r  N|:r7   NNr  z-file:// scheme is supported only on localhostrV  errors)r  r  )
r   r   rP   rU   r  rJ  r  getfilesystemencodinggetfilesystemencodeerrorsr   )r>   r  r  r[  rp  rV  r  s   &$$    rC   r3   r3   p  s    m%c]2.Fs899	ww$S>S /C$Y=="S(CWb'C2w#~#c(j"8"g3x3"gmc"g-kk#t$ 99FGG((*H**,F3&99rD   r  c                J   \         P                  R 8X  d   V P                  RR4      p \        P                  ! 4       p\        P
                  ! 4       pV'       d   RMRp\         P                  P                  V 4      w  rVpV'       dj   VR,          R8X  d6   VR,          pVR,          P                  4       R8X  d   R	VR,          ,           pVR
,          R8X  d
   RV,           p\        WRVRR7      pMV'       d
   R	V,           p\        WrVR7      pWE,           V,           V,           # )r  r  rU  r  rm   N   Nz//?/:r!  NNzUNC/rl  r  r  r  z/:)rV  r  rW  r  )
rP   rU   rJ  r  r  r  rQ   	splitrootr  r
   )pathnamer  rV  r  r[  driveroottails   &$      rC   r2   r2     s     
ww$##D#.((*H**,F"WF))(3E 9"IERy F*uRy(9 EMEevDI	
 d{8D>D 4''rD   c                  J    \         f   \        P                  ! R4      s \         # r  )
_localhostr  r  r   rD   rC   r  r    s      ))+6
rD   c                  *   \         fA    \        \        P                  ! \        P                  ! 4       4      ^,          4      s \         # \         #   \        P
                   d/    \        \        P                  ! R4      ^,          4      s  \         # i ; ir  )	_thishostr  r  r  r  r  r   rD   rC   thishostr+    sw     	Gf55f6H6H6JKANOI 9  	Gf55kB1EFI	Gs   9A ;BBc                  >    \         f   ^ R Ip V P                  s \         # rF   )
_ftperrorsr  r  )r  s    rC   	ftperrorsr.    s     &&
rD   c                  J    \         f   \        P                  ! R4      s \         # r   )
_noheadersr  r  r   rD   rC   	noheadersr1    s      ..r2
rD   c                   N   a  ] tR tRt o RR ltR tR tR tR tR t	R	 t
R
tV tR# )r  i  Nc                    Wn         W n        W0n        W@n        WPn        W`n        ^ V n        Wpn         V P                  4        R#    T P                  4        h ; ir	  )
ru  r  ru   r  r  r@   refcount	keepaliveinitr   )r   ru  r  ru   r  r  r@   r  s   &&&&&&&&rC   r   ftpwrapper.__init__  sM    				#	IIK	JJLs   A Ac                   ^ RI p^ V n        VP                  4       V n        V P                  P	                  V P
                  V P                  V P                  4       V P                  P                  V P                  V P                  4       RP                  V P                  4      pV P                  P                  V4       R# )r   NrU  )r  busyFTPrZ  connectru   r  r@   loginru  r  r  r  cwd)r   r  _targets   &  rC   r6  ftpwrapper.init  sw    	::<DIIt||<tyy$++.((499%WrD   c                   ^ RI pV P                  4        VR9   d   Rp^pMRV,           p^ p V P                  P                  V4       RpV'       d0   V'       g(    RV,           pV P                  P                  V4      w  rgV'       g   V P                  P                  R4       V'       d^   V P                  P                  4       p	  V P                  P                  V4        T P                  P                  T	4       R	T,           pMR
pV P                  P                  V4      w  rg^V n        \        VP                  R4      V P                  4      p
V ;P                   ^,          un        VP#                  4        V
X3#   TP                   d0    T P                  4        T P                  P                  T4        ELxi ; i  TP                   d2   p\        T4      R,          R8w  d   \        RT 24      Th Rp?ELRp?ii ; i  TP                   d   p\        RT,          4      ThRp?ii ; i  T P                  P                  T	4       i ; i)r   NzTYPE AzTYPE zRETR r  550r  zftp error: %rzLIST LISTr  )rH  r  )r  endtransferrZ  voidcmdr  r6  ntransfercmd
error_permr  r   pwdr=  r9  r   makefile
file_closer4  r   )r   rH   r   r  cmdisdirr  r  ry  rG  ftpobjs   &&&        rC   r  ftpwrapper.retrfile  s   :XsqudNcAE	"HHS! Gn $ 5 5c : HHX&hhlln&MT* HHLL%n HH11#6MD	dmmD14??C

  G    	"IIKHHS!	" $$ Gv;r?e+"[#9:F ,G ",, M&'?@fLM HHLL%sM   F &G H	 <G GH&HH	H2H--H22H5 5Ic                    V P                   '       g   R # ^ V n          V P                  P                  4        R #   \        4        d     R # i ; irF   )r9  rZ  voidrespr.  r   s   &rC   rC  ftpwrapper.endtransfer+  s>    yyy		HH{ 		s   9 AAc                Z    R V n         V P                  ^ 8:  d   V P                  4        R# R# )FN)r5  r4  
real_closer   s   &rC   r   ftpwrapper.close4  s$    ==AOO rD   c                    V P                  4        V ;P                  ^,          un        V P                  ^ 8:  d'   V P                  '       g   V P                  4        R# R# R# )rl   N)rC  r4  r5  rR  r   s   &rC   rI  ftpwrapper.file_close9  sB    ==AdnnnOO '5rD   c                    V P                  4         V P                  P                  4        R #   \        4        d     R # i ; irF   )rC  rZ  r   r.  r   s   &rC   rR  ftpwrapper.real_close?  s5    	HHNN{ 		s   . A A)
r9  r  rZ  ru   r5  r  r  r4  r@   ru  )NT)r   r   r   r   r   r6  r  rC  r   rI  rR  r   r   r   s   @rC   r  r    s.      *!X
 rD   r  c                     / p . p\         P                   F  p\        V4      ^8  g   K  VR,          R8X  g   K%  VRR P                  4       R8X  g   K?  \         P                  V,          pVRR P                  4       pVP	                  W#V34       V'       g   K  W0V&   K  	  R\         P                  9   d   V P                  RR4       V F2  w  r#pVRR R8X  g   K  V'       d   W0V&   K   V P                  VR4       K4  	  V # )	   r   Nrn  REQUEST_METHODr  _proxyi)rP   environrZ   rs   rW   r   )r~  environmentrU   r   
proxy_names        rC   getproxies_environmentr`  G  s     GK

t9q=T"X_bc1Bg1MJJt$Ecr*JZ89u&+
#  2::%FD!#.Z9 &+
#J- $/ NrD   c                    Vf   \        4       p VR,          pTR8X  d   R# T P                  4       p \        T 4      w  r4TP	                  R4       F  pTP                  4       pT'       g   K  TP                  R4      pTP                  4       pY58X  g   Y8X  d    R# RT,           pTP                  T4      '       g   T P                  T4      '       g   K   R# 	  R#   \         d     R# i ; i)NnoF*Tr.  .)r`  r/  rs   r   r  r  lstripr  )ru   r~  no_proxyhostonlyr  rU   s   &&    rC   proxy_bypass_environmentrh  j  s     (*4= 3::<D%NHs#zz|4;;s#D::<D4<:D  &&$--*=*= $ )  s   	C C,+C,c                    ^ RI H p ^ RIHpHp \	        V 4      w  rVR pRV 9  d   VR,          '       d   R# Rp \        V! V4      4      pVP                  RR4       F  p	V	'       g   K  \        P                  ! R	V	4      p
V
e   Ve   V! V
P                  ^4      4      pV
P                  ^4      pVf0   ^V
P                  ^4      P                  R4      ^,           ,          pM\        VR
,          4      pV^ 8  g   V^ 8  d   K  ^ V,
          pW,	          W,	          8X  d    R# K  V! W	4      '       g   K   R# 	  R#   T d     Li ; i)r   fnmatch)AddressValueErrorIPv4Addressc                 *   V P                  R 4      p\        \        \        V4      4      p\	        V4      ^8w  d   V. RO,           R,          pV^ ,          ^,          V^,          ^,          ,          V^,          ^,          ,          V^,          ,          # )rd  r   )r   r   r   r   )r  r   r  rX   rZ   )ipAddrr  s   & rC   ip2num,_proxy_bypass_macosx_sysconf.<locals>.ip2num  sk    S!Se_%u:?\)2.EaB58r>2eAh!mDuQxOOrD   rd  exclude_simpleTN
exceptionsz(\d+(?:\.\d+)*)(/\d+)?r  Fr   )rk  	ipaddressrl  rm  r   rX   r   r  matchgroupcount)ru   proxy_settingsrk  rl  rm  rg  r  rp  hostIPr   rL  r  masks   &&           rC   _proxy_bypass_macosx_sysconfr{    s/     8%NHP $*++F[*+  ##L"5hHH.6=V/!''!*%D771:D|AGGAJ,,S1A5648}ax4"99DDL1 2 T!!/ 62 9  s   D> >EEc                     ^ RI H p \        V 4      w  rVP                  R4      pV F7  pVP                  4       pVR8X  d   RV 9  d    R# K&  V! W4      '       g   K6   R# 	  R# )r   rj  ;z<local>rd  TF)rk  r   r  r  )ru   overriderk  r   proxy_overrider  s   &&    rC   _proxy_bypass_winreg_overrider    s`      GD^^C(Nzz|9$ T    rD   darwin)_get_proxy_settings_get_proxiesc                 ,    \        4       p\        W4      # rF   )r  r{  )ru   rx  s   & rC   proxy_bypass_macosx_sysconfr    s    ,.+DAArD   c                      \        4       # rF   )r  r   rD   rC   getproxies_macosx_sysconfr    s     ~rD   c                 R    \        4       pV'       d   \        W4      # \        V 4      # rF   )r`  rh  r  ru   r~  s   & rC   r  r    s%     )*+D::.t44rD   c                  :    \        4       ;'       g    \        4       # rF   )r`  r  r   rD   rC   r4   r4     s    %'FF+D+FFrD   r  c                  T   / p  ^ RI p TP                  TP                  R4      pTP	                  TR4      ^ ,          pT'       Ed"   \        TP	                  TR4      ^ ,          4      pRT9  d   RT9  d   RP                  T4      pTP                  R4       FY  pTP                  R^4      w  rg\        P                  ! RT4      '       g"   TR9   d   RT,           pMTR8X  d
   RT,           pYpT&   K[  	  T P                  R4      '       d\   \        P                  ! RRT R,          4      pT P                  R	4      ;'       g    TT R	&   T P                  R
4      ;'       g    TT R
&   TP                  4        T #   \         d    T u # i ; i  \        \        \        3 d     T # i ; i)r   N;Software\Microsoft\Windows\CurrentVersion\Internet SettingsProxyEnableProxyServerr  r}  zhttp={0};https={0};ftp={0}z(?:[^/:]+)://r  r   zhttp://sockszsocks://z	^socks://z	socks4://)r  r   rZ  )winregImportErrorOpenKeyHKEY_CURRENT_USERQueryValueExr  r   r  r  ru  r   rr   Closeri   r   r   )r~  r  internetSettingsproxyEnableproxyServerpr   r  s           rC   getproxies_registryr  
  s    	"	%~~f.F.FN P --.>/<>>?AK{!&"5"56F7D#FFG#I Jk)c.D">"E"Ek"RK$**3/A()Q%H88OW==#'??&/'&9G%0&07&:G(/H% 0 ;;w'' ff\;@PQG&-kk&&9&D&DWGFO'.{{7';'F'FwGG$""$ M  	N	B Y/ 	 	s;   E: =F CF 6F F "F :F
	F
F'&F'c                  :    \        4       ;'       g    \        4       # rF   )r`  r  r   rD   rC   r4   r4   ;  s     &'@@+>+@@rD   c                 >    ^ RI p TP                  TP                  R4      pTP	                  TR4      ^ ,          p\        TP	                  TR4      ^ ,          4      pT'       d	   T'       g   R# \        Y4      #   \         d     R# i ; i  \         d     R# i ; i)r   NFr  r  ProxyOverride)r  r  r  r  r  r  ri   r  )ru   r  r  r  proxyOverrides   &    rC   proxy_bypass_registryr  D  s    			%~~f.F.FN P --.>/<>>?AK 3 34D5D!FFG!I JM
 -,TAA  		  		s#   A; AB ;B
	B
BBc                 R    \        4       pV'       d   \        W4      # \        V 4      # rF   )r`  rh  r  r  s   & rC   r  r  X  s%     )*+D::(..rD   r  rF   )ur  r   rM   r  r   http.clientr  r  rP   r  r  r]  r  r  rS   urllib.errorr   r   r   urllib.parser   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   urllib.responser   r   ssl	_have_sslr  __all__version_infor   r<   r  r/   r0   rV   r5   r6   r  ASCIIrq   rv   r   r   r1   r   r.   r   r   rw  r   r   r    r!   r"   r#   r$   urandomr  r%   r&   r'   rW  r(   r   r!  r;   rW   r   r-   r  r  r)   r  r*   r+   r,   r3   r2   r(  r  r*  r+  r-  r.  r0  r1  r  r`  rh  r{  r  platform_scproxyr  r  r  r  r  r4   rU   r  r  r   rD   rC   <module>r     s}  h       	 	 	   
   C B" " " " "
 5 I!.0I  1 3A 	 9	
 #
 %?  4 6Q  6 8E    "3 5B  +    "0  # %1   $ ((,,
F$B$B 2+2+h :x zz(BHH- k" k"ZI+ I+^"H8 8&# #";k ;o2+ o2d,B)>; )>V=* =*@Go G3#B 3>l# l#`3[ 4k   zzR RjK)B $
[*C 
s+ sl3% 3 4;;)**8* 8$ NN>"#+ #$6[ 6
)*V +  B0(7, 7,r3j 3j:+ :B$: $:E $:N (  (J 
 	 
 
a aH!F J<@0 <<8:B5G WW_/bAB(/ (J+Ls?  Is   0K2 2	K?>K?