+
    Žf©j9  ã                  óÜ  € R t ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIH	t	H
t
 ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIHtHt ^ RIHtHt ^ RI H!t!H"t"H#t#H$t$H%t%H&t& ^ RI'H(t(H)t)H*t*H+t+ ^ RI,H-t-H.t. ^ RI/H0t0H1t1 ^ RI2H3t3H4t4H5t5 ^ RI6H7t7H8t8H9t9 ]Pt                  ! ];4      t<R R lt=R R lt>R#R R llt?R R lt@R R ltAR R ltB] ! R R 4      4       tC ! R! R"4      tDR# )$z(Download files with progress indicators.)ÚannotationsN)ÚIterableÚMapping)Ú	dataclass)Ú
HTTPStatus)ÚBinaryIO)ÚPreparedRequest)ÚResponse)ÚHTTPResponse)ÚHTTPHeaderDict)ÚProtocolErrorÚReadTimeoutError)ÚBarTypeÚget_download_progress_renderer)ÚConnectionFailedErrorÚConnectionTimeoutErrorÚIncompleteDownloadErrorÚNetworkConnectionErrorÚProxyConnectionErrorÚSSLVerificationError)ÚLinkÚPathComponentÚas_path_componentÚjoin_within_directory)ÚSafeFileCacheÚis_from_cache)ÚCacheControlAdapterÚ
PipSession)ÚHEADERSÚraise_for_statusÚresponse_chunks)Úformat_sizeÚredact_auth_from_urlÚsplitextc               ó    € V ^8„  d   QhRRRR/# )é   Úrespr	   Úreturnú
int | None© )Úformats   "ÚY/var/www/html/bestweb/venv/lib/python3.14/site-packages/pip/_internal/network/download.pyÚ__annotate__r,   +   s   € ÷ 	ñ 	 (ð 	¨zñ 	ó    c                óŒ   €  \        V P                  R ,          4      pT^ 8  d   R# T#   \        \        \        3 d     R# i ; i)úcontent-lengthN)ÚintÚheadersÚ
ValueErrorÚKeyErrorÚ	TypeError)r&   Úsizes   & r+   Ú_get_http_response_sizer6   +   sG   € ðÜ�4—<‘<Ð 0Õ1Ó2ˆð
 ˆa„xÙØ€Køô œ¤)Ð,ô Úðús   ‚) ©AÁAc               ó    € V ^8„  d   QhRRRR/# )r%   r&   r	   r'   z
str | Noner)   )r*   s   "r+   r,   r,   7   s   € ÷ Gñ G°8ð GÀ
ñ Gr-   c                ól   € V P                   P                  RV P                   P                  R4      4      # )z�
Return either the ETag or Last-Modified header (or None if neither exists).
The return value can be used in an If-Range header.
Úetagzlast-modified)r1   Úget)r&   s   &r+   Ú(_get_http_response_etag_or_last_modifiedr;   7   s*   € ð
 �<‰<×Ñ˜F D§L¡L×$4Ñ$4°_Ó$EÓFÐFr-   c               ó0   € V ^8„  d   QhRRRRRRRRR	RR
R/# )r%   r&   r	   Úlinkr   Úprogress_barr   Útotal_lengthr(   Úrange_startr'   zIterable[bytes]r)   )r*   s   "r+   r,   r,   ?   sD   € ÷ 0ñ 0Ø
ð0à
ð0ð ð0ð ð	0ð
 ð0ð ñ0r-   c                óÎ  € \         P                  4       \        P                  8”  d   VP                  pMVP
                  p\        V4      pV'       d8   V'       d   V R \        V4       R\        V4       R2pMV R \        V4       R2p\        V 4      '       d   \         P                  RV4       M5V'       d   \         P                  RV4       M\         P                  RV4       \         P                  4       \        P                  8”  d   RpM+\        V 4      '       d   RpMV'       g   RpMVR	8”  d   RpMRp\        V 4      pV'       g   V# \        W#VR7      p	V	! V4      # )
z (Ú/Ú)zUsing cached %szResuming download %szDownloading %sFT)Úbar_typer5   Úinitial_progressi   )ÚloggerÚgetEffectiveLevelÚloggingÚINFOÚurl_without_fragmentÚshow_urlr"   r!   r   Úinfor    r   )
r&   r=   r>   r?   r@   ÚurlÚ
logged_urlÚshow_progressÚchunksÚrenderers
   &&&&&     r+   Ú_log_downloadrR   ?   s,  € ô ×ÑÓ!¤G§L¡LÔ0Ø×'Ñ'‰à�m‰mˆä% cÓ*€Jçßà�,˜b¤¨[Ó!9Ð :¸!¼KÈÓ<UÐ;VÐVWÐXñ ð '˜< r¬+°lÓ*CÐ)DÀAÐFˆJä�T×ÒÜ�‰Ð% zÕ2ß	Ü�‰Ð*¨JÕ7ä�‰Ð$ jÔ1ä×ÑÓ!¤G§L¡LÔ0Ø‰Ü	�t×	Ò	Ø‰ßØ‰Ø	˜Ô	$Ø‰àˆä˜TÓ"€FçØˆä-ØÀ;ô€Hñ �FÓÐr-   c               ó    € V ^8„  d   QhRRRR/# )r%   ÚfilenameÚstrr'   r)   )r*   s   "r+   r,   r,   r   s   € ÷ &ñ &¨ð &°ñ &r-   c                ó@   € \         P                  P                  V 4      # )zB
