+
    MV-jâ�  ã            	      óº  a € 0 t $ R t^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIt^ RI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 ^RIHt ^RI H t  ^R	I!H"t"H#t#H$t$H%t% ^R
I&H't( ^RI)H*t*H+t+H,t,H-t-H.t.H/t/H0t0H1t1H2t2H3t3H4t4H5t5H6t6 ^RI)H7t8 ^RI9H:t: ^RI;H<t<H=t=H>t>H?t? ^RI@HAtA ]'       d   ^ RIBHCtC ^ RIHDtD ^RIH&tE ^RIFHGtGHHtHHItI R„tJR]KR&   ]P˜                  ! 4       tMR]KR&   R^PRR/tNR]KR&   ]! R4      tO]! R4      tPRP£                  ]P¤                  ! R]! R R!7      R",          4      4      tSR]KR#&   ]P¨                  R$8X  d   R% R& ltUR' R( lt0R) R* ltVR+ R, ltWR…R- R. lltXR/ R0 ltYR1 R2 ltZ]P¶                  R3 R4 l4       t\R5 R6 lt]]R7 R8 l4       t^]R9 R: l4       t^R; R< lt^R= R> lt_R? R@ lt`R…RA RB lltaRC RD ltbRE RF ltcRG RH ltdRI RJ lteRK RL ltfRM RN ltg]RO RP l4       th]RQ RR l4       thRS RT lthRU RV lti]j! R†4      tkR]KRW&   RX RY ltlRZ R[ ltmR\ R] ltnR^ R_ ltoR` Ra ltpRb Rc ltq]P¶                  Rd Re l4       trRf Rg ltsR‡Rh Ri llttRj Rk ltuRˆRl Rm lltvR‰Rn Ro lltwRp Rq ltxRr Rs ltyRtPõ                  Ru4      t{]{^,          t|]{^,          t}Rv Rw lt~Rx Ry ltRz R{ lt€R| R} lt�R~ R lt‚R€ R� ltƒR‚ Rƒ lt„R# )Šz”
requests.utils
~~~~~~~~~~~~~~

This module provides utility functions that are used within Requests
that are also useful for external consumption.
)ÚannotationsN)ÚOrderedDict)Ú	GeneratorÚIterable)ÚTYPE_CHECKINGÚAnyÚFinalÚTypeVarÚcastÚoverload)Úmake_headersÚ	parse_url)Úcerts©Ú__version__)Ú_HEADER_VALIDATORS_BYTEÚ_HEADER_VALIDATORS_STRÚHEADER_VALIDATORSÚto_native_string)ÚSupportsItems)ÚMappingÚbytesÚ
getproxiesÚgetproxies_environmentÚinteger_typesÚis_urllib3_1Úproxy_bypassÚproxy_bypass_environmentÚquoteÚstrÚunquoteÚurlparseÚ
urlunparse)Úparse_http_list©Úcookiejar_from_dict)ÚFileModeWarningÚInvalidHeaderÚ
InvalidURLÚUnrewindableBodyError)ÚCaseInsensitiveDict)Ú	CookieJar)ÚBufferedWriter)Ú_types)ÚPreparedRequestÚRequestÚResponser   ÚNETRC_FILESr   ÚDEFAULT_CA_BUNDLE_PATHÚhttpÚhttpsi»  ÚDEFAULT_PORTSÚ_KTÚ_VTz, z,\s*T)Úaccept_encodingzaccept-encodingÚDEFAULT_ACCEPT_ENCODINGÚwin32c               ó    € V ^8„  d   QhRRRR/# ©é   Úhostr   ÚreturnÚbool© )Úformats   "Ú_/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/requests/utils.pyÚ__annotate__rD   c   s   € ÷ $ñ $ Cð $¨Dñ $ó    c                ón  €  ^ RI p TP                  TP                  R4      p\	        TP                  TR4      ^ ,          4      pTP                  TR4      ^ ,          pT'       d	   T'       g   R# TP                  R4      p\        RT4      pT Fx  pTR8X  d   RT 9  d    R	# TP                  RR
4      pTP                  RR4      pTP                  RR4      p\        P                  ! YP\        P                  4      '       g   Kw   R	# 	  R#   \         d     R# i ; i  \        \        3 d     R# i ; i)é    NFz;Software\Microsoft\Windows\CurrentVersion\Internet SettingsÚProxyEnableÚProxyOverrideÚ;z<local>Ú.Tz\.Ú*z.*Ú?)ÚwinregÚImportErrorÚOpenKeyÚHKEY_CURRENT_USERÚintÚQueryValueExÚOSErrorÚ
ValueErrorÚsplitÚfilterÚreplaceÚreÚmatchÚI)r>   rN   ÚinternetSettingsÚproxyEnableÚproxyOverrideÚtests   &     rC   Úproxy_bypass_registryr`   c   s!  € ð	Ûð
	Ø%Ÿ~™~Ø×(Ñ(ØNó Ðô
 ˜f×1Ñ1Ð2BÀMÓRÐSTÕUÓVˆKà"×/Ñ/Ð0@À/ÓRÐSTÕUˆM÷ §-Ùð
 &×+Ñ+¨CÓ0ˆä˜t ]Ó3ˆã!ˆDØ�yÔ Ø˜d”?ÚØ—<‘<  UÓ+ˆDØ—<‘<  UÓ+ˆDØ—<‘<  TÓ*ˆDÜ�xŠx˜¤B§D¡D×)Ô)Úñ "ñ øôC ô 	Úð	ûô œÐ$ô 	Úð	ús#   ‚D ‡AD ÄDÄDÄD4Ä3D4c               ó    € V ^8„  d   QhRRRR/# r<   rA   )rB   s   "rC   rD   rD   ‰   s   € ÷ 	/ñ 	/˜3ð 	/ 4ñ 	/rE   c                óN   € \        4       '       d   \        V 4      # \        V 4      # )z‚Return True, if the host should be bypassed.

Checks proxy settings gathered from the environment, if specified,
or the registry.
)r   r   r`   )r>   s   &rC   r   r   ‰   s#   € ô "×#Ò#Ü+¨DÓ1Ð1ä(¨Ó.Ð.rE   c               ó    € V ^8„  d   QhRRRR/# )r=   Údz6_t.SupportsItems[Any, Any] | Iterable[tuple[Any, Any]]r?   zIterable[tuple[Any, Any]]rA   )rB   s   "rC   rD   rD   •   s   € ÷ ñ Ø=ðàñrE   c                óR   € \        V \        4      '       d   V P                  4       # V # )z/Returns an internal sequence dictionary update.)Ú
isinstanceÚ_SupportsItemsÚitems)rd   s   &rC   Údict_to_sequenceri   •   s"   € ô
 �!”^×$Ò$Ø�w‰w‹yÐà€HrE   c               ó    € V ^8„  d   QhRRRR/# )r=   Úor   r?   rR   rA   )rB   s   "rC   rD   rD       s   € ÷ D3ñ D3�ð D3˜ñ D3rE   c                ó|  € R p^ p\         '       g(   \        V \        4      '       d   V P                  R4      p \	        V R4      '       d   \        V 4      pMŽ\	        V R4      '       d   V P
                  pMo\	        V R4      '       d^    V P                  4       p\        P                  ! V4      P                  pRV P                  9  d   \        P                  ! R\        4       \	        V R4      '       df    V P#                  4       p\	        V R4      '       dC   Vf?    V P%                  ^ ^4       V P#                  4       pT P%                  T;'       g    ^ 4       Vf   ^ p\)        ^ W,
          4      #   \        P                  \         3 d     L¬i ; i  \&         d    ^ p LHi ; i  \&         d
    Te   Tp L_i ; i)	Núutf-8Ú__len__ÚlenÚfilenoÚba%  Requests has determined the content-length for this request using the binary size of the file: however, the file has been opened in text mode (i.e. without the 'b' flag in the mode). This may lead to an incorrect content-length. In Requests 3.0, support will be removed for files in text mode.ÚtellÚseek)r   rf   r   ÚencodeÚhasattrro   rp   ÚosÚfstatÚst_sizeÚmodeÚwarningsÚwarnr&   ÚioÚUnsupportedOperationÚAttributeErrorrr   rs   rT   Úmax)rk   Útotal_lengthÚcurrent_positionrp   s   &   rC   Ú	super_lenr‚       s�  € Ø€LØÐç‹<œJ q¬#×.Ò.ð �H‰H�WÓˆäˆq�)×ÒÜ˜1“v‰ä	��E×	Ò	Ø—u‘u‰ä	��H×	Ò	ð	Ø—X‘X“ZˆFô Ÿ8š8 FÓ+×3Ñ3ˆLð ˜!Ÿ&™&Ô Ü—’ð2ô $ô
