
    i                        S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	J
r
JrJr  SSKJr  SSKJrJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJrJr  SSKJr  SSKJr  SSKJrJ r   SSKJ!r"  SSKJ#r$  SSKJ%r%J&r&  SSK'J(r(J)r)  \*" \5      r+\*" \5      r,S r-S)S jr.S r/S r0S r1S r2S r3S r4S r5S r6 " S S\5      r7\7r8 " S  S!\Rr                  Rt                  5      r;S" r<S# r=S*S$ jr>S*S% jr?S& r@S' rAS( rBg)+zGNo longer used and new code should not use. Exists only for API compat.    N   )Popendecode_base_npreferredencodingtraverse_obj   )certifi
websockets)make_ssl_context)HTTPHandler)escape_rfc3986)normalize_url)random_user_agentstd_headers)YoutubeDLCookieJar)
PUTRequest)SUPPORTED_ENCODINGSHEADRequest)ProxyHandler)RedirectHandler)make_socks_conn_classupdate_Request)	HTTPErrornetwork_exceptionsc                 D    SSK Jn  U" X5      nUR                  U5        U$ )Nr	   )load_plugins)pluginsr   update)namesuffix	namespacer   rets        A/app/mltbenv/lib/python3.13/site-packages/yt_dlp/utils/_legacy.pyr   r   #   s"    &
t
$CSJ    c                     [        XUSSS9$ )NT)	casesenseis_user_inputtraverse_stringr   )dictnkeysr'   s      r$   traverse_dictr,   *   s    y^bccr%   c                     [        XS9$ )N)table)r   )valuedigitss     r$   decode_baser1   .   s    --r%   c                  ,    [         R                   " 5       $ )z#Returns the platform name as a str )platform r%   r$   platform_namer5   2   s    r%   c                      [         R                  S:X  a'  [         R                  " 5       S   S:  a  [        5       n O[         R                  " 5       n U c  Sn U $ )Nwin32r      zutf-8)sysr3   getwindowsversionr   getfilesystemencoding)encodings    r$   get_subprocess_encodingr=   7   sK    
||w3#8#8#:1#=#B %&,,.Or%   c                   ^^^  U SS  nU S S S:w  d	  USS S:w  a  [        S5      eSSSS	.mU4S
 jn/ nU(       aF  U" US S 5      nUSS  nUS S nUSS  nUS U nXS  nUSS  nUR                  UUUS.5        U(       a  MF  US   S   nU" US S 5      nU" USS 5      n	Sn
U H  nUS   S:X  d  M  XS   -  n
M     U
(       d  [        S5      e[        [        R                  " U
5      5      nUS-  m / mUU 4S jn[        U	5       GH8  nUST -   -  nX   n/ nTR                  U5        [        T 5       GH  nUSU-   U-      nUT -  U-   nSnSnUS:  a  U" US-
  5      nUS:  a  U" UT -
  5      nUS:X  a	  UU-   S-  nOUS:X  a	  UU-   S-  nOUS:X  a  UUU-   S-	  -   S-  nOUS:X  a~  UnUnSnUS:  a  US:  a  U" UT -
  S-
  5      nUU-   U-
  n[        UU-
  5      n[        UU-
  5      n[        UU-
  5      nUU::  a  UU::  a	  UU-   S-  nOUU::  a	  UU-   S-  nOUU-   S-  nUR                  U5        GM     GM;     XT4$ )N   s   PNG

   s   IHDRzNot a valid PNG file.z>Bz>Hz>I)r   r	   r@   c                 P   > [         R                  " T[        U 5         U 5      S   $ )Nr   )structunpacklen)xint_maps    r$   <lambda>decode_png.<locals>.<lambda>N   s    v}}WSV_a@Cr%   )typelengthdatar   rK   r%   rI   s   IDATzUnable to read PNG data.   c                 (   > U T-  nU T-  nTU   U   $ Nr4   )idxrE   ypixelsstrides      r$   
_get_pixeldecode_png.<locals>._get_pixelw   s#    &L6May|r%   r   r	      )OSErrorappend	bytearrayzlib
decompressrangeabs)!png_dataheaderunpack_integerchunksrJ   
chunk_type
chunk_dataihdrwidthheightidatchunkdecompressed_datarS   rP   base_posfilter_typecurrent_rowrE   colorbasexleftupabcppapbpcrF   rQ   rR   s!                                 @@@r$   
decode_pngrw   F   s   ab\F|11VAa[G5K-..4D)GCNF
r
+BQZ
GV_

 	 &$ !9VD48$ED1I&FD=G#&M!D  011!$//$"78QYFF
 6]F
#'1k"vA%a(lQ&67EJNEDB1u!%!),1u/a-!t+!4"9"23t;!q5QU"56>A#56AEAIQZQZQZ8b"QY$.E2X"QY$.E"QY$.Eu%M  ` &  r%   c                      S HL  n U [         R                  R                  ;  d  M#  [         R                  R                  R                  U 5        MN     g )N)sockssocks4socks4asocks5)urllibparseuses_netlocrW   )schemes    r$   register_socks_protocolsr      s8     ;111LL$$++F3 ;r%   c                     U nSU;   a=  UR                  5        VVs0 s H  u  p#UR                  5       S:w  d  M  X#_M     nnnUS	 U$ s  snnf )NzYoutubedl-no-compressionzaccept-encoding)itemslower)headersfiltered_headerskvs       r$   handle_youtubedl_headersr      sZ    !%55-=-C-C-Eh-ETQVgIgDAD-Eh78 is
   AAc                 x    [        U [        R                  R                  5      (       a  U R	                  5       $ U $ rN   )
isinstancer}   requestRequestget_full_url)reqs    r$   request_to_urlr      s-    #v~~--..!!
r%   c                     SSK JnJn  U" [        U" U 5      5      5      u  pUb*  [	        U5      S:  a  US   OUR                  S0 5      nXVS'   [        R                  R                  " U /UQ70 UD6$ )Nr	   )extract_basic_authsanitize_urlr   r   Authorization)	utilsr   r   
escape_urlrD   
setdefaultr}   r   r   )urlargskwargsr   r   auth_headerr   s          r$   sanitized_Requestr      sk    8)*\#5F*GHC Y!^$q'1B1B9b1Q#. >>!!#7777r%   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )YoutubeDLHandler   c                 2   > Xl         [        TU ]  " U0 UD6  g rN   )_paramssuper__init__)selfparamsr   r   	__class__s       r$   r   YoutubeDLHandler.__init__   s    $)&)r%   )r   )__name__
__module____qualname____firstlineno__r   __static_attributes____classcell__)r   s   @r$   r   r      s    * *r%   r   c                   h    \ rS rSrSS jrS r\R                  R                  R                  r
\rSrg)YoutubeDLCookieProcessor   Nc                 V    [         R                  R                  R                  X5        g rN   )r}   r   HTTPCookieProcessorr   )r   	cookiejars     r$   r   !YoutubeDLCookieProcessor.__init__   s    **33DDr%   c                 V    [         R                  R                  R                  XU5      $ rN   )r}   r   r   http_response)r   r   responses      r$   r   &YoutubeDLCookieProcessor.http_response   s    ~~11??xXXr%   r4   rN   )r   r   r   r   r   r   r}   r   r   http_requesthttps_requesthttps_responser   r4   r%   r$   r   r      s*    EY NN66CCM"Nr%   r   c                     [        U 4S[        U R                  S5      (       + U R                  S5      U R                  S5      U R                  S5      U R                  S5      SU R                  S/ 5      ;  S	90UD6$ )
Ncontextnocheckcertificateclient_certificateclient_certificate_keyclient_certificate_passwordlegacyserverconnectz
no-certificompat_opts)verifyr   r   r   legacy_supportuse_certifi)YoutubeDLHTTPSHandlerr   get)r   r   s     r$   make_HTTPS_handlerr      s      1A::233!::&:;%zz*BC$*JJ/L$Mzz"78 