Sanitize the "filename" value from a Content-Disposition header.
)ÚosÚpathÚbasename)rT   s   &r+   Úsanitize_content_filenamerZ   r   s   € ô �7‰7×Ñ˜HÓ%Ð%r-   c               ó$   € V ^8„  d   QhRRRRRR/# )r%   Úcontent_dispositionrU   Údefault_filenamer'   r)   )r*   s   "r+   r,   r,   y   s"   € ÷ (ñ (°3ð (È#ð (ÐRUñ (r-   c                ó¸   € \         P                  P                  4       pWR&   VP                  R4      pV'       d   \	        \        V4      4      pT;'       g    T# )zw
Parse the "filename" value from a Content-Disposition header, and
return the default filename if the result is empty.
úcontent-typerT   )ÚemailÚmessageÚMessageÚ	get_paramrZ   rU   )r\   r]   ÚmrT   s   &&  r+   Úparse_content_dispositionre   y   sN   € ô
 	�‰×ÑÓ€AØ+€nÑØ�{‰{˜:Ó&€Hßô -¬S°«]Ó;ˆØ×'Ð'Ð'Ð'r-   c               ó$   € V ^8„  d   QhRRRRRR/# )r%   r&   r	   r=   r   r'   r   r)   )r*   s   "r+   r,   r,   ˆ   s!   € ÷ 'ñ ' hð '°dð '¸}ñ 'r-   c                ó  € VP                   pV P                  P                  R4      pV'       d   \        W24      p\	        V4      ^,          pV'       gA   \
        P                  ! V P                  P                  RR4      4      pV'       d	   W$,          pV'       g\   VP                  V P                  8w  dA   \        P                  P	                  V P                  4      ^,          pV'       d	   W$,          p\        V4      # )zßGet an ideal filename from the given HTTP response, falling back to
the link filename if not provided.

The result is validated as a single path component, so it can be joined onto
a download directory without escaping it.
zcontent-dispositionr_   Ú )rT   r1   r:   re   r#   Ú	mimetypesÚguess_extensionrM   rW   rX   r   )r&   r=   rT   r\   Úexts   &&   r+   Ú_get_http_response_filenamerl   ˆ   s²   € ð —M‘M€HàŸ,™,×*Ñ*Ð+@ÓAÐßÜ,Ð-@ÓKˆÜ˜xÓ(¨Õ+€CßÜ×'Ò'¨¯©×(8Ñ(8¸ÈÓ(LÓMˆßØ�OˆHß�4—8‘8˜tŸx™xÔ'Ü�g‰g×Ñ˜tŸx™xÓ(¨Õ+ˆßØ�OˆHÜ˜XÓ&Ð&r-   c                  óz   € ] tR t^ t$ RtR]R&   R]R&   R]R&   ^ tR]R	&   ^ tR]R
&   R R ltR R lt	R R lt
RtR# )Ú_FileDownloadz+Stores the state of a single link download.r   r=   r   Úoutput_filer(   r5   r0   Úbytes_receivedÚ
reattemptsc               ó   € V ^8„  d   QhRR/# )r%   r'   Úboolr)   )r*   s   "r+   r,   Ú_FileDownload.__annotate__ª   s   € ÷ Oñ O˜tñ Or-   c                	ór   € \        V P                  R J;'       d    V P                  V P                  8  4      # ©N)rs   r5   rp   ©Úselfs   &r+   Úis_incompleteÚ_FileDownload.is_incompleteª   s-   € Ü�D—I‘I TÐ)×MÐM¨d×.AÑ.AÀDÇIÁIÑ.MÓNÐNr-   c               ó    € V ^8„  d   QhRRRR/# )r%   ÚdataÚbytesr'   ÚNoner)   )r*   s   "r+   r,   rt   ­   s   € ÷ %ñ % ð %¨$ñ %r-   c                	ó€   € V ;P                   \        V4      ,          un         V P                  P                  V4       R # rv   )rp   Úlenro   Úwrite)rx   r|   s   &&r+   Úwrite_chunkÚ_FileDownload.write_chunk­   s+   € Ø×Òœs 4›yÕ(ÕØ×Ñ×Ñ˜tÖ$r-   c               ó   € V ^8„  d   QhRR/# )r%   r'   r~   r)   )r*   s   "r+   r,   rt   ±   s   € ÷  ñ  ˜Dñ  r-   c                ó~   € V P                   P                  ^ 4       V P                   P                  4        ^ V n        R# )z1Delete any saved data and reset progress to zero.N)ro   ÚseekÚtruncaterp   rw   s   &r+   Ú
reset_fileÚ_FileDownload.reset_file±   s0   € à×Ñ×Ñ˜aÔ Ø×Ñ×!Ñ!Ô#ØˆÖr-   )rp   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__rp   rq   ry   r‚   rˆ   Ú__static_attributes__r)   r-   r+   rn   rn       s?   ‡ á5à
ƒJØÓØ
ÓØ€N�CÓØ€J�ÓõOõ%÷ ñ  r-   rn   c                  ó|   € ] tR t^¸tR R ltR R ltR R ltR R ltR	 R
 ltR R lt	R R lt
]3R R lltRtR# )Ú
Downloaderc               ó$   € V ^8„  d   QhRRRRRR/# )r%   Úsessionr   r>   r   r'   r~   r)   )r*   s   "r+   r,   ÚDownloader.__annotate__¹   s-   € ÷ 
Jñ 
Jàð
Jð ð
Jð 
ñ	
Jr-   c                	óp   € Wn         W n        VP                  V n        V P                  ^ 8¼  g   Q R4       hR# )é    z<Number of max resume retries must be bigger or equal to zeroN)Ú_sessionÚ_progress_barÚresume_retriesÚ_resume_retries)rx   r”   r>   s   &&&r+   Ú__init__ÚDownloader.__init__¹   s=   € ð
  ŒØ)ÔØ&×5Ñ5ˆÔà× Ñ  AÔ%ð	JàIó	JÚ%r-   c               ó$   € V ^8„  d   QhRRRRRR/# )r%   ÚlinkszIterable[Link]ÚlocationrU   r'   z&Iterable[tuple[Link, tuple[str, str]]]r)   )r*   s   "r+   r,   r•   Å   s$   € ÷ 1ñ 1Ø#ð1Ø/2ð1à	/ñ1r-   c              #  óB   "  € V F  pV ! W24      w  rEW4V33x € K  	  R# 5i)z.Convenience method to download multiple links.Nr)   )rx   rŸ   r    r=   ÚfilepathÚcontent_types   &&&   r+   ÚbatchÚDownloader.batchÅ   s,   é € ó ˆDÙ%)¨$Ó%9Ñ"ˆHØ <Ð0Ð0Ô0ó ùs   ‚c               ó$   € V ^8„  d   QhRRRRRR/# )r%   r=   r   r    rU   r'   ztuple[str, str]r)   )r*   s   "r+   r,   r•   Í   s!   € ÷ &ñ &˜Tð &¨Sð &°_ñ &r-   c                óŠ  € V P                  V4      p\        V4      p\        V\        W14      4      p\	        VR4      ;_uu_ 4       p\        WV4      pV P                  Ws4       VP                  4       '       d   V P                  Ws4       RRR4       VP                  P                  RR4      pWX3#   + '       g   i     L/; i)z+Download a link and save it under location.ÚwbNzContent-Typerh   )Ú	_http_getr6   r   rl   Úopenrn   Ú_process_responsery   Ú_attempt_resumes_or_redownloadsr1   r:   )	rx   r=   r    r&   Údownload_sizer¢   Úcontent_fileÚdownloadr£   s	   &&&      r+   Ú__call__ÚDownloader.__call__Í   s¦   € à�~‰~˜dÓ#ˆÜ/°Ó5ˆä(ØÔ1°$Ó=ó