ô ˆq�&×Òð	%Ø Ÿv™v›xÐô �q˜&×!Ò! lÒ&:ð	%à—F‘F˜1˜a”LØ#$§6¡6£8�Lð —F‘FÐ+×0Ð0¨qÔ1ð ÒØˆäˆq�,Õ1Ó2Ð2øôe ×'Ñ'¬Ð8ô 	ñ ð		ûôX ô %Ø#$’Lð%ûô% ô 	0ð
 Ò'Ø#/Ð ùð	0ús<   ÂE3 Ã7F' Ä5F ÅF Å3FÆFÆF$Æ#F$Æ'F;Æ:F;c               ó$   € V ^8„  d   QhRRRRRR/# )r=   Úurlz
_t.UriTypeÚraise_errorsr@   r?   ztuple[str, str] | NonerA   )rB   s   "rC   rD   rD   ç   s$   € ÷ 1ñ 1Ø	ð1Ø#'ð1àñ1rE   c                óú  € \        V \        4      '       d   V P                  R4      p \        P                  P                  R4      pVe   V3pMR \         4       p ^ RIHpHp RpV FK  p\        P                  P                  V4      p\        P                  P                  V4      '       g   KI  Tp M	  Vf   R# \        V 4      p	V	P                  p
V
f   R#  V! V4      P                  V
4      pV'       dL   \        V4      '       d9   V^ ,          '       d   ^ M^pW¼,          ;'       g    RV^,          ;'       g    R3# R# R#   T\         3 d    T'       d   h  R# i ; i  \"        \$        3 d     R# i ; i)z;Returns the Requests tuple auth for a given url from netrc.rm   ÚNETRCNc              3  ó,   "  € T F
  pR V 2x € K  	  R# 5i)z~/NrA   )Ú.0Úfs   & rC   Ú	<genexpr>Ú!get_netrc_auth.<locals>.<genexpr>ó   s   é € Ð9©[¨˜R ˜s�8«[ùs   ‚)ÚNetrcParseErrorÚnetrcÚ )rf   r   Údecoderv   ÚenvironÚgetr1   rŽ   r�   ÚpathÚ
expanduserÚexistsr!   ÚhostnameÚauthenticatorsÚanyrT   rO   r~   )r„   r…   Ú
netrc_fileÚnetrc_locationsr�   rŽ   Ú
netrc_pathrŠ   ÚlocÚrir>   Ú_netrcÚlogin_is   &&           rC   Úget_netrc_authr    ç   sH  € ô
 �#”u×ÒØ�j‰j˜Ó!ˆä—‘—‘ Ó(€JØÒØ%˜-‰á9­[Ó9ˆð#ß0àˆ
ã ˆAÜ—'‘'×$Ñ$ QÓ'ˆCÜ�w‰w�~‰~˜c×"Ô"Ø �
Ùñ	 !ð ÒÙä�c‹]ˆØ�{‰{ˆàŠ<Ùð
	Ù˜:Ó&×5Ñ5°dÓ;ˆFßœ#˜fŸ+š+à% aŸyœy™!¨a�Ø�×-Ð-¨2¨v°a­y¯¨¸BÐ?Ð?ñ &‰vøð  ¤Ð)ô 	÷ Øò ð	ûô œÐ(ô Úðús[   ÁAE% Â2
E% Â>E% ÃE Ã;E ÄE Ä.E Å E ÅE"ÅE"ÅE% Å!E"Å"E% Å%E:Å9E:c               ó    € V ^8„  d   QhRRRR/# )r=   Úobjr   r?   ú
str | NonerA   )rB   s   "rC   rD   rD     s   € ÷ &ñ &˜ð & 
ñ &rE   c                óê   € \        V RR4      pV'       d^   \        V\        \        34      '       d@   V^ ,          R8w  d0   VR,          R8w  d    \        P
                  P                  V4      # R# R# R# R# )z0Tries to guess the filename of the given object.ÚnameNÚ<Ú>éÿÿÿÿ)Úgetattrrf   r   r   rv   r“   Úbasename)r¢   r¥   s   & rC   Úguess_filenamer«     s[   € ä�3˜ Ó%€Dß”
˜4¤#¤u ×.Ò.°4¸µ7¸c´>ÀdÈ2ÅhÐRUÄoÜ�w‰w×Ñ Ó%Ð%ñ GV±>Ñ.�trE   c               ó    € V ^8„  d   QhRRRR/# )r=   r“   r   r?   rA   )rB   s   "rC   rD   rD   "  s   € ÷ #ñ #˜sð # sñ #rE   c                óX  € \         P                  P                  V 4      '       d   V # \         P                  P                  V 4      w  rV'       dd   \         P                  P                  V4      '       g?   \         P                  P                  V4      w  rV'       g   MRP	                  W2.4      pKk  \
        P                  ! V4      '       g   V # \
        P                  ! V4      pW$P                  4       9  d   V # \         P                  P                  VP                  R4      R,          4      R,          p\        P                  ! VR7      w  rg \         P                  ! WdP                  V4      4       \         P                  ! V4       V#   \         P                  ! T4       i ; i)z¸Replace nonexistent paths that look like they refer to a member of a zip
archive with the location of an extracted copy of the target, or else
just return the provided path unchanged.
Ú/)Úsuffixr¨   )rv   r“   r•   rV   ÚjoinÚzipfileÚ
is_zipfileÚZipFileÚnamelistÚsplitextÚtempfileÚmkstempÚwriteÚreadÚclose)r“   ÚarchiveÚmemberÚprefixÚzip_filer¯   ÚfdÚextracted_paths   &       rC   Úextract_zipped_pathsrÁ   "  s"  € ô
 
