Ë
    š„jË!  ã                  ó  — 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ej                  r ej                  d«      ZddlmZmZmZ ddlmZ d„ Z G d„ d	e«      Z e e«       d
dddœ«      Zdd„Zdd„Zd„ Zd„ Zd„ Zd„ Zy)é    )ÚannotationsNÚTé   )Ú
NO_DEFAULTÚremove_startÚformat_field)Útraverse_objc                 óL   — d} d}| j                  t        j                  |Ž «      S )NznMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/{}.0.0.0 Safari/537.36)é�   é–   )ÚformatÚrandomÚrandint)ÚUSER_AGENT_TMPLÚCHROME_MAJOR_VERSION_RANGEs     úN/var/www/html/GAP/venv/lib/python3.12/site-packages/yt_dlp/utils/networking.pyÚrandom_user_agentr      s+   € ð G€Oà!+ÐØ×!Ñ!¤&§.¡.Ð2LÐ"MÓNÐNó    c                  ó®  ‡ — e Zd ZdZdd„Zˆ fd„Zdd„Zdˆ fd„Zdˆ fd„Zdˆ fd„Z	d„ Z
dd	„Zdd
„Zdˆ fd„Zdˆ fd„Zdd„Zej"                  d d„«       Zej"                  d!d„«       Zefˆ fd„	Zej"                  d"d„«       Zej"                  d!d„«       Zefˆ fd„	Zd#ˆ fd„Zej"                  d"d„«       Zej"                  d"d„«       Zd$dˆ fd„Zdd„Zˆ xZS )%ÚHTTPHeaderDictzí
    Store and access keys case-insensitively.
    The constructor can take multiple dicts, in which keys in the latter are prioritised.

    Retains a case sensitive mapping of the headers, which can be accessed via `.sensitive()`.
    c                óF   — t        j                  | g|¢­i |¤Ž}i |_        |S ©N)ÚdictÚ__new__Ú_HTTPHeaderDict__sensitive_map)ÚclsÚargsÚkwargsÚobjs       r   r   zHTTPHeaderDict.__new__   s'   € Ü�l‰l˜3Ð0 Ò0¨Ñ0ˆØ ˆÔØˆ