ˆô �(˜D×!Ô! \Ü$ T¸ÓGˆHØ×"Ñ" 8Ô2Ø×%Ñ%×'Ò'Ø×4Ñ4°XÔD÷	 "ð —|‘|×'Ñ'¨¸Ó;ˆØÐ%Ð%÷ "×!ús   ÁAB2Â2C	c               ó$   € V ^8„  d   QhRRRRRR/# )r%   r¯   rn   r&   r	   r'   r~   r)   )r*   s   "r+   r,   r•   Þ   s&   € ÷ Hñ H¨-ð H¸xð HÈDñ Hr-   c                ó4  € \        VVP                  V P                  VP                  VP                  R7      p V F  pVP                  V4       K  	  R#   \        \        3 d1   pTP                  f   Th\        P                  R4        Rp?R# Rp?ii ; i)z)Download and save chunks from a response.)r@   Nz)Connection interrupted while downloading.)
rR   r=   r™   r5   rp   r‚   r   r   rF   Úwarning)rx   r¯   r&   rP   ÚchunkÚes   &&&   r+   r«   ÚDownloader._process_responseÞ   sƒ   € äØØ�M‰MØ×ÑØ�M‰MØ ×/Ñ/ô
ˆð	HÛ�Ø×$Ñ$ UÖ+ó  øä ¤-Ð0ô 	Hà�}‰}Ò$Ø�ä�N‰NÐF×GÒGûð	Hús   ºA ÁBÁ'%BÂBc               ó$   € V ^8„  d   QhRRRRRR/# )r%   r¯   rn   Ú
first_respr	   r'   r~   r)   )r*   s   "r+   r,   r•   ñ   s$   € ÷ ??ñ ??Ø%ð??Ø3;ð??à	ñ??r-   c           	     ó|  € VP                   V P                  8  Ed   VP                  4       '       Edh   VP                  f   Q hV;P                   ^,          un         \        P                  R\        VP                  4      \        VP                  4      VP                   4        V P                  WR7      pVP                  \        P                  8g  pV'       d$   VP                  4        \        V4      Vn        TpM‡VP                  P                  RR4      pVP!                  4       P#                  R4      ^,          pVP#                  R4      ^ ,          pV'       d&   V\%        VP                  4      8w  d   \'        V4      hV P)                  W4       EKš  VP                  4       '       d6   \8        P:                  ! VP<                  P>                  4       \'        V4      hVP                   ^ 8”  d   V PA                  W4       R# R#   \*        \,        \.        \0        \2        \4        \6        3 d     EK9  i ; i)zAAttempt to resume/restart the download if connection was dropped.Nz<Attempting to resume incomplete download (%s/%s, attempt %d))Úshould_matchzContent-Rangerh   zbytes Ú-)!rq   r›   ry   r5   rF   r´   r!   rp   Ú_http_get_resumeÚstatus_coder   ÚPARTIAL_CONTENTrˆ   r6   r1   r:   ÚlowerÚ	partitionrU   r   r«   r   r   r   r   r   r   ÚOSErrorrW   Úremovero   ÚnameÚ_cache_resumed_download)rx   r¯   r¹   Úresume_respÚmust_restartÚcontent_rangeÚ
resumed_ats   &&&    r+   r¬   Ú*Downloader._attempt_resumes_or_redownloadsñ   sÈ  € ð
 ×!Ñ! D×$8Ñ$8Õ8¸X×=SÑ=S×=UÓ=UØ—=‘=Ò,Ð,Ð,Ø×Ò 1Õ$ÕÜ�N‰NØNÜ˜H×3Ñ3Ó4Ü˜HŸM™MÓ*Ø×#Ñ#ô	ð&Ø"×3Ñ3°HÐ3ÓV�ð  +×6Ñ6¼*×:TÑ:TÑT�ßØ×'Ñ'Ô)Ü$;¸KÓ$H�H”MØ!,‘Jð %0×$7Ñ$7×$;Ñ$;¸OÈRÓ$P�MØ!.×!4Ñ!4Ó!6×!@Ñ!@ÀÓ!JÈ1Õ!M�JØ!+×!5Ñ!5°cÓ!:¸1Õ!=�Jß! j´C¸×8OÑ8OÓ4PÔ&PÜ5°hÓ?Ð?à×&Ñ& x×=ð, ×!Ñ!×#Ò#Ü�IŠI�h×*Ñ*×/Ñ/Ô0Ü)¨(Ó3Ð3ð ×Ñ Ô"Ø×(Ñ(¨Ö>ñ #øô5 &Ü&Ü$Ü$Ü ÜÜðô ó$ ð%ús   Â&B;H Å"6H È*H;È:H;c               ó$   € V ^8„  d   QhRRRRRR/# )r%   r¯   rn   Úoriginal_responser	   r'   r~   r)   )r*   s   "r+   r,   r•   2  s$   € ÷ 6