‡w�w‡~�~�d×Òàˆô —g‘g—m‘m DÓ)�O€Gß
œ"Ÿ'™'Ÿ.™.¨×1Ò1ÜŸ'™'Ÿ-™-¨Ó0‰ˆßð Ø—‘˜6Ð*Ó+Šä×Ò˜g×&Ò&Øˆä�Š˜wÓ'€HØ×&Ñ&Ó(Ô(Øˆô �W‰W×Ñ˜fŸl™l¨3Ó/°Õ3Ó4°RÕ8€FÜ!×)Ò)°Ô8Ñ€BðÜ
�Š�—]‘] 6Ó*Ô+ä
�Š�ŒàÐøô 	�Š��ús   Å%F ÆF)c               ó    € V ^8„  d   QhRRRR/# )r=   Úfilenamer   r?   z%Generator[BufferedWriter, None, None]rA   )rB   s   "rC   rD   rD   I  s   € ÷ 	ñ 	˜#ð 	Ð"Gñ 	rE   c              #  ór  "  € \         P                  ! \        P                  P	                  V 4      R7      w  r \        P
                  ! VR4      ;_uu_ 4       pVx € RRR4       \        P                  ! W 4       R#   + '       g   i     L(; i  \         d    \        P                  ! T4       h i ; i5i)z-Write a file to the disk in an atomic fashion)ÚdirÚwbN)	r¶   r·   rv   r“   ÚdirnameÚfdopenrX   ÚBaseExceptionÚremove)rÃ   Útmp_descriptorÚtmp_nameÚtmp_handlers   &   rC   Úatomic_openrÎ   H  s}   é € ô  (×/Ò/´B·G±G·O±OÀHÓ4MÔNÑ€NðÜ�YŠY�~ t×,Ô,°ØÒ÷ -ä
�
Š
�8Ö&÷ -×,ûô ô Ü
�	Š	�(ÔØðüs4   ‚7B7ºB ÁA>ÁB Á<B7Á>B	Â	B Â#B4Â4B7c               ó    € V ^8„  d   QhRRRR/# )r=   Úvaluez4Mapping[Any, Any] | Iterable[tuple[Any, Any]] | Noner?   zdict[Any, Any] | NonerA   )rB   s   "rC   rD   rD   U  s   € ÷ ñ Ø?ðàñrE   c                ó†   € V f   R# \        V \        \        \        \        34      '       d   \        R4      h\        V 4      # )aÓ  Take an object and test to see if it can be represented as a
dictionary. Unless it can not be represented as such, return an
OrderedDict, e.g.,

::

    >>> from_key_val_list([('key', 'val')])
    OrderedDict([('key', 'val')])
    >>> from_key_val_list('string')
    Traceback (most recent call last):
    ...
    ValueError: cannot encode objects that are not 2-tuples
    >>> from_key_val_list({'key': 'val'})
    OrderedDict([('key', 'val')])

:rtype: OrderedDict
Nú+cannot encode objects that are not 2-tuples)rf   r   r   r@   rR   rU   r   ©rÐ   s   &rC   Úfrom_key_val_listrÔ   U  s9   € ð( ‚}Ùä�%œ#œu¤d¬CÐ0×1Ò1ÜÐFÓGÐGä�uÓÐrE   c               ó    € V ^8„  d   QhRRRR/# )r=   rÐ   ÚNoner?   rA   )rB   s   "rC   rD   rD   s  s   € × -Ñ -˜4Ð - DÑ -rE   c                ó   € R # ©NrA   rÓ   s   &rC   Úto_key_val_listrÙ   r  s   € Ù*-rE   c               ó    € V ^8„  d   QhRRRR/# )r=   rÐ   z6_t.SupportsItems[_KT, _VT] | Iterable[tuple[_KT, _VT]]r?   zlist[tuple[_KT, _VT]]rA   )rB   s   "rC   rD   rD   u  s   € ÷  ñ  ØAð àñ rE   c                ó   € R # rØ   rA   rÓ   s   &rC   rÙ   rÙ   t  s   € ñ  rE   c               ó    € V ^8„  d   QhRRRR/# )r=   rÐ   z=_t.SupportsItems[_KT, _VT] | Iterable[tuple[_KT, _VT]] | Noner?   zlist[tuple[_KT, _VT]] | NonerA   )rB   s   "rC   rD   rD   x  s   € ÷ ñ ØHðà!ñrE   c                óä   € V f   R# \        V \        \        \        \        34      '       d   \        R4      h\        V \        4      '       d   \        V P                  4       4      # \        V 4      # )a’  Take an object and test to see if it can be represented as a
dictionary. If it can be, return a list of tuples, e.g.,

::

    >>> to_key_val_list([('key', 'val')])
    [('key', 'val')]
    >>> to_key_val_list({'key': 'val'})
    [('key', 'val')]
    >>> to_key_val_list('string')
    Traceback (most recent call last):
    ...
    ValueError: cannot encode objects that are not 2-tuples

:rtype: list
NrÒ   )	rf   r   r   r@   rR   rU   rg   Úlistrh   rÓ   s   &rC   rÙ   rÙ   x  sV   € ð& ‚}Ùä�%œ#œu¤d¬CÐ0×1Ò1ÜÐFÓGÐGä�%œ×(Ò(Ü�E—K‘K“MÓ"Ð"ä�‹;ÐrE   c               ó    € V ^8„  d   QhRRRR/# )r=   rÐ   r   r?   ú	list[str]rA   )rB   s   "rC   rD   rD   ˜  s   € ÷ ñ ˜Sð  Yñ rE   c                ó¤   € . p\        V 4       F>  pVR,          VRR u;8X  d   R8X  d   M M\        V^R 4      pVP                  V4       K@  	  V# )aÆ  Parse lists as described by RFC 2068 Section 2.

In particular, parse comma-separated lists where the elements of
the list may include quoted-strings.  A quoted-string could
contain a comma.  A non-quoted string could have quotes in the
middle.  Quotes are removed automatically after parsing.

It basically works like :func:`parse_set_header` just that items
may appear multiple times and case sensitivity is preserved.

The return value is a standard :class:`list`:

>>> parse_list_header('token, "quoted value"')
['token', 'quoted value']

To create a header from the :class:`list` again, use the
:func:`dump_header` function.

:param value: a string with a list header.
:return: :class:`list`
:rtype: list
ºNé   NNÚ"r¨   )Ú_parse_list_headerÚunquote_header_valueÚappend)rÐ   ÚresultÚitems   &  rC   Úparse_list_headerrê   ˜  sR   € ð. €FÜ" 5Ö)ˆØ��8�t˜B˜C�yÖ' C×'Ü'¨¨Q¨r¨
Ó3ˆDØ�‰�dÖñ *ð €MrE   c               ó    € V ^8„  d   QhRRRR/# )r=   rÐ   r   r?   údict[str, str | None]rA   )rB   s   "rC   rD   rD   ¸  s   € ÷ ñ ˜Sð Ð%:ñ rE   c                óÌ   € / p\        V 4       FR  pRV9  d   RW&   K  VP                  R^4      w  r0V R,          V RR u;8X  d   R8X  d   M M\        V ^R 4      p WV&   KT  	  V# )a"  Parse lists of key, value pairs as described by RFC 2068 Section 2 and
convert them into a python dict:

>>> d = parse_dict_header('foo="is a fish", bar="as well"')
>>> type(d) is dict
True
>>> sorted(d.items())
[('bar', 'as well'), ('foo', 'is a fish')]

If there is no value for a key it will be `None`:

>>> parse_dict_header('key_without_value')
{'key_without_value': None}

To create a header from the :class:`dict` again, use the
:func:`dump_header` function.