="(EE2  
 r%   c                 6    [         R                  " U /UQ70 UD6$ rN   )r   communicate_or_kill)rs   r   r   s      r$   process_communicate_or_killr      s    $$Q8888r%   c                 4    [        U [        5      (       d   eU $ rN   )r   str)sfor_subprocesss     r$   encodeFilenamer      s    aHr%   c                     U $ rN   r4   )rq   r   s     r$   decodeFilenamer          Hr%   c                     U $ rN   r4   )rq   s    r$   decodeArgumentr      r   r%   c                     U c  U $ [        U [        5      (       a  U R                  [        5       5      n [        U [        5      (       d   eU $ rN   )r   bytesdecoder   r   )optvals    r$   decodeOptionr     sC    ~&%  023fc""""Mr%   c                     [        U 5      $ rN   )r   )errs    r$   error_to_compat_strr     s    s8Or%   )T)F)C__doc__r3   rB   r9   urllib.errorr}   urllib.parseurllib.requestrY   _utilsr   r   r   	traversalr   dependenciesr
   r   networking._helperr   networking._urllibr   
networkingr   r   r   r   r   cookiesr   r   r   r   r   PerRequestProxyHandlerr   YoutubeDLRedirectHandlerr   r   networking.exceptionsr   r   boolhas_certifihas_websocketsr   r,   r1   r5   r=   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r4   r%   r$   <module>r      s    M   
     ; ; # . 1 , ' 3 6 ( + A G L B7mj!d.
	f!R48*{ * ) #v~~AA #9
r%   