ñ 6
Ø%ð6
Ø:Bð6
à	ñ6
r-   c                ó  € VP                   P                  pV P                  P                  V4      p\	        V\
        4      '       g   \        P                  RV4       R# \	        VP                  \        4      '       g   Q R4       h\        4       pVP                  RV/ R7       \        4       pVP                  P                  4        F   w  rxVP                  4       R9  g   K  W†V&   K"  	  \!        VP"                  4      VR&   \%        RV^ÈRR	7      p	VP&                  P)                  V4      p
VP&                  P*                  P-                  WYR
4      pVP                  P/                  W«4       VP0                  P3                  4        \5        VP0                  P6                  R4      ;_uu_ 4       pVP                  P9                  W¬4       RRR4       \        P                  RV4       R#   + '       g   i     L(; i)a>  
Manually cache a file that was successfully downloaded via resume retries.

cachecontrol doesn't cache 206 (Partial Content) responses, since they
are not complete files. This method manually adds the final file to the
cache as though it was downloaded in a single request, so that future
requests can use the cache.
z<Skipping resume download caching: no cache controller for %sNzseparate body cache not in use!ÚGET)ÚmethodrM   r1   r/   rh   F)Úbodyr1   ÚstatusÚpreload_contentr-   Úrbz?Cached resumed download as complete response for future use: %s)zcontent-ranger/   )r=   rJ   r˜   Úget_adapterÚ
isinstancer   rF   ÚdebugÚcacher   r   Úpreparer   r1   ÚitemsrÀ   rU   r5   ÚURLlib3ResponseÚ
controllerÚ	cache_urlÚ
serializerÚdumpsÚsetro   Úflushrª   rÄ   Úset_body_from_io)rx   r¯   rÌ   rM   ÚadapterÚsynthetic_requestÚsynthetic_response_headersÚkeyÚvalueÚsynthetic_responserÜ   Úmetadata_blobÚfs   &&&          r+   rÅ   Ú"Downloader._cache_resumed_download2  s®  € ð �m‰m×0Ñ0ˆØ—-‘-×+Ñ+¨CÓ0ˆô ˜'Ô#6×7Ò7Ü�L‰LØNÐPSôñ ô Ø�M‰Mœ=÷
ò 
ð 	-à,ó	-ð 
ô ,Ó-ÐØ×!Ñ!¨°CÀÐ!ÔDä%3Ó%5Ð"Ø+×3Ñ3×9Ñ9Ö;‰JˆCØ�y‰y‹{Ð"EÖEØ27¨3Ó/ñ <ô 8;¸8¿=¹=Ó7IÐ"Ð#3Ñ4ä,ØØ.ØØ!ô	
Ðð ×&Ñ&×0Ñ0°Ó5ˆ	Ø×*Ñ*×5Ñ5×;Ñ;Ø°3ó
ˆð 	�‰×Ñ˜)Ô3Ø×Ñ×"Ñ"Ô$Ü�(×&Ñ&×+Ñ+¨T×2Ô2°aØ�M‰M×*Ñ*¨9Ô8÷ 3ô 	�‰ØMÈsö	
÷ 3×2ús   Æ2G.Ç.G>	c               ó$   € V ^8„  d   QhRRRRRR/# )r%   r¯   rn   r»   r	   r'   r)   )r*   s   "r+   r,   r•   j  s$   € ÷ 6ñ 6Ø%ð6Ø5=ð6à	ñ6r-   c                ó¸   € \         P                  ! 4       pRVP                   R2VR&   \        V4      ;p'       d   WCR&   V P	                  VP
                  V4      # )z2Issue a HTTP range request to resume the download.zbytes=r¼   ÚRangezIf-Range)r   Úcopyrp   r;   r©   r=   )rx   r¯   r»   r1   Ú
identifiers   &&&  r+   r½   ÚDownloader._http_get_resumej  sY   € ô —,’,“.ˆØ# H×$;Ñ$;Ð#<¸AÐ>ˆ�Ñô BÀ,ÓOÐOˆ:ÖOØ",�JÑØ�~‰~˜hŸm™m¨WÓ5Ð5r-   c               ó$   € V ^8„  d   QhRRRRRR/# )r%   r=   r   r1   zMapping[str, str]r'   r	   r)   )r*   s   "r+   r,   r•   x  s"   € ÷ ñ ˜dð Ð->ð ÈXñ r-   c                	ó  € VP                   p V P                  P                  W2R R7      p\        V4       V#   \         dB   pTP
                  f   Q h\        P                  RTP
                  P                  T4       h Rp?ii ; i)T)r1   ÚstreamNzHTTP error %s while getting %s)	rJ   r˜   r:   r   r   ÚresponserF   Úcriticalr¾   )rx   r=   r1   Ú