:param value: a string with a dict header.
:return: :class:`dict`
:rtype: dict
Ú=Nrâ   rä   r¨   )rå   rV   ræ   )rÐ   rè   ré   r¥   s   &   rC   Úparse_dict_headerrï   ¸  sp   € ð, %'€FÜ" 5Ö)ˆØ�dŒ?ØˆF‰LÙØ—j‘j  aÓ(‰ˆØ��9˜˜b˜c˜
Ö) c×)Ü(¨¨q°¨Ó5ˆEØˆt‹ñ *ð €MrE   c               ó$   € V ^8„  d   QhRRRRRR/# )r=   rÐ   r   Úis_filenamer@   r?   rA   )rB   s   "rC   rD   rD   Û  s!   € ÷ ñ  ð °$ð À3ñ rE   c                óÒ   € V '       d_   V ^ ,          V R,          u;8X  d   R8X  dB   M V # V ^R p V'       d   V R,          R8w  d#   V P                  RR4      P                  RR4      # V # )zÓUnquotes a header value.  (Reversal of :func:`quote_header_value`).
This does not use the real unquoting but what browsers are actually
using for quoting.

:param value: the header value to unquote.
:rtype: str
rä   ºNr=   Nz\\Ú\z\"r¨   )rX   )rÐ   rñ   s   &&rC   ræ   ræ   Û  sb   € ÷ ��q•˜U 2�YÖ-¨#Ö-ð €Lð �a˜�ˆ÷ ˜e B�i¨6Ô1Ø—=‘= ¨Ó.×6Ñ6°u¸cÓBÐBØ€LrE   c               ó    € V ^8„  d   QhRRRR/# )r=   Úcjr+   r?   rì   rA   )rB   s   "rC   rD   rD   ô  s   € ÷ ñ ˜Ið Ð*?ñ rE   c                óZ   € V  Uu/ uF  qP                   VP                  bK  	  ppV# u upi )ztReturns a key/value dictionary from a CookieJar.

:param cj: CookieJar object to extract cookies from.
:rtype: dict
)r¥   rÐ   )rö   ÚcookieÚcookie_dicts   &  rC   Údict_from_cookiejarrú   ô  s.   € ñ <>Ó>¹2°—;‘; §¡Ò,¹2€KÐ>ØÐùò ?s   …(c               ó$   € V ^8„  d   QhRRRRRR/# )r=   rö   r+   rù   údict[str, str]r?   rA   )rB   s   "rC   rD   rD   ÿ  s!   € ÷ 0ñ 0˜ið 0°nð 0Èñ 0rE   c                ó   € \        W4      # )z²Returns a CookieJar from a key/value dictionary.

:param cj: CookieJar to insert cookies into.
:param cookie_dict: Dict of key/values to insert into CookieJar.
:rtype: CookieJar
r$   )rö   rù   s   &&rC   Úadd_dict_to_cookiejarrþ   ÿ  s   € ô ˜{Ó/Ð/rE   c               ó    € V ^8„  d   QhRRRR/# )r=   Úcontentr   r?   rà   rA   )rB   s   "rC   rD   rD   
  s   € ÷ ñ ¨ð °	ñ rE   c                óv  € \         P                  ! R\        4       \        P                  ! R\        P
                  R7      p\        P                  ! R\        P
                  R7      p\        P                  ! R4      pVP                  V 4      VP                  V 4      ,           VP                  V 4      ,           # )zdReturns encodings from given content string.

:param content: bytestring to extract encodings from.
z¤In requests 3.0, get_encodings_from_content will be removed. For more information, please see the discussion on issue #2266. (This warning should only appear once.)z!<meta.*?charset=["\']*(.+?)["\'>])Úflagsz+<meta.*?content=["\']*;?charset=(.+?)["\'>]z$^<\?xml.*?encoding=["\']*(.+?)["\'>])rz   r{   ÚDeprecationWarningrY   Úcompiler[   Úfindall)r   Ú
charset_reÚ	pragma_reÚxml_res   &   rC   Úget_encodings_from_contentr	  
  s‘   € ô
 ‡M‚Mð1ô 	ôô —’Ð@ÌÏÉÔM€JÜ—
’
ÐIÔQS×QUÑQUÔV€IÜ�ZŠZÐ?Ó@€Fð 	×Ñ˜7Ó#Ø
×
Ñ
˜GÓ
$õ	%à
�.‰.˜Ó
!õ	"ðrE   c               ó    € V ^8„  d   QhRRRR/# )r=   Úheaderr   r?   ztuple[str, dict[str, Any]]rA   )rB   s   "rC   rD   rD   #  s   € ÷ %ñ % sð %Ð/Iñ %rE   c                ój  € V P                  R4      pV^ ,          P                  4       VR,          r2/ pRpV Fw  pVP                  4       pV'       g   K  VP                  R4      ;pR8w  g   K7  VRV P                  V4      pWg^,           R P                  V4      p	W”VP                  4       &   Ky  	  W$3# )z˜Returns content type and parameters from given header.

:param header: string
:return: tuple containing content type and dictionary of
     parameters.
rJ   ºrã   NNz"' rî   Nr¨   )rV   ÚstripÚfindÚlower)
r  ÚtokensÚcontent_typeÚparamsÚparams_dictÚstrip_charsÚparamÚidxÚkeyrÐ   s
   &         rC   Ú_parse_content_type_headerr  #  s¨   € ð �\‰\˜#Ó€FØ! !�9Ÿ?™?Ó,¨f°R­j�&Ø)+€KØ€KãˆØ—‘“ˆß‰5˜UŸZ™Z¨›_Ð,�c°Ö3Ø˜˜�+×#Ñ# KÓ0ˆCØ �'˜)Ð$×*Ñ*¨;Ó7ˆEØ',˜Ÿ	™	›Ó$ñ ð Ð$Ð$rE   c               ó    € V ^8„  d   QhRRRR/# )r=   ÚheadersúCaseInsensitiveDict[str]r?   r£   rA   )rB   s   "rC   rD   rD   9  s   € ÷ ñ Ð'?ð ÀJñ rE   c                ó¸   € V P                  R4      pV'       g   R# \        V4      w  rRV9   d   VR,          P                  R4      # RV9   d   R# RV9   d   R# R# )	zqReturns encodings from given HTTP Header Dict.

:param headers: dictionary to extract encoding from.
:rtype: str
zcontent-typeNÚcharsetz'"Útextz
ISO-8859-1zapplication/jsonrm   )r’   r  r  )r  r  r  s   &  rC   Úget_encoding_from_headersr   9  s^   € ð —;‘;˜~Ó.€LçÙä5°lÓCÑ€Là�FÔØ�iÕ ×&Ñ& uÓ-Ð-à�ÔÙà˜\Ô)áñ *rE   c               ó$   € V ^8„  d   QhRRRRRR/# )r=   ÚiteratorzIterable[bytes]Úrr0   r?   z"Generator[str | bytes, None, None]rA   )rB   s   "rC   rD   rD   R  s$   € ÷ ñ ØðØ"*ðà'ñrE   c              #  ó&  "  € VP                   f   T  Rj  x€L
  R# \        P                  ! VP                   4      ! RR7      pV  F"  pVP                  V4      pV'       g   K  Vx € K$  	  VP                  RRR7      pV'       d   Vx € R# R#  Lx5i)zStream decodes an iterator.NrX   ©ÚerrorsrE   T)Úfinal)ÚencodingÚcodecsÚgetincrementaldecoderr�   )r"  r#  ÚdecoderÚchunkÚrvs   &&   rC   Ústream_decode_response_unicoder.  R  s~   é € ð
 	‡z�zÒØ×ÐÙä×*Ò*¨1¯:©:Ô6¸iÔH€GÛˆØ�^‰^˜EÓ"ˆß‰2ØŒHñ ð 