r   c               óœ   •— t         ‰| �  «        i | _        t        d |«      D ]  }| j	                  |«       Œ |r| j	                  |«       y y r   )ÚsuperÚ__init__r   ÚfilterÚupdate)Úselfr   r   ÚdctÚ	__class__s       €r   r"   zHTTPHeaderDict.__init__$   sL   ø€ Ü‰ÑÔØ!ˆÔä˜$ Ó%ò 	ˆCØ�K‰K˜Õð	áØ�K‰K˜Õð r   c               óp   — | j                  «       D ��ci c]  \  }}| j                  |   |“Œ c}}S c c}}w r   )Úitemsr   )r%   ÚkeyÚvalues      r   Ú	sensitivezHTTPHeaderDict.sensitive-   s>   € ð #Ÿj™j›l÷
á��Uð × Ñ  Ñ% uÑ,ó
ð 	
ùó 
s   ”2c               ój   •— t         ‰| �  t        |t        «      r|j	                  «       «      S |«      S r   )r!   Ú__contains__Ú
isinstanceÚstrÚtitle©r%   r*   r'   s     €r   r.   zHTTPHeaderDict.__contains__3   s*   ø€ Ü‰wÑ#´:¸cÄ3Ô3G C§I¡I£KÓQÐQÈSÓQÐQr   c               ó^   •— |j                  «       }| j                  |= t        ‰| �  |«       y r   )r1   r   r!   Ú__delitem__r2   s     €r   r4   zHTTPHeaderDict.__delitem__6   s)   ø€ Ø�i‰i‹kˆØ× Ñ  Ð%Ü‰Ñ˜CÕ r   c               ó>   •— t         ‰| �  |j                  «       «      S r   )r!   Ú__getitem__r1   r2   s     €r   r6   zHTTPHeaderDict.__getitem__;   s   ø€ Ü‰wÑ" 3§9¡9£;Ó/Ð/r   c               óž   — t        |t        | «      «      r|j                  «       }t        |t        «      r| j	                  |«       | S t
        S r   )r/   Útyper,   r   r$   ÚNotImplemented©r%   Úothers     r   Ú__ior__zHTTPHeaderDict.__ior__>   s=   € Ü�eœT $›ZÔ(Ø—O‘OÓ%ˆEÜ�eœTÔ"Ø�K‰K˜ÔØˆKÜÐr   c               ó¸   — t        |t        | «      «      r|j                  «       }t        |t        «      r  t        | «      | j                  «       |«      S t        S r   ©r/   r8   r,   r   r9   r:   s     r   Ú__or__zHTTPHeaderDict.__or__F   sF   € Ü�eœT $›ZÔ(Ø—O‘OÓ%ˆEÜ�eœTÔ"Ø”4˜“:˜dŸn™nÓ.°Ó6Ð6ÜÐr   c               ó¸   — t        |t        | «      «      r|j                  «       }t        |t        «      r  t        | «      || j                  «       «      S t        S r   r>   r:   s     r   Ú__ror__zHTTPHeaderDict.__ror__M   sF   € Ü�eœT $›ZÔ(Ø—O‘OÓ%ˆEÜ�eœTÔ"Ø”4˜“:˜e T§^¡^Ó%5Ó6Ð6ÜÐr   c               óÔ   •— t        |t        «      r|j                  d«      }|j                  «       }|| j                  |<   t
        ‰| �  |t        |«      j                  «       «       y )Nzlatin-1)	r/   ÚbytesÚdecoder1   r   r!   Ú__setitem__r0   Ústrip)r%   r*   r+   Ú	key_titler'   s       €r   rE   zHTTPHeaderDict.__setitem__T   sR   ø€ Ü�eœUÔ#Ø—L‘L Ó+ˆEØ—I‘I“Kˆ	Ø*-ˆ×Ñ˜YÑ'Ü‰Ñ˜I¤s¨5£z×'7Ñ'7Ó'9Õ:r   c               óV   •— | j                   j                  «        t        ‰| �  «        y r   )r   Úclearr!   ©r%   r'   s    €r   rI   zHTTPHeaderDict.clear[   s   ø€ Ø×Ñ×"Ñ"Ô$Ü‰‰�r   c               ó@   —  t        | «      | j                  «       «      S r   )r8   r,   )r%   s    r   ÚcopyzHTTPHeaderDict.copy_   s   € ØŒt�D‹z˜$Ÿ.™.Ó*Ó+Ð+r   c                ó   — y r   © ©r%   r*   s     r   ÚgetzHTTPHeaderDict.getb   ó   € Ø.1r   c                ó   — y r   rN   ©r%   r*   Údefaults      r   rP   zHTTPHeaderDict.gete   ó   € Ø7:r   c               ór   •— |j                  «       }|t        u rt        ‰| �  |«      S t        ‰| �  ||«      S r   )r1   r   r!   rP   ©r%   r*   rT   r'   s      €r   rP   zHTTPHeaderDict.geth   s6   ø€ Ø�i‰i‹kˆØ”jÑ Ü‘7‘;˜sÓ#Ð#Ü‰w‰{˜3 Ó(Ð(r   c                ó   — y r   rN   rO   s     r   ÚpopzHTTPHeaderDict.popn   s   € Ø'*r   c                ó   — y r   rN   rS   s      r   rY   zHTTPHeaderDict.popq   rU   r   c               óà   •— |j                  «       }|t        u r*| j                  j                  |«       t        ‰| �  |«      S | j                  j                  ||«       t        ‰| �  ||«      S r   )r1   r   r   rY   r!   rW   s      €r   rY   zHTTPHeaderDict.popt   s`   ø€ Ø�i‰i‹kˆØ”jÑ Ø× Ñ ×$Ñ$ SÔ)Ü‘7‘;˜sÓ#Ð#Ø×Ñ× Ñ   gÔ.Ü‰w‰{˜3 Ó(Ð(r   c                óT   •— | j                   j                  «        t        ‰| �  «       S r   )r   Úpopitemr!   rJ   s    €r   r]   zHTTPHeaderDict.popitem|   s"   ø€ Ø×Ñ×$Ñ$Ô&Ü‰w‰Ó Ð r   c                ó   — y r   rN   rO   s     r   Ú
setdefaultzHTTPHeaderDict.setdefault€   rQ   r   c                ó   — y r   rN   rS   s      r   r_   zHTTPHeaderDict.setdefaultƒ   rU   r   c               óz   •— |j                  «       }|| j                  v rt        ‰| �  |«      S |xs d| |<   | |   S )NÚ )r1   r   r!   r6   rW   s      €r   r_   zHTTPHeaderDict.setdefault†   sC   ø€ Ø�i‰i‹kˆØ�$×&Ñ&Ñ&Ü‘7Ñ& sÓ+Ð+à’M˜rˆˆS‰	Ø�C‰yÐr   c               ó~  — t        |t        | «      «      r|j                  «       }t        |t        j                  j
                  «      r|j                  «       D ]
  \  }}|| |<   Œ n9t        |d«      r|j                  «       D ]
  }||   | |<   Œ n|D ]
  \  }}|| |<   Œ |j                  «       D ]
  \  }}|| |<   Œ y )NÚkeys)	r/   r8   r,   ÚcollectionsÚabcÚMappingr)   Úhasattrrd   )r%   r;   r   r*   r+   s        r   r$   zHTTPHeaderDict.updateŽ   sÂ   € Ü�eœT $›ZÔ(Ø—O‘OÓ%ˆEÜ�eœ[Ÿ_™_×4Ñ4Ô5Ø#Ÿk™k›mò "‘
��UØ!��S’	ñ"ô �U˜FÔ#Ø—z‘z“|ò '�Ø! #™J��S’	ñ'ð $ò "‘
��UØ!��S’	ð"ð !Ÿ,™,›.ò 	‰JˆC�ØˆD�ŠIñ	r   )r   ú
typing.Anyr   ri   Úreturnútyping.Self)rj   zdict[str, str])r*   r0   rj   Úbool)r*   r0   rj   ÚNone)rj   r0   )rj   rk   )rj   rm   )r*   r0   rj   z
str | None)rT   r   r*   r0   rj   zstr | T)r*   r0   rj   r0   )rj   ztuple[str, str]r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r"   r,   r.   r4   r6   r<   r?   rA   rE   rI   rL   ÚtypingÚoverloadrP   r   rY   r]   r_   r$   Ú__classcell__)r'   s   @r   r   r      sÖ   ø„ ñóô
 ó
õRõ!õ
0òóóõ;õó,ð ‡_�_Ú1ó Ø1à‡_�_Ú:ó Ø:à",õ )ð ‡_�_Ú*ó Ø*à‡_�_Ú:ó Ø:à",õ )õ!ð ‡_�_Ú1ó Ø1à‡_�_Ú:ó Ø:ö÷r   r   z?text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8zen-us,en;q=0.5Únavigate)z
User-AgentÚAcceptzAccept-LanguagezSec-Fetch-Modec                óò  — |j                  dd «      }|r| j                  «        || d<   | j                  «       D ]¬  \  }}|dk(  rd | |<   Œ|dk(  rŒ|€Œ	 t        j                  j                  |«      d   }|€dt        |d«      z   | |<   dd	d
œ}||v sŒ[t        j                  j                  t        j                  j                  |«      j                  ||   ¬«      «      | |<   Œ® y # t        $ r Y Œ»w xY w)NzYtdl-Request-ProxyÚallÚ__noproxy__Únor   zhttp://z//Úsocks5hÚsocks4)Úsocks5Úsocks)Úscheme)rY   rI   r)   ÚurllibÚrequestÚ_parse_proxyÚ
ValueErrorr   ÚparseÚ
urlunparseÚurlparseÚ_replace)ÚproxiesÚheadersÚ	req_proxyÚ	proxy_keyÚ	proxy_urlÚproxy_schemeÚreplace_schemes          r   Úclean_proxiesr�   ©   s  € Ø—‘Ð0°$Ó7€IÙØ�‰ŒØ"ˆ�‰Ø '§¡£ò dÑˆ	�9Ø˜Ò%Ø!%ˆG�IÑØØ˜ÒØØÑ ðÜ%Ÿ~™~×:Ñ:¸9ÓEÀaÑH�ð Ð#Ø%.´¸iÈÓ1NÑ%N�˜	Ñ"ð $Ø!ñˆNð ˜~Ò-Ü%+§\¡\×%<Ñ%<Ü—L‘L×)Ñ)¨)Ó4×=Ñ=À^ÐT`ÑEaÐ=Óbó&d�˜	Ò"ñ/døô ò ñ ð	ús   Á"C*Ã*	C6Ã5C6c                ó@   — d| v r| d= d| d<   | j                  dd «       y )NzYoutubedl-No-CompressionÚidentityzAccept-EncodingzYtdl-socks-proxy)rY   )r‰   s    r   Úclean_headersr’   É   s-   € Ø! WÑ,ØÐ.Ð/Ø%/ˆÐ!Ñ"Ø‡K�KÐ" DÕ)r   c                ó$  — g }| j                  d«      }|D ]2  }|dk(  rŒ	|dk(  r|sŒ|j                  «        Œ"|j                  |«       Œ4 |d   s|r|d   r|j                  dd«       |d   dv r|j                  d«       dj	                  |«      S )Nú/ú.ú..r   rb   éÿÿÿÿ)r•   r–   )ÚsplitrY   ÚappendÚinsertÚjoin)ÚpathÚoutputÚsegmentsÚss       r   Úremove_dot_segmentsr    Ð   s”   € ð €FØ�z‰z˜#‹€HØò ˆØ�Š8ØØ�$ŠYÚØ—
‘
•à�M‰M˜!Õðð �AŠ;¡¨&°ª)Ø�‰�a˜ÔØ��|�{Ñ"Ø�‰�bÔØ�8‰8�FÓÐr   c                óB   — t         j                  j                  | d«      S )z4Escape non-ASCII characters as suggested by RFC 3986s   %/;:@&=+$,!~*'()?#[])r€   r„   Úquote)rŸ   s    r   Úescape_rfc3986r£   å   s   € ä�<‰<×Ñ˜aÐ!8Ó9Ð9r   c           	     ó‚  — t         j                  j                  | «      }|j                  |j                  j                  d«      j                  d«      t        t        |j                  «      «      t        |j                  «      t        |j                  «      t        |j                  «      ¬«      j                  «       S )z&Normalize URL as suggested by RFC 3986ÚidnaÚascii)Únetlocrœ   ÚparamsÚqueryÚfragment)r€   r„   r†   r‡   r§   ÚencoderD   r£   r    rœ   r¨   r©   rª   Úgeturl)ÚurlÚ
url_parseds     r   Únormalize_urlr¯   ê   s’   € ä—‘×&Ñ& sÓ+€JØ×ÑØ× Ñ ×'Ñ'¨Ó/×6Ñ6°wÓ?ÜÔ/°
·±Ó@ÓAÜ˜j×/Ñ/Ó0Ü˜Z×-Ñ-Ó.Ü 
× 3Ñ 3Ó4ð ó ÷ �fƒhðr   c                óR  — t         j                  j                  | «      }d|v rj|j                  t	        |j
                  dd«      z   }t         j                  j                  |d|d   i«      ryt         j                  j                  |«      ryt        ||j                  xs dd«      S )z'Unified proxy selector for all backendsrz   Nz:%sÚhttprx   )r€   r„   r†   Úhostnamer   Úportr�   Úproxy_bypass_environmentÚproxy_bypassr	   r   )r­   rˆ   Úurl_componentsÚhostports       r   Úselect_proxyr¸   ö   sŒ   € ä—\‘\×*Ñ*¨3Ó/€NØˆw�Ø!×*Ñ*¬\¸.×:MÑ:MÈtÐUZÓ-[Ñ[ˆÜ�>‰>×2Ñ2°8¸dÀGÈDÁMÐ=RÔSØÜ�^‰^×(Ñ(¨Ô2Øä˜ ×!6Ñ!6Ò!@¸&À%ÓHÐHr   )rˆ   r   r‰   r   )r‰   r   )Ú
__future__r   re   Úcollections.abcr   rr   Úurllib.parser€   Úurllib.requestÚTYPE_CHECKINGÚTypeVarr   Ú_utilsr   r   r   Ú	traversalr	   r   r   r   Ústd_headersr�   r’   r    r£   r¯   r¸   rN   r   r   ú<module>rÂ      s’   ðÝ "ã Û Û Û Û Û à	×ÒØˆ�‰�sÓ€Aç :Ñ :Ý #òOôF�Tô FñR Ù#Ó%ØOØ'Ø ñ	ó €ódó@*òò*:ò
	ó
Ir   