
    Şi#'                    (   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z
d dlZ
ddlmZ ddlmZ ddlmZmZ ej        rd dlmZ dd	lmZ dd dZd Zd Zd Z	 	 	 	 	 	 d!dZ G d d          Zd"dZd Zd Z d Z!ej"        dfe ddZ#dS )#    )annotationsN   )RequestError   )certifi)	ProxyTypesockssocket)Iterable)HTTPHeaderDictTcontextssl.SSLContextc                \   t           r+|r)|                     t          j                               d S 	 |                                  d S # t          j        $ rR t          j        dk    r*t          t          d          rdD ]}t          | |           | 
                                 Y d S w xY w)N)cafilewin32enum_certificates)CAROOT)r   load_verify_locationswhereload_default_certssslSSLErrorsysplatformhasattrssl_load_windows_store_certsset_default_verify_paths)r   use_certifi	storenames      ^C:\Users\betacode\Desktop\descargarYoutube\venv\Lib\site-packages\yt_dlp/networking/_helper.pyssl_load_certsr!      s     /; /%%W]__%=====
	/&&((((( | 	/ 	/ 	/|w&&738K+L+L&!/ E EI0)DDDD,,......	/s   A
 
AB+*B+c                
   	 d t          j        |          D             }n# t          $ r Y d S w xY w|D ]N}t          j        t           j                  5  |                     |           d d d            n# 1 swxY w Y   Od S )Nc                ^    g | ]*\  }}}|d k    r|du st           j        j        j        |v (|+S )x509_asnT)r   PurposeSERVER_AUTHoid).0certencodingtrusts       r    
<listcomp>z0ssl_load_windows_store_certs.<locals>.<listcomp>+   sQ     M M M/$%
**d]]ck&=&AU&J&J &J&J&J    )cadata)r   r   PermissionError
contextlibsuppressr   r   )ssl_contextr   certsr)   s       r    r   r   (   s    M M33H3S3S M M M     ; ; .. 	; 	;--T-:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;; ;s   ! 
//A77A;	>A;	c                Z   t           j                            |           }|j                                        dk    rt
          j        }d}n|j                                        dk    rt
          j        }d}n|j                                        dk    rt
          j        }d}nU|j                                        dk    rt
          j        }d}n)t          d|j                                                   d }||j
        |j        pd	| ||j                   ||j                  d
S )Nsocks5Fsocks5hTsocks4socks4azUnknown SOCKS proxy version: c                H    | s| S t           j                            |           S N)urllibparseunquote_plus)ss    r    unquote_if_non_emptyz3make_socks_proxy_opts.<locals>.unquote_if_non_emptyF   s%     	H|((+++r-   i8  )	proxytypeaddrportrdnsusernamepassword)r;   r<   urlparseschemelowerr   SOCKS5SOCKS4SOCKS4A
ValueErrorhostnamerB   rD   rE   )socks_proxyurl_components
socks_typerC   r?   s        r    make_socks_proxy_optsrQ   5   s:   \**;77N""$$00%
			$	$	&	&)	3	3%
			$	$	&	&(	2	2%
			$	$	&	&)	3	3&
X9N9T9T9V9VXXYYY, , ,
  '#+t(()@AA(()@AA  r-   c                :    |dk    r| dk    rd} |dv r| dk    rd} | S )z Unified redirect method handlingi/  HEADGET)i-  i.  POST )methodstatuss     r    get_redirect_methodrY   T   s=    
 }}6))
 & 0 0Mr-   Fc                \   t          j        t           j                  }| |_        | rt           j        nt           j        |_        t          |d          r&t          j	        
                    d          pd |_        t          j        t                    5  |                    dg           d d d            n# 1 swxY w Y   | rt!          ||           |r&|xj        dz  c_        |                    d           nZt           j        dk    rJt           j                            d          s+|                    d           t           j        j        |_        |rT	 |                    |||	           n"# t           j        $ r t7          d
          w xY wt9          |dd           d|_        |S )Nkeylog_filenameSSLKEYLOGFILEzhttp/1.1   DEFAULT)r   r   r   LibreSSLzX@SECLEVEL=2:ECDH+AESGCM:ECDH+CHACHA20:ECDH+AES:DHE+AES:!aNULL:!eNULL:!aDSS:!SHA1:!AESCCM)keyfilerE   z!Unable to load client certificatepost_handshake_authT)r   