�‰˜ 4ˆÓ	(€Bß	ØŒñ 
ñ 	ùs   ‚B–B—ABÁ$"BÂ	Bc               ó$   € V ^8„  d   QhRRRRRR/# )r=   Ústringr   Úslice_lengthú
int | Noner?   zGenerator[bytes, None, None]rA   )rB   s   "rC   rD   rD   f  s$   € ÷ 'ñ 'Øð'Ø!+ð'à!ñ'rE   c                ó   € R # rØ   rA   ©r0  r1  s   &&rC   Úiter_slicesr5  e  s   € ñ $'rE   c               ó$   € V ^8„  d   QhRRRRRR/# )r=   r0  r   r1  r2  r?   zGenerator[str, None, None]rA   )rB   s   "rC   rD   rD   j  s$   € ÷ %ñ %Øð%Ø)ð%àñ%rE   c                ó   € R # rØ   rA   r4  s   &&rC   r5  r5  i  s   € ñ "%rE   c               ó$   € V ^8„  d   QhRRRRRR/# )r=   r0  zbytes | strr1  r2  r?   z"Generator[bytes | str, None, None]rA   )rB   s   "rC   rD   rD   m  s$   € ÷ 	ñ 	Øð	Ø'1ð	à'ñ	rE   c              #  óŠ   "  € ^ pVe   V^ 8:  d   \        V 4      pV\        V 4      8  d   WW!,            x € W!,          pK&  R# 5i)z Iterate over slices of a string.N)ro   )r0  r1  Úposs   && rC   r5  r5  m  sI   é € ð €CØÒ˜|¨qÔ0Ü˜6“{ˆØ
”�F“Ô
Ø˜3Õ-Ð.Ò.ØÕŠñ ùs   ‚AAc               ó    € V ^8„  d   QhRRRR/# )r=   r#  r0   r?   zstr | bytes | NonerA   )rB   s   "rC   rD   rD   y  s   € ÷ &ñ & ð &Ð.@ñ &rE   c                óˆ  € \         P                  ! R\        4       V P                  f   R# . p\	        V P
                  4      pV'       d    \        V P                  V4      #  \        V P                  T;'       g    RRR7      #   \         d    TP                  T4        LAi ; i  \         d    T P                  u # i ; i)zÊReturns the requested content back in unicode.

:param r: Response object to get unicode content from.

Tried:

1. charset from content-type
2. fall back and replace all unicode characters

:rtype: str
z£In requests 3.0, get_unicode_from_response will be removed. For more information, please see the discussion on issue #2266. (This warning should only appear once.)Nrm   rX   r%  )
rz   r{   r  r   r   r  r   ÚUnicodeErrorrç   Ú	TypeError)r#  Útried_encodingsr(  s   &  rC   Úget_unicode_from_responser@  y  s°   € ô ‡M‚Mð1ô 	ôð 	‡y�yÒÙà!#€Oô )¨¯©Ó3€Hçð	-Ü�q—y‘y (Ó+Ð+ð
Ü�1—9‘9˜h×1Ð1¨'¸)ÔDÐDøô ô 	-Ø×"Ñ" 8Ö,ð	-ûô ô Ø�y‰yÒðús*   ÁB Á#B' Á<B' ÂB$Â#B$Â'CÃ CÚUNRESERVED_SETc               ó    € V ^8„  d   QhRRRR/# ©r=   Úurir   r?   rA   )rB   s   "rC   rD   rD   ¨  s   € ÷ ñ ˜Cð  Cñ rE   c                óÒ  € V P                  R4      p\        ^\        V4      4       F�  pW,          R,          p\        V4      ^8X  da   VP                  4       '       dK    \	        \        V^4      4      pT\        9   d   YAT,          R,          ,           Y&   Ks  RY,           2Y&   K‚  RW,           2W&   K‘  	  RP                  V4      #   \         d    \        RT R24      hi ; i)zœUn-escape any percent-escape sequences in a URI that are unreserved
characters. This leaves all reserved, illegal and non-ASCII bytes encoded.

:rtype: str
Ú%:rG   r=   Nz"Invalid percent-escape sequence: 'Ú':r=   NNr�   )
rV   Úrangero   ÚisalnumÚchrrR   rU   r(   rA  r°   )rD  ÚpartsÚiÚhÚcs   &    rC   Úunquote_unreservedrO  ¨  sÍ   € ð �I‰I�c‹N€EÜ�1”c˜%“jÖ!ˆØ�H�S�MˆÜˆq‹6�QŒ;˜1Ÿ9™9Ÿ;š;ðLÜœ˜A˜r›
“O�ð ”NÔ"Ø Q�x¨�|Õ+�“à˜u�x˜j˜>�“à˜5�8˜*�~ˆE‹Hñ "ð �7‰7�5‹>Ðøô ô LÜ Ð#EÀaÀSÈÐ!JÓKÐKðLús   Á CÃC&c               ó    € V ^8„  d   QhRRRR/# rC  rA   )rB   s   "rC   rD   rD   À  s   € ÷ 5ñ 5�Sð 5˜Sñ 5rE   c                ór   € RpRp \        \        V 4      VR7      #   \         d    \        YR7      u # i ; i)zœRe-quote the given URI.

This function passes the given URI through an unquote/quote cycle to
ensure that it is fully and consistently quoted.

:rtype: str
z!#$%&'()*+,/:;=?@[]~z!#$&'()*+,/:;=?@[]~)Úsafe)r   rO  r(   )rD  Úsafe_with_percentÚsafe_without_percents   &  rC   Úrequote_urirU  À  sG   € ð /ÐØ0Ðð	5ô Ô'¨Ó,Ð3DÔEÐEøÜô 5ô �SÔ4Ò4ð	5ús   † œ6µ6c               ó$   € V ^8„  d   QhRRRRRR/# )r=   Úipr   Únetr?   r@   rA   )rB   s   "rC   rD   rD   Ö  s!   € ÷ 5ñ 5˜3ð 5 Sð 5¨Tñ 5rE   c           
     ó¨  € \         P                  ! R\        P                  ! V 4      4      ^ ,          pVP	                  R4      w  r4\         P                  ! R\        P                  ! \        \        V4      4      4      4      ^ ,          p\         P                  ! R\        P                  ! V4      4      ^ ,          V,          pW%,          We,          8H  # )zßThis function allows you to check if an IP belongs to a network subnet

Example: returns True if ip = 192.168.1.1 and net = 192.168.1.0/24
         returns False if ip = 192.168.1.1 and net = 192.168.100.0/24

:rtype: bool
z=Lr®   )ÚstructÚunpackÚsocketÚ	inet_atonrV   Údotted_netmaskrR   )rW  rX  ÚipaddrÚnetaddrÚbitsÚnetmaskÚnetworks   &&     rC   Úaddress_in_networkrd  Ö  s’   € ô �]Š]˜4¤×!1Ò!1°"Ó!5Ó6°qÕ9€FØ—I‘I˜c“N�M€GÜ�mŠm˜D¤&×"2Ò"2´>Ä#ÀdÃ)Ó3LÓ"MÓNÈqÕQ€GÜ�mŠm˜D¤&×"2Ò"2°7Ó";Ó<¸QÕ?À'ÕI€GØÕ 'Õ"3Ñ4Ð4rE   c               ó    € V ^8„  d   QhRRRR/# )r=   ÚmaskrR   r?   r   rA   )rB   s   "rC   rD   rD   å  s   € ÷ 5ñ 5˜ð 5 ñ 5rE   c                ó”   € R^^ V ,
          ,          ^,
          ,          p\         P                  ! \        P                  ! RV4      4      # )zuConverts mask from /xx format to xxx.xxx.xxx.xxx

Example: if mask is 24 function returns 255.255.255.0

