
    V|h(                        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	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 S5      r/S r0S+S jr1S r2S r3S r4S r5S r6S r7S r8S r9 " S  S!\5      r:\:r; " S" S#\Rx                  Rz                  5      r>S$ r?S% r@S,S& jrAS,S' jrBS( rCS) rDS* rEg)-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                   ^    \ rS rSrSrSrSS jrS rS rS r	S r
\S	 5       r\S
 5       rSrg)WebSocketsWrapper%   z2Wraps websockets module to use in non-async scopesNc           
      (   [         R                  " 5       U l        [        R                  " U4US [        S5      U R                  [        S5      S.UD6U l        U(       a  U R                  5         [        R                  " U R                  S S S 5        g )Ninf)extra_headersping_intervalclose_timeoutloopping_timeout)asyncionew_event_loopr$   r   connectfloatconn	__enter__atexitregister__exit__)selfurlheadersr(   	ws_kwargss        N/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/utils/_legacy.py__init__WebSocketsWrapper.__init__)   st    **,	&&`&d,TYYU5\`U^`	 NNtT48    c                     U R                   (       d9  U R                  U R                  R                  5       U R                  5      U l         U $ N)poolrun_with_loopr*   
__aenter__r$   )r/   s    r3   r+   WebSocketsWrapper.__enter__3   s3    yy**499+?+?+A499MDIr6   c                 j    U R                  U R                  R                  " U6 U R                  5        g r8   )r:   r9   sendr$   r/   argss     r3   r>   WebSocketsWrapper.send8   s#    499>>40$))<r6   c                 h    U R                  U R                  R                  " U6 U R                  5      $ r8   )r:   r9   recvr$   r?   s     r3   rC   WebSocketsWrapper.recv;   s&    !!$))..$"7CCr6   c                 N    U R                  U R                  R                  XU5      U R                  5      U R                  R	                  5         U R                  U R                  5        $ ! U R                  R	                  5         U R                  U R                  5        f = fr8   )r:   r*   	__aexit__r$   close_cancel_all_tasks)r/   typevalue	tracebacks       r3   r.   WebSocketsWrapper.__exit__>   ss    	.%%dii&9&9$y&QSWS\S\]IIOO""499- IIOO""499-s   5A- -7B$c                    [         R                  " U 5      (       d  [        SU < 35      e UR                  U 5      UR                  UR	                  5       5        [        US5      (       a   UR                  UR                  5       5        $ $ ! UR                  UR	                  5       5        [        US5      (       a   UR                  UR                  5       5        f f = f)Nza coroutine was expected, got shutdown_default_executor)r&   iscoroutine
ValueErrorrun_until_completeshutdown_asyncgenshasattrrN   )mainr$   s     r3   r:   WebSocketsWrapper.run_with_loopG   s    ""4((=dXFGG	J**40##D$;$;$=>t899''(F(F(HI : ##D$;$;$=>t899''(F(F(HI :s   B ACc                 h   [         R                  " U 5      nU(       d  g U H  nUR                  5         M     U R                  [         R                  " XSS.65        U HP  nUR                  5       (       a  M  UR                  5       c  M-  U R                  SUR                  5       US.5        MR     g )NT)r$   return_exceptionsz1unhandled exception during asyncio.run() shutdown)message	exceptiontask)r&   	all_taskscancelrQ   gather	cancelledrY   call_exception_handler)r$   	to_cancelrZ   s      r3   rH   #WebSocketsWrapper._cancel_all_tasksS   s    %%d+	DKKM  	NNIDI	K D~~~~+++R!%!1 - 	 r6   )r*   r$   r9   )NT)__name__
__module____qualname____firstlineno____doc__r9   r4   r+   r>   rC   r.   staticmethodr:   rH   __static_attributes__ r6   r3   r   r   %   sN    <D9
=D. 	J 	J  r6   r   c                 D    SSK Jn  U" X5      nUR                  U5        U$ )Nr	   )load_plugins)pluginsrk   update)namesuffix	namespacerk   rets        r3   rk   rk   l   s"    &
t
$CSJr6   c                     [        XUSSS9$ )NT)	casesenseis_user_inputtraverse_stringr   )dictnkeysrs   s      r3   traverse_dictrx   s   s    y^bccr6   c                     [        XS9$ )N)table)r   )rJ   digitss     r3   decode_baser|   w   s    --r6   c                  ,    [         R                   " 5       $ )z#Returns the platform name as a str )platformri   r6   r3   platform_namer   {   s    r6   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)sysr~   getwindowsversionr   getfilesystemencoding)encodings    r3   get_subprocess_encodingr      sK    
||w3#8#8#:1#=#B %&,,.Or6   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    r3   <lambda>decode_png.<locals>.<lambda>   s    v}}WSV_a@Cr6   )rI   lengthdatar   r   r6   rI   s   IDATzUnable to read PNG data.   c                 (   > U T-  nU T-  nTU   U   $ r8   ri   )idxr   ypixelsstrides      r3   
_get_pixeldecode_png.<locals>._get_pixel   s#    &L6May|r6   r   r	      )OSErrorappend	bytearrayzlib
decompressrangeabs)!png_dataheaderunpack_integerchunksr   
chunk_type
chunk_dataihdrwidthheightidatchunkdecompressed_datar   r   base_posfilter_typecurrent_rowr   colorbasexleftupabcppapbpcr   r   r   s!                                 @@@r3   
decode_pngr      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  ` &  r6   c                      S HL  n U [         R                  R                  ;  d  M#  [         R                  R                  R                  U 5        MN     g )N)sockssocks4socks4asocks5)urllibparseuses_netlocr   )schemes    r3   register_socks_protocolsr      s8     ;111LL$$++F3 ;r6   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)r1   filtered_headerskvs       r3   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 $ r8   )
isinstancer   requestRequestget_full_url)reqs    r3   request_to_urlr     s-    #v~~--..!!
r6   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   r1   Authorization)	utilsr   r   
escape_urlr   
setdefaultr   r   r   )r0   r@   kwargsr   r   auth_headerr1   s          r3   sanitized_Requestr     sk    8)*\#5F*GHC Y!^$q'1B1B9b1Q#. >>!!#7777r6   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )YoutubeDLHandleri  c                 2   > Xl         [        TU ]  " U0 UD6  g r8   )_paramssuperr4   )r/   paramsr@   r   	__class__s       r3   r4   YoutubeDLHandler.__init__  s    $)&)r6   )r   )rb   rc   rd   re   r4   rh   __classcell__)r   s   @r3   r   r     s    * *r6   r   c                   h    \ rS rSrSS jrS r\R                  R                  R                  r
\rSrg)YoutubeDLCookieProcessori$  Nc                 V    [         R                  R                  R                  X5        g r8   )r   r   HTTPCookieProcessorr4   )r/   	cookiejars     r3   r4   !YoutubeDLCookieProcessor.__init__%  s    **33DDr6   c                 V    [         R                  R                  R                  XU5      $ r8   )r   r   r   http_response)r/   r   responses      r3   r   &YoutubeDLCookieProcessor.http_response(  s    ~~11??xXXr6   ri   r8   )rb   rc   rd   re   r4   r   r   r   r   http_requesthttps_requesthttps_responserh   ri   r6   r3   r   r   $  s*    EY NN66CCM"Nr6   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     r3   make_HTTPS_handlerr  /  s      1A::233!::&:;%zz*BC$*JJ/L$Mzz"78 

="(EE2  
 r6   c                 6    [         R                  " U /UQ70 UD6$ r8   )r   communicate_or_kill)r   r@   r   s      r3   process_communicate_or_killr  :  s    $$Q8888r6   c                 4    [        U [        5      (       d   eU $ r8   )r   str)sfor_subprocesss     r3   encodeFilenamer  >  s    aHr6   c                     U $ r8   ri   )r   r  s     r3   decodeFilenamer  C      Hr6   c                     U $ r8   ri   )r   s    r3   decodeArgumentr  G  r  r6   c                     U c  U $ [        U [        5      (       a  U R                  [        5       5      n [        U [        5      (       d   eU $ r8   )r   bytesdecoder   r
  )optvals    r3   decodeOptionr  K  sC    ~&%  023fc""""Mr6   c                     [        U 5      $ r8   )r
  )errs    r3   error_to_compat_strr  U  s    s8Or6   )T)F)Frf   r&   r,   r~   r   r   urllib.errorr   urllib.parseurllib.requestr   _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   rk   rx   r|   r   r   r   r   r   r   r   r   r  r   r   r   r  r  r  r  r  r  r  ri   r6   r3   <module>r+     s    M     
     ; ; # . 1 , ' 3 6 ( + A G L B7mj!D DNd.
	f!R48*{ * ) #v~~AA #9
r6   