SSLContextPROTOCOL_TLS_CLIENTcheck_hostnameCERT_REQUIRED	CERT_NONEverify_moder   osenvirongetr[   r0   r1   NotImplementedErrorset_alpn_protocolsr!   optionsset_ciphersOPENSSL_VERSION_INFOOPENSSL_VERSION
startswith
TLSVersionTLSv1_2minimum_versionload_cert_chainr   r   getattrra   )verifyclient_certificateclient_certificate_keyclient_certificate_passwordlegacy_supportr   r   s          r    make_ssl_contextr|   d   s	    nS455G#G/5H#++3=Gw)** J"$*.."A"A"IT
 
	0	1	1 1 1""J<0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -w,,, 91I&&&&		!Y	.	.s7J7U7UV`7a7a	. 	f	h 	h 	h"%."8 	/	D##",B4 $ 6 6 6 6 | 	D 	D 	DBCCC	D 71488D*.G'Ns   B77B;>B;E2 2Fc                  F     e Zd Z fdZed             Zd Zd Zd Z xZ	S )InstanceStoreMixinc                H    g | _          t                      j        di | d S NrV   )_InstanceStoreMixin__instancessuper__init__)selfkwargs	__class__s     r    r   zInstanceStoreMixin.__init__   s.    ""6"""""r-   c                     t           r:   )rk   )r   s    r    _create_instancez#InstanceStoreMixin._create_instance   s    !!r-   c                    | j         D ]\  }}||k    r|c S  | j        di |}| j                             ||f           |S r   )r   r   append)r   r   keyinstances       r    _get_instancez InstanceStoreMixin._get_instance   sj    !- 	  	 MCf}}  )4(22622 2333r-   c                n    t          t          |dd                     r|                                 d S d S )Nclose)callablerv   r   )r   r   s     r    _close_instancez"InstanceStoreMixin._close_instance   s>    GHgt4455 	NN	 	r-   c                |    | j         D ]\  }}|                     |           | j                                          d S r:   )r   r   clear)r   _r   s      r    _clear_instancesz#InstanceStoreMixin._clear_instances   sJ    + 	+ 	+KAx  ****     r-   )
__name__
__module____qualname__r   staticmethodr   r   r   r   __classcell__)r   s   @r    r~   r~      s        # # # # # " " \"    ! ! ! ! ! ! !r-   r~   headersr   supported_encodingsIterable[str]c                F    d| vrd                     |          pd| d<   d S d S )NzAccept-Encodingz, identity)join)r   r   s     r    add_accept_encoding_headerr      s8    ''%)YY/B%C%C%Qz!""" ('r-   c                F     t          j                    fd            }|S )Nc                `    	  | g|R i |S # t           $ r}|j        | |_         d }~ww xY wr:   )r   handler)r   argsr   efuncs       r    wrapperz$wrap_request_errors.<locals>.wrapper   sY    	4.t...v... 	 	 	y  		s    
-(-)	functoolswraps)r   r   s   ` r    wrap_request_errorsr      s8    _T     Nr-   c                (   | \  }}}}}t          j         |||          }	 |t           j        ur|                    |           |r|                    |           |                    |           |S # t
          $ r |                                  w xY wr:   )socket_GLOBAL_DEFAULT_TIMEOUT
settimeoutbindconnectOSErrorr   )	ip_addrtimeoutsource_addressafsocktypeproto
_canonnamesasocks	            r    _socket_connectr      s    *1'B%R=Xu--D	&888OOG$$$ 	&IIn%%%R   

s   AA1 1 Bc                   |\  }}}}}	t          |||          }
	 |                                }|                    |	d         |	d         d            |
j        di | |t          j        ur|
                    |           |r|
                    |           |
                    |            |
S # t          $ r |

                                  w xY w)Nr   r   )rA   rB   rV   )r	   copyupdatesetproxyr   r   r   r   r   r   r   )	dest_addr
proxy_argsproxy_ip_addrr   r   r   r   r   r   r   r   connect_proxy_argss               r    create_socks_proxy_socketr      s    *7'B%Rr8U++D'__..!!2a5"Q%"@"@AAA++*+++&888OOG$$$ 	&IIn%%%Y   

s   BB1 1 C)_create_socket_funcc                  | \  }}t          j        ||dt           j                  }|st          d          |`d|d         vrt           j        nt           j        fd|D             }|s.t          dt           j        k    rdnd d|d          d	          d }|D ].}	  ||||          }	d }|	c S # t          $ r}
|
}Y d }
~
'd }
~
ww xY w	 |# d }w xY w)
Nr   z!getaddrinfo returns an empty list:c                ,    g | ]}|d          k    |S )r   rV   )r(   rA   r   s     r    r,   z%create_connection.<locals>.<listcomp>   s"    ???TaBDr-   zNo remote IPvr]      z- addresses available for connect. Can't use "z" as source address)r   getaddrinfoSOCK_STREAMr   AF_INETAF_INET6)addressr   r   r   hostrB   ip_addrserrr   r   r   r   s              @r    create_connectionr      s\    JD$!$a1CDDH ;9:::!".*;;;V^^????X??? 	GFR6>%9%9q F F-a0F F FG G G C  	&&wHHD CKKK 	 	 	CCCCCC		 



s$   "B55
C?CCC C)T)r   r   )TNNNFT)r   r   r   r   )$
__future__r   r0   r   rh   r   r   r   typingurllib.parser;   urllib.request
exceptionsr   dependenciesr   socksr   r	   TYPE_CHECKINGcollections.abcr
   utils.networkingr   r!   r   rQ   rY   r|   r~   r   r   r   r   r   r   rV   r-   r    <module>r      s   " " " " " "         				  



 



          $ $ $ $ $ $ " " " " " " * * * * * * * *	 2((((((111111/ / / / /"
; 
; 
;  >  "  $6 6 6 6r! ! ! ! ! ! ! !8R R R R
	 	 	    ( *&
 (& & & & & & &r-   