:rtype: str
l   ÿÿ z>I)r\  Ú	inet_ntoarZ  Úpack)rf  ra  s   & rC   r^  r^  å  s7   € ð ˜˜b 4�i�¨1Õ,Õ,€DÜ×ÒœFŸKšK¨¨dÓ3Ó4Ð4rE   c               ó    € V ^8„  d   QhRRRR/# )r=   Ú	string_ipr   r?   r@   rA   )rB   s   "rC   rD   rD   ð  s   € ÷ ñ ˜sð  tñ rE   c                óX   €  \         P                  ! V 4       R#   \         d     R# i ; i)z
:rtype: bool
FT)r\  r]  rT   )rk  s   &rC   Úis_ipv4_addressrm  ð  s.   € ðÜ×Ò˜Ô#ñ øô ô Úðús   ‚ š)¨)c               ó    € V ^8„  d   QhRRRR/# )r=   Ústring_networkr   r?   r@   rA   )rB   s   "rC   rD   rD   û  s   € ÷ ñ  #ð ¨$ñ rE   c                ó<  € V P                  R4      ^8X  db    \        V P                  R4      ^,          4      pT^8  g   T^ 8”  d   R#  \        P
                  ! T P                  R4      ^ ,          4       R# R#   \         d     R# i ; i  \         d     R# i ; i)zJ
Very simple check of the cidr format in no_proxy variable.

:rtype: bool
r®   FT)ÚcountrR   rV   rU   r\  r]  rT   )ro  rf  s   & rC   Úis_valid_cidrrr  û  sœ   € ð ×Ñ˜CÓ  AÔ%ð	Ü�~×+Ñ+¨CÓ0°Õ3Ó4ˆDð �!Œ8�t˜b”yÙð	Ü×Ò˜^×1Ñ1°#Ó6°qÕ9Ô:ñ
 ñ øô ô 	Úð	ûô ô 	Úð	ús#   ˜!A: Á
,B Á:B	ÂB	ÂBÂBc               ó$   € V ^8„  d   QhRRRRRR/# )r=   Úenv_namer   rÐ   r£   r?   zGenerator[None, None, None]rA   )rB   s   "rC   rD   rD     s"   € ÷ 1ñ 1˜#ð 1 jð 1Ð5Pñ 1rE   c              #  ón  "  € VRJpRpV'       d3   \         P                  P                  V 4      pV\         P                  V &    Rx € V'       d-   Vf   \         P                  V  R# V\         P                  V &   R# R#   T'       d+   Tf   \         P                  T  i T\         P                  T &   i i ; i5i)zÂSet the environment variable 'env_name' to 'value'

Save previous value, yield, and then restore the previous value stored in
the environment variable 'env_name'.

If 'value' is None, do nothingN)rv   r‘   r’   )rt  rÐ   Úvalue_changedÚ	old_values   &&  rC   Úset_environrx    s‘   é € ð  Ð%€MØ €IßÜ—J‘J—N‘N 8Ó,ˆ	Ø$Œ�
‰
�8Ñð1ÛçØÒ Ü—J‘J˜xÒ(à'0”—
‘
˜8Ó$ñ	 ø�=ØÒ Ü—J‘J˜xÑ(à'0”—
‘
˜8Ò$ð	 üs   ‚AB5ÁA> Á6B5Á>4B2Â2B5c               ó$   € V ^8„  d   QhRRRRRR/# )r=   r„   r   Úno_proxyr£   r?   r@   rA   )rB   s   "rC   rD   rD   *  s!   € ÷ <ñ <˜sð <¨jð <¸Tñ <rE   c                óL  € R R lpTpVf	   V! R4      p\        V 4      pVP                  pVf   R# V'       Ed   R VP                  RR4      P                  R	4       4       p\	        V4      '       d;   V F3  p\        V4      '       d   \        WW4      '       d    R# K*  WW8X  g   K2   R# 	  M�TpVP                  '       d   VR
VP                   2,          pV F]  p	V	P                  R4      p	WY8X  g   W‰8X  d    R# RV	,           p	VP                  V	4      '       g   VP                  V	4      '       g   K\   R# 	  \        RV4      ;_uu_ 4         \        V4      p
RRR4       X
'       d   R# R#   \        \        P                  3 d    Rp
 L3i ; i  + '       g   i     L?; i)z@
Returns whether we should bypass proxies or not.

:rtype: bool
c               ó    € V ^8„  d   QhRRRR/# )r=   r  r   r?   r£   rA   )rB   s   "rC   rD   Ú+should_bypass_proxies.<locals>.__annotate__3  s   € ÷ Bñ B�sð B˜zñ BrE   c                óª   € \         P                  P                  V 4      ;'       g.    \         P                  P                  V P                  4       4      # rØ   )rv   r‘   r’   Úupper)r  s   &rC   Ú	get_proxyÚ(should_bypass_proxies.<locals>.get_proxy3  s0   € Ü�z‰z�~‰~˜cÓ"×AÐA¤b§j¡j§n¡n°S·Y±Y³[Ó&AÐArE   Nrz  Tc              3  ó8   "  € T F  q'       g   K  Vx € K  	  R # 5irØ   rA   )r‰   r>   s   & rC   r‹   Ú(should_bypass_proxies.<locals>.<genexpr>E  s   é € ÐXÑ+O 4ÓSWŸ$š$Ó+Oùs   ‚	�
Ú r�   Ú,Ú:rK   F)r!   r–   rX   rV   rm  rr  rd  ÚportÚlstripÚendswithrx  r   r>  r\  Úgaierror)r„   rz  r€  Úno_proxy_argÚparsedr–   Úno_proxy_hostsÚproxy_ipÚhost_with_portr>   Úbypasss   &&         rC   Úshould_bypass_proxiesr‘  *  sp  € õBð
 €LØÒÙ˜ZÓ(ˆÜ�c‹]€FØ�‰€HàÒáç€xñ Y¨8×+;Ñ+;¸CÀÓ+D×+JÑ+JÈ3Ô+OÓXˆä˜8×$Ò$Û*�Ü  ×*Ò*Ü)¨(×=Ò=Ú#ñ >àÖ)ò  ò +ð &ˆNØ�{�{ˆ{Ø A f§k¡k ]Ð"3Õ3�ã&�Ø—{‘{ 3Ó'�ØÔ# ~Ô'=ÚØ˜T•z�Ø×$Ñ$ T×*Ò*¨n×.EÑ.EÀd×.KÔ.KÚñ 'ô 
�Z ×	.Õ	.ð	Ü! (Ó+ˆF÷ 
/÷ Ùáøô œ6Ÿ?™?Ð+ô 	ØŠFð	ú÷ 
/×	.ús*   ÅFÅE0Å0FÆFÆFÆFÆF#	c               ó$   € V ^8„  d   QhRRRRRR/# )r=   r„   r   rz  r£   r?   rü   rA   )rB   s   "rC   rD   rD   i  s!   € ÷ 	ñ 	˜Sð 	¨Jð 	À.ñ 	rE   c                ó>   € \        WR7      '       d   / # \        4       # )z5
Return a dict of environment proxies.

:rtype: dict
©rz  )r‘  r   )r„   rz  s   &&rC   Úget_environ_proxiesr•  i  s   € ô ˜S×4Ó4Øˆ	ä‹|ÐrE   c               ó$   € V ^8„  d   QhRRRRRR/# )r=   r„   r   Úproxiesúdict[str, str] | Noner?   r£   rA   )rB   s   "rC   rD   rD   u  s"   € ÷ ñ �cð Ð$9ð ¸jñ rE   c                ód  € T;'       g    / p\        V 4      pVP                  f,   VP                  VP                  VP                  R4      4      # VP                  R,           VP                  ,           VP                  RVP                  ,           R.pRpV F  pWQ9   g   K  W,          p V# 	  V# )z¡Select a proxy for the url, if applicable.