target_urlr&   r¶   s   &&&   r+   r©   ÚDownloader._http_getx  s~   € Ø×.Ñ.ˆ
ð	Ø—=‘=×$Ñ$ ZÈÐ$ÓNˆDÜ˜TÔ"ð ˆøô &ô 	Ø—:‘:Ò)Ð)Ð)Ü�O‰OØ0°!·*±*×2HÑ2HÈ$ôð ûð	ús   Ž(8 ¸BÁ<A?Á?B)r™   r›   r˜   N)rŠ   r‹   rŒ   r�   rœ   r¤   r°   r«   r¬   rÅ   r½   r   r©   r�   r)   r-   r+   r’   r’   ¸   s:   † õ
Jõ1õ&õ"Hõ&??õB6
õp6ð BI÷ ó r-   r’   )r—   )ErŽ   Ú
__future__r   Úemail.messager`   rH   ri   rW   Úcollections.abcr   r   Údataclassesr   Úhttpr   Útypingr   Úpip._vendor.requestsr   Úpip._vendor.requests.modelsr	   Úpip._vendor.urllib3r
   rÚ   Ú pip._vendor.urllib3._collectionsr   Úpip._vendor.urllib3.exceptionsr   r   Úpip._internal.cli.progress_barsr   r   Úpip._internal.exceptionsr   r   r   r   r   r   Úpip._internal.models.linkr   r   r   r   Úpip._internal.network.cacher   r   Úpip._internal.network.sessionr   r   Úpip._internal.network.utilsr   r   r    Úpip._internal.utils.miscr!   r"   r#   Ú	getLoggerrŠ   rF   r6   r;   rR   rZ   re   rl   rn   r’   r)   r-   r+   Ú<module>r     s³   ðÙ .å "ã Û Û Û 	ß -Ý !Ý Ý å 0Ý 0Ý ?Ý ;ß Jç S÷÷ ÷ó ÷ Eß Iß RÑ Rß PÑ Pà	×	Ò	˜8Ó	$€õ	õG÷0õf&õ(õ'ð0 ÷ ð  ó ð ÷.Kó Kr-   