:param url: The url being for the request
:param proxies: A dictionary of schemes or schemes and hosts to proxy URLs
NÚallz://zall://)r!   r–   r’   Úscheme)r„   r—  ÚurlpartsÚ
proxy_keysÚproxyÚ	proxy_keys   &&    rC   Úselect_proxyr   u  s¨   € ð �mˆm˜€GÜ˜‹}€HØ×ÑÒ Ø�{‰{˜8Ÿ?™?¨G¯K©K¸Ó,>Ó?Ð?ð 	�‰˜%Õ (×"3Ñ"3Õ3Ø�‰Ø�8×$Ñ$Õ$Øð	€Jð €EÛˆ	ØÖØÕ&ˆEØà€Lñ  ð
 €LrE   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r=   ÚrequestzRequest | PreparedRequestr—  r˜  Ú	trust_envr@   r?   rü   rA   )rB   s   "rC   rD   rD   �  s0   € ÷ ñ Ø&ðà"ðð ðð ñ	rE   c                ót  € Ve   TM/ p\        \        V P                  4      p\        V4      P                  pVP                  R4      pVP                  4       pV'       dX   \        W5R7      '       gF   \        W5R7      pVP                  WGP                  R4      4      pV'       d   VP                  WH4       V# )a�  This method takes proxy information from a request and configuration
input to resolve a mapping of target proxies. This will consider settings
such as NO_PROXY to strip proxy configurations.

:param request: Request or PreparedRequest
:param proxies: A dictionary of schemes or schemes and hosts to proxy URLs
:param trust_env: Boolean declaring whether to trust environment configs

:rtype: dict
rz  r”  rš  )
r
   r   r„   r!   r›  r’   Úcopyr‘  r•  Ú
setdefault)	r¢  r—  r£  r„   r›  rz  Únew_proxiesÚenviron_proxiesrž  s	   &&&      rC   Úresolve_proxiesr©  �  s’   € ð !Ò,‰g°"€GÜ
Œs�G—K‘KÓ
 €CÜ�c‹]×!Ñ!€FØ�{‰{˜:Ó&€HØ—,‘,“.€KçÔ.¨s×FÓFÜ-¨cÔEˆà×#Ñ# F×,?Ñ,?ÀÓ,FÓGˆçØ×"Ñ" 6Ô1ØÐrE   c               ó    € V ^8„  d   QhRRRR/# )r=   r¥   r   r?   rA   )rB   s   "rC   rD   rD   ®  s   € ÷ #ñ #˜Sð #¸ñ #rE   c                ó   € V  R\          2# )zC
Return a string representing the default user agent.

:rtype: str
r®   r   )r¥   s   &rC   Údefault_user_agentr¬  ®  s   € ð ˆV�1”[�MÐ"Ð"rE   c               ó   € V ^8„  d   QhRR/# )r=   r?   r  rA   )rB   s   "rC   rD   rD   ·  s   € ÷ ñ Ð1ñ rE   c            
     ó@   € \        R\        4       R\        RRRR/4      # )z1
:rtype: requests.structures.CaseInsensitiveDict
z
User-AgentzAccept-EncodingÚAcceptz*/*Ú
Connectionz
keep-alive)r*   r¬  r9   rA   rE   rC   Údefault_headersr±  ·  s/   € ô àÔ,Ó.ØÔ6Ø�eØ˜,ð		
óð rE   c               ó    € V ^8„  d   QhRRRR/# )r=   rÐ   r   r?   zlist[dict[str, str]]rA   )rB   s   "rC   rD   rD   Å  s   € ÷ "ñ "˜cð "Ð&:ñ "rE   c                óÜ  € . pRpV P                  V4      p V '       g   V# \        P                  ! RV 4       FŠ  p VP                  R^4      w  rERVP                  R4      /pVP                  R4       F9  p VP                  R4      w  r€T P                  T4      YhP                  T4      &   K;  	  VP	                  V4       KŒ  	  V#   \         d    TRrT Lˆi ; i  \         d      K:  i ; i)z°Return a list of parsed link headers proxies.

i.e. Link: <http:/.../front.jpeg>; rel=front; type="image/jpeg",<http://.../back.jpeg>; rel=back;type="image/jpeg"

:rtype: list
z '"z, *<rJ   r�   r„   z<> '"rî   )r  rY   rV   rU   rç   )	rÐ   ÚlinksÚreplace_charsÚvalr„   r  Úlinkr  r  s	   &        rC   Úparse_header_linksr¸  Å  sé   € ð #%€Eà€Mà�K‰K˜Ó&€EßØˆä�xŠx˜ Ö&ˆð	"ØŸ)™) C¨Ó+‰KˆCð !& s§y¡y°Ó':Ð;ˆà—\‘\ #Ö&ˆEðØ"Ÿ[™[¨Ó-‘
�ð .3¯[©[¸Ó-GˆD—‘˜=Ó)Ó*ñ 'ð 	�‰�TÖñ! 'ð$ €Løô ô 	"Ø˜r’ð	"ûô ô Ûðús#   »CÁ7CÃCÃCÃC+Ã*C+Ú Úasciic               ó    € V ^8„  d   QhRRRR/# )r=   Údatar   r?   r£   rA   )rB   s   "rC   rD   rD   ð  s   € ÷ ñ ˜ð  :ñ rE   c                óö  € V R,          pV\         P                  \         P                  39   d   R# VR,          \         P                  8X  d   R# VR,          \         P                  \         P
                  39   d   R# VP                  \        4      pV^ 8X  d   R# V^8X  d)   VR,          \        8X  d   R	# VR
,          \        8X  d   R# V^8X  d)   VR,          \        8X  d   R# VR,          \        8X  d   R# R# )z
:rtype: str
:Né   Nzutf-32:Né   Nz	utf-8-sigró   zutf-16rm   :NNr=   z	utf-16-be:rã   Nr=   z	utf-16-lez	utf-32-ber  z	utf-32-leN)
r)  ÚBOM_UTF32_LEÚBOM_UTF32_BEÚBOM_UTF8ÚBOM_UTF16_LEÚBOM_UTF16_BErq  Ú_nullÚ_null2Ú_null3)r¼  ÚsampleÚ	nullcounts   &  rC   Úguess_json_utfrÊ  ð  sÁ   € ð �"�X€FØ”&×%Ñ%¤v×':Ñ':Ð;Ô;ÙØˆb…z”V—_‘_Ô$ÙØˆb…z”f×)Ñ)¬6×+>Ñ+>Ð?Ô?ÙØ—‘œUÓ#€IØ�A„~ÙØ�A„~Ø�#�;œ&Ô ÙØ�$�<œ6Ô!Ùà�A„~Ø�"�:œÔÙØ�"�:œÔÙárE   c               ó$   € V ^8„  d   QhRRRRRR/# )r=   r„   r   Ú
new_schemer?   rA   )rB   s   "rC   rD   rD     s&   € ÷ Cñ C #ð C°3ð C¸3ñ CrE   c                óÜ   € \        V 4      pVw  r4rVrxp	VP                  p
V
'       g   YzrzV'       d#   \        \        V
4      p
RP	                  WJ.4      p
Vf   TpVf   Rp\        W:VRW‰34      # )zžGiven a URL that may or may not have a scheme, prepend the given scheme.
Does not replace a present scheme with the one provided as an argument.

:rtype: str
Ú@r�   )r   Únetlocr
   r   r°   r"   )r„   rÌ  rŒ  r›  ÚauthÚ_hostÚ_portr“   ÚqueryÚfragmentrÏ  s   &&         rC   Úprepend_scheme_if_neededrÕ    sw   € ô �s‹^€FØ8>Ñ5€F�% ¨Xð �]‰]€FßØ�çô ”c˜6Ó"ˆØ—‘˜4˜.Ó)ˆØ‚~ØˆØ‚|Øˆä�v t¨R°ÐAÓBÐBrE   c               ó    € V ^8„  d   QhRRRR/# )r=   r„   r   r?   ztuple[str, str]rA   )rB   s   "rC   rD   rD   .  s   € ÷ ñ ˜3ð  ?ñ rE   c                ó¦   € \        V 4      p \        VP                  4      \        VP                  4      3pV#   \        \
        3 d    Rp T# i ; i)zoGiven a url with authentication components, extract them into a tuple of
username,password.

:rtype: (str,str)
)r�   r�   )r!   r    ÚusernameÚpasswordr~   r>  )r„   rŒ  rÐ  s   &  rC   Úget_auth_from_urlrÚ  .  sU   € ô �c‹]€Fðä˜Ÿ™Ó(¬'°&·/±/Ó*BÐCˆð €Køô œIÐ&ô Ø‰à€Kðús   �*9 ¹AÁAc               ó    € V ^8„  d   QhRRRR/# )r=   r  útuple[str | bytes, str | bytes]r?   rÖ   rA   )rB   s   "rC   rD   rD   ?  s   € ÷ ,ñ ,Ð"Að ,Àdñ ,rE   c                ó>   € V w  r\        W^ 4       \        W^4       R# )z›Verifies that header parts don't contain leading whitespace
reserved characters, or return characters.

:param header: tuple, in the format (name, value).
N)Ú_validate_header_part)r  r¥   rÐ   s   &  rC   Úcheck_header_validityrß  ?  s   € ð �K€DÜ˜&¨Ô*Ü˜&¨Ö+rE   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r=   r  rÜ  Úheader_partzstr | bytesÚheader_validator_indexrR   r?   rÖ   rA   )rB   s   "rC   rD   rD   J  s0   € ÷ 
ñ 
Ø+ð
àð
ð  ð
ð 
ñ	
rE   c           
     ó:  € \        V\        4      '       d   \        V,          pMB\        V\        4      '       d   \        V,          pM\        R V: RV  R\        V4       24      hVP                  V4      '       g   V^ 8X  d   RMRp\        RV RV: 24      hR# )zHeader part (z) from z# must be of type str or bytes, not r¥   rÐ   zTInvalid leading whitespace, reserved character(s), or return character(s) in header z: N)rf   r   r   r   r   r'   ÚtyperZ   )r  rá  râ  Ú	validatorÚheader_kinds   &&&  rC   rÞ  rÞ  J  s«   € ô
 �+œs×#Ò#Ü*Ð+AÕB‰	Ü	�K¤×	'Ò	'ä+Ð,BÕC‰	äØ˜K™?¨'°&°ð :1Ü15°kÓ1BÐ0CðEó
ð 	
ð
 �?‰?˜;×'Ò'Ø 6¸!Ô ;‘fÀˆÜð&Ø&1 ]°"°[±OðEó
ð 	
ñ (rE   c               ó    € V ^8„  d   QhRRRR/# )r=   r„   r   r?   rA   )rB   s   "rC   rD   rD   b  s   € ÷ Añ A�sð A˜sñ ArE   c                ó„   € \        V 4      w  rr4rVV'       g   Y2r2VP                  R^4      R,          p\        WW4VR34      # )zK
Given a url remove the fragment and the authentication part.

:rtype: str
rÎ  r�   r¨   )r!   Úrsplitr"   )r„   r›  rÏ  r“   r  rÓ  Ú	_fragments   &      rC   Úurldefragauthrë  b  sG   € ô 6>¸c³]Ñ2€F�D %÷ Ø�à�]‰]˜3 Ó" 2Õ&€Fä�v t°U¸BÐ?Ó@Ð@rE   c               ó    € V ^8„  d   QhRRRR/# )r=   Úprepared_requestr.   r?   rÖ   rA   )rB   s   "rC   rD   rD   s  s   € ÷ Sñ S /ð S°dñ SrE   c                óì   € \        V P                  RR4      pVe6   \        V P                  \        4      '       d    V! V P                  4       R# \        R4      h  \
         d    \        R4      hi ; i)z^Move file pointer back to its recorded starting position
so it can be read again on redirect.
rs   Nz;An error occurred when rewinding request body for redirect.z+Unable to rewind request body for redirect.)r©   Úbodyrf   Ú_body_positionr   rT   r)   )rí  Ú	body_seeks   & rC   Úrewind_bodyrò  s  sz   € ô Ð(×-Ñ-¨v°tÓ<€IØÒ¤Ø×'Ñ'Ü÷"ò "ð	ÙÐ&×5Ñ5Ö6ô $Ð$QÓRÐRøô ô 	Ü'ØMóð ð	ús   ½A ÁA3)z.netrcrž   )FzBABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~rØ   )T)zpython-requests)…Ú__conditional_annotations__Ú__doc__Ú
__future__r   r)  Ú
contextlibr|   rv   rY   r\  rZ  Úsysr¶   rz   r±   Úcollectionsr   Úcollections.abcr   r   Útypingr   r   r   r	   r
   r   Úurllib3.utilr   r   r�   r   r   Ú_internal_utilsr   r   r   r   r-   r   rg   Úcompatr   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   rå   Úcookiesr%   Ú
exceptionsr&   r'   r(   r)   Ú
structuresr*   Úhttp.cookiejarr+   r,   Ú_tÚmodelsr.   r/   r0   r1   Ú__annotations__Úwherer2   r5   r6   r7   r°   rV   r9   Úplatformr`   ri   r‚   r    r«   rÁ   ÚcontextmanagerrÎ   rÔ   rÙ   rê   rï   ræ   rú   rþ   r	  r  r   r.  r5  r@  Ú	frozensetrA  rO  rU  rd  r^  rm  rr  rx  r‘  r•  r   r©  r¬  r±  r¸  rt   rÅ  rÆ  rÇ  rÊ  rÕ  rÚ  rß  rÞ  rë  rò  )ró  s   @rC   Ú<module>r	     s¨  øðôõ #ã Û Û 	Û 	Û 	Û Û Û 
Û Û Û Ý #ß /÷÷ ÷ 1å Ý $÷ó õ 4÷÷ ÷ õ õ :Ý (÷ó õ ,çÝ(Ý!åß:Ñ:à)€ˆUÓ )ð $Ÿkšk›mÐ ˜Ó +ð   G¨SÐ1€ˆuÓ 1áˆeƒn€Ùˆeƒn€ð "&§¡Ø‡H‚HˆW‘l°4Ô8Ð9JÕKÓLó"Ð ˜ó ð
 ‡<�<�7Ôõ$õL	/õõD3÷N1õh&õ#ðL ×Ñô	ó ð	õð: 
Ü -ó 
Ø -Ø	ô ó 
ð õõ@õ@÷Fõ2õ0õõ2%õ,õ2ð& 
ô'ó 
ð'ð 
ô%ó 
ð%õ	õ&ñT "ØMó€�ó õ
õ05õ,5õ5õõð0 ×Ñô1ó ð1õ,<÷~	õ÷4÷>#õõ"ðL 	�‰�gÓ€Ø	��€Ø	��€õõ@Cõ<õ",õ
õ0A÷"SrE   