Ë
    Eü´jâ�  ã                  óB  — U d Z 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ZddlZddlmZ ddlmZmZ ddlmZmZmZmZmZmZ ddlmZmZ dd	lmZ dd
lmZ ddl m!Z!m"Z"m#Z#m$Z$ ddl%m&Z' ddl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 ddl(m6Z7 ddl8m9Z9 ddl:m;Z;m<Z<m=Z=m>Z> ddl?m@Z@ erddlAmBZB ddlmCZC ddlm%ZD ddlEmFZFmGZGmHZH dZIdeJd<    ej–                  «       ZLdeJd<   dddœZMdeJd<    ed«      ZN ed «      ZOd!j¡                   ej¢                  d" ed#¬$«      d%   «      «      ZRdeJd&<   e
j¦                  d'k(  rd\d(„ZTd\d)„Z/	 	 	 	 d]d*„ZUd^d+„ZV	 d_	 	 	 	 	 d`d,„ZWdad-„ZXdbd.„ZYej´                  dcd/„«       Z[	 	 	 	 ddd0„Z\eded1„«       Z]e	 	 	 	 dfd2„«       Z]	 	 	 	 dgd3„Z]dhd4„Z^did5„Z_d_djd6„Z`dkd7„Zadld8„Zbdmd9„Zcdnd:„Zddod;„Ze	 	 	 	 	 	 dpd<„Zfe	 	 	 	 	 	 dqd=„«       Zge	 	 	 	 	 	 drd>„«       Zg	 	 	 	 	 	 dsd?„Zgdtd@„Zh eidA«      ZjdeJdB<   dudC„ZkdudD„ZldvdE„ZmdwdF„ZndxdG„ZodydH„Zpej´                  dzdI„«       Zqd{dJ„Zrd|d}dK„Zsd~dL„Zt	 d	 	 	 	 	 	 	 d€dM„Zud�d‚dN„ZvdƒdO„Zwd„dP„ZxdQjó                  dR«      ZzezdSz  Z{ezdTz  Z|d…dU„Z}d†dV„Z~d‡dW„ZdˆdX„Z€	 	 	 	 	 	 	 	 d‰dY„Z�dŠdZ„Z‚d‹d[„Zƒy)Œ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ÚResponse)z.netrcÚ_netrcr	   ÚNETRC_FILESr!   ÚDEFAULT_CA_BUNDLE_PATHéP   i»  )ÚhttpÚhttpsÚDEFAULT_PORTSÚ_KTÚ_VTz, z,\s*T)Úaccept_encodingzaccept-encodingÚDEFAULT_ACCEPT_ENCODINGÚwin32c                ó  — 	 dd l }	 |j                  |j                  d«      }t	        |j                  |d«      d   «      }|j                  |d«      d   }|r|sy|j                  d«      }t        d |«      }|D ]j  }|dk(  rd| vr y	|j                  dd
«      }|j                  dd«      }|j                  dd«      }t        j                  || t        j                  «      sŒj y	 y# t        $ r Y yw xY w# t        t        f$ r Y yw xY w)Nr   Fz;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)ÚhostrF   ÚinternetSettingsÚproxyEnableÚproxyOverrideÚtests         úL/root/workspace/ytshorts/venv/lib/python3.12/site-packages/requests/utils.pyÚproxy_bypass_registryrZ   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˜˜d¤B§D¡DÕ)Ùð	ð øôC ò 	Ùð	ûô œÐ$ò 	Ùð	ús#   ‚C( ‡AC7 Ã(	C4Ã3C4Ã7D	ÄD	c                óB   — t        «       rt        | «      S t        | «      S )zšReturn True, if the host should be bypassed.

        Checks proxy settings gathered from the environment, if specified,
        or the registry.
        )r   r   rZ   )rT   s    rY   r   r   ‰   s    € ô "Ô#Ü+¨DÓ1Ð1ä(¨Ó.Ð.ó    c                óF   — t        | t        «      r| j                  «       S | S )z/Returns an internal sequence dictionary update.)Ú
isinstanceÚ_SupportsItemsÚitems)Úds    rY   Údict_to_sequencerb   •   s   € ô
 �!”^Ô$Ø�w‰w‹yÐà€Hr\   c                óö  — d }d}t         s!t        | t        «      r| j                  d«      } t	        | d«      rt        | «      }n~t	        | d«      r| j
                  }net	        | d«      rY	 | j                  «       }t        j                  |«      j                  }d| j                  vrt        j                  dt        «       	 t	        | d«      rW	 | j#                  «       }t	        | d	«      r:|€8	 | j%                  dd
«       | j#                  «       }| j%                  |xs d«       |€d}t)        d||z
  «      S # t        j                  t         f$ r Y Œ‘w xY w# t&        $ r d}Y Œ?w xY w# t&        $ r |�|}Y ŒRw xY w)Nr   ú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   r^   r!   ÚencodeÚhasattrrf   rg   ÚosÚfstatÚst_sizeÚmodeÚwarningsÚwarnr(   ÚioÚUnsupportedOperationÚAttributeErrorri   rj   rL   Úmax)ÚoÚtotal_lengthÚcurrent_positionrg   s       rY   Ú	super_lenr{       sy  € Ø€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¨qÔ1ð ÐØˆäˆq�,Ð!1Ñ1Ó2Ð2øôe ×'Ñ'¬Ð8ò 	ñ ð		ûôX ò %Ø#$’Lð%ûô% ò 	0ð
 Ð'Ø#/Ð ùð	0ús6   Á*D8 ÃE( Ã.7E Ä8EÅEÅE%Å$E%Å(E8Å7E8c                ó`  — t        | t        «      r| j                  d«      } t        j                  j                  d«      }|�|f}nd„ t        D «       }	 ddlm}m} d}|D ]D  }t        j                  j                  |«      }t        j                  j                  |«      sŒB|} n |€yt        | «      }	|	j                  }
|
€y	  ||«      j                  |
«      }|r't        |«      r|d   rdnd}||   xs d|d	   xs dfS yy# |t         f$ r |r‚ Y yw xY w# t"        t$        f$ r Y yw xY w)
z;Returns the Requests tuple auth for a given url from netrc.rd   ÚNETRCNc              3  ó&   K  — | ]	  }d |› �–— Œ y­w)z~/N© )Ú.0Úfs     rY   ú	<genexpr>z!get_netrc_auth.<locals>.<genexpr>ó   s   è ø€ Ò9¨˜R ˜sœ8Ñ9ùs   ‚r   )ÚNetrcParseErrorÚnetrcr   Ú rk   )r^   r   Údecodern   ÚenvironÚgetr4   r„   rƒ   ÚpathÚ
expanduserÚexistsr#   ÚhostnameÚauthenticatorsÚanyrL   rG   rv   )ÚurlÚraise_errorsÚ
netrc_fileÚnetrc_locationsrƒ   r„   Ú
netrc_pathr�   ÚlocÚrirT   r3   Úlogin_is                rY   Úget_netrc_authr—   ç   s@  € ô
 �#”uÔØ�j‰j˜Ó!ˆä—‘—‘ Ó(€JØÐØ%˜-‰á9¬[Ô9ˆð#ß0àˆ
à ò 	ˆAÜ—'‘'×$Ñ$ QÓ'ˆCÜ�w‰w�~‰~˜cÕ"Ø �
Ùð		ð ÐØä�c‹]ˆØ�{‰{ˆàˆ<Øð
	Ù˜:Ó&×5Ñ5°dÓ;ˆFÙœ#˜fœ+à% ašy™!¨a�Ø˜w™Ò-¨2¨v°a©yª¸BÐ?Ð?ð &ˆvøð  ¤Ð)ò 	ñ Øñ ð	ûô œÐ(ò Ùðús=   ÁAD Â#D Â+D Ã>D ÄDÄD ÄDÄD ÄD-Ä,D-c                ó²   — t        | dd«      }|rHt        |t        t        f«      r1|d   dk7  r(|d   dk7  rt        j
                  j                  |«      S yyyy)z0Tries to guess the filename of the given object.ÚnameNr   ú<éÿÿÿÿú>)Úgetattrr^   r!   r   rn   r‰   Úbasename)Úobjr™   s     rY   Úguess_filenamer      sX   € ä�3˜ Ó%€DÙ”
˜4¤#¤u Ô.°4¸±7¸c²>ÀdÈ2ÁhÐRUÂoÜ�w‰w×Ñ Ó%Ð%ð GV°>Ð.€tr\   c                óF  — t         j                  j                  | «      r| S t         j                  j                  | «      \  }}|ryt         j                  j                  |«      sZt         j                  j                  |«      \  }}|sn5dj	                  ||g«      }|r t         j                  j                  |«      sŒZt        j                  |«      s| S t        j                  |«      }||j                  «       vr| S t         j                  j                  |j                  d«      d   «      d   }t        j                  |¬«      \  }}	 t        j                  ||j                  |«      «       t        j                  |«       |S # t        j                  |«       w xY w)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.
    ú/r›   )Úsuffix)rn   r‰   r‹   rN   ÚjoinÚzipfileÚ
is_zipfileÚZipFileÚnamelistÚsplitextÚtempfileÚmkstempÚwriteÚreadÚclose)r‰   ÚarchiveÚmemberÚprefixÚzip_filer£   ÚfdÚextracted_paths           rY   Úextract_zipped_pathsrµ   "  s;  € ô
 
‡w�w‡~�~�dÔàˆô —g‘g—m‘m DÓ)�O€GˆVÙ
œ"Ÿ'™'Ÿ.™.¨Ô1ÜŸ'™'Ÿ-™-¨Ó0‰ˆ�Ùð Ø—‘˜6 6Ð*Ó+ˆñ œ"Ÿ'™'Ÿ.™.¨Õ1ô ×Ñ˜gÔ&Øˆä�‰˜wÓ'€HØ�X×&Ñ&Ó(Ñ(Øˆô �W‰W×Ñ˜fŸl™l¨3Ó/°Ñ3Ó4°RÑ8€FÜ!×)Ñ)°Ô8Ñ€BˆðÜ
�‰��X—]‘] 6Ó*Ô+ä
�‰�ŒàÐøô 	�‰��ús   Å%F	 Æ	F c              #  óJ  K  — t        j                  t        j                  j	                  | «      ¬«      \  }}	 t        j
                  |d«      5 }|–— ddd«       t        j                  || «       y# 1 sw Y   Œ xY w# t        $ r t        j                  |«       ‚ w xY w­w)z-Write a file to the disk in an atomic fashion)ÚdirÚwbN)	rª   r«   rn   r‰   ÚdirnameÚfdopenrP   ÚBaseExceptionÚremove)ÚfilenameÚtmp_descriptorÚtmp_nameÚtmp_handlers       rY   Úatomic_openrÁ   H  s†   è ø€ ô  (×/Ñ/´B·G±G·O±OÀHÓ4MÔNÑ€N�HðÜ�Y‰Y�~ tÓ,ð 	°ØÒ÷	ä
�
‰
�8˜XÕ&÷	ð 	ûô ò Ü
�	‰	�(ÔØðüs4   ‚7B#ºB  ÁA4ÁB  Á3B#Á4A=Á9B  Â  B Â B#c                ót   — | €yt        | t        t        t        t        f«      rt        d«      ‚t        | «      S )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)r^   r!   r   ÚboolrJ   rM   r   ©Úvalues    rY   Úfrom_key_val_listrÇ   U  s6   € ð( €}Øä�%œ#œu¤d¬CÐ0Ô1ÜÐFÓGÐGä�uÓÐr\   c                 ó   — y ©Nr   rÅ   s    rY   Úto_key_val_listrÊ   r  s   € Ø*-r\   c                 ó   — y rÉ   r   rÅ   s    rY   rÊ   rÊ   t  s   € ð  r\   c                óÆ   — | €yt        | t        t        t        t        f«      rt        d«      ‚t        | t        «      rt        | j                  «       «      S t        | «      S )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Ã   )	r^   r!   r   rÄ   rJ   rM   r_   Úlistr`   rÅ   s    rY   rÊ   rÊ   x  sP   € ð& €}Øä�%œ#œu¤d¬CÐ0Ô1ÜÐFÓGÐGä�%œÔ(Ü�E—K‘K“MÓ"Ð"ä�‹;Ðr\   c                ó�   — g }t        | «      D ]5  }|dd |dd cxk(  rdk(  rn nt        |dd «      }|j                  |«       Œ7 |S )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
    Nr   r›   ú")Ú_parse_list_headerÚunquote_header_valueÚappend)rÆ   ÚresultÚitems      rY   Úparse_list_headerrÕ   ˜  sY   € ð. €FÜ" 5Ó)ò ˆØ��ˆ8�t˜B˜C�yÔ' CÕ'Ü'¨¨Q¨r¨
Ó3ˆDØ�‰�dÕðð €Mr\   c                ó¶   — i }t        | «      D ]H  }d|vrd||<   Œ|j                  dd«      \  }} | dd | dd cxk(  rdk(  rn nt        | dd «      } | ||<   ŒJ |S )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Ð   rN   rÑ   )rÆ   rÓ   rÔ   r™   s       rY   Úparse_dict_headerrØ   ¸  s}   € ð, %'€FÜ" 5Ó)ò ˆØ�d‰?ØˆF�4‰LØØ—j‘j  aÓ(‰ˆˆeØ��!ˆ9˜˜b˜c˜
Ô) cÕ)Ü(¨¨q°¨Ó5ˆEØˆˆtŠðð €Mr\   c                ó–   — | rF| d   | d   cxk(  rdk(  r5n | S | dd } |r| dd dk7  r"| j                  dd«      j                  d	d«      S | S )
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   r›   rÏ   r   Nrk   z\\ú\z\")rP   )rÆ   Úis_filenames     rY   rÑ   rÑ   Û  sd   € ñ ��q‘˜U 2™YÔ-¨#Ô-ð €Lð �a˜�ˆñ ˜e B Q˜i¨6Ò1Ø—=‘= ¨Ó.×6Ñ6°u¸cÓBÐBØ€Lr\   c                óX   — | D �ci c]  }|j                   |j                  “Œ }}|S c c}w )z€Returns a key/value dictionary from a CookieJar.

    :param cj: CookieJar object to extract cookies from.
    :rtype: dict
    )r™   rÆ   )ÚcjÚcookieÚcookie_dicts      rY   Údict_from_cookiejarrà   ô  s/   € ð <>Ö>°�6—;‘; §¡Ñ,Ð>€KÐ>ØÐùò ?s   …'c                ó   — t        || «      S )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     rY   Úadd_dict_to_cookiejarrâ   ÿ  s   € ô ˜{¨BÓ/Ð/r\   c                ó^  — t        j                  dt        «       t        j                  dt        j
                  ¬«      }t        j                  dt        j
                  ¬«      }t        j                  d«      }|j                  | «      |j                  | «      z   |j                  | «      z   S )zlReturns 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=["\']*(.+?)["\'>])rr   rs   ÚDeprecationWarningrQ   ÚcompilerS   Úfindall)ÚcontentÚ
charset_reÚ	pragma_reÚxml_res       rY   Úget_encodings_from_contentrì   
  s‘   € ô
 ‡M�Mð1ô 	ôô —‘Ð@ÌÏÉÔM€JÜ—
‘
ÐIÔQS×QUÑQUÔV€IÜ�Z‰ZÐ?Ó@€Fð 	×Ñ˜7Ó#Ø
×
Ñ
˜GÓ
$ñ	%à
�.‰.˜Ó
!ñ	"ðr\   c                óB  — | j                  d«      }|d   j                  «       |dd }}i }d}|D ]j  }|j                  «       }|sŒ|j                  d«      x}dk7  sŒ-|d| j                  |«      }||dz   d j                  |«      }	|	||j                  «       <   Œl ||fS )z¨Returns content type and parameters from given header.

    :param header: string
    :return: tuple containing content type and dictionary of
         parameters.
    rB   r   r   Nz"' r×   r›   )rN   ÚstripÚfindÚlower)
ÚheaderÚtokensÚcontent_typeÚparamsÚparams_dictÚstrip_charsÚparamÚidxÚkeyrÆ   s
             rY   Ú_parse_content_type_headerrú   #  sµ   € ð �\‰\˜#Ó€FØ! !™9Ÿ?™?Ó,¨f°Q°R¨j�&€LØ)+€KØ€Kàò -ˆØ—‘“ˆÚ˜UŸZ™Z¨›_Ð,�c°Ó3Ø˜˜�+×#Ñ# KÓ0ˆCØ˜# ™'˜)Ð$×*Ñ*¨;Ó7ˆEØ',ˆK˜Ÿ	™	›Ò$ð-ð ˜Ð$Ð$r\   c                óŒ   — | j                  d«      }|syt        |«      \  }}d|v r|d   j                  d«      S d|v ryd|v ryy)	z}Returns encodings from given HTTP Header Dict.

    :param headers: dictionary to extract encoding from.
    :rtype: str
    zcontent-typeNÚcharsetz'"Útextz
ISO-8859-1zapplication/jsonrd   )rˆ   rú   rî   )Úheadersró   rô   s      rY   Úget_encoding_from_headersrÿ   9  s`   € ð —;‘;˜~Ó.€LáØä5°lÓCÑ€L�&à�FÑØ�iÑ ×&Ñ& uÓ-Ð-à�ÑØà˜\Ñ)àð *r\   c              #  óü   K  — |j                   €| E d{  –—†  y t        j                  |j                   «      d¬«      }| D ]  }|j                  |«      }|sŒ|–— Œ |j                  dd¬«      }|r|–— yy7 Œe­w)zStream decodes an iterator.NrP   ©Úerrorsr\   T)Úfinal)ÚencodingÚcodecsÚgetincrementaldecoderr†   )ÚiteratorÚrÚdecoderÚchunkÚrvs        rY   Ústream_decode_response_unicoder  R  s„   è ø€ ð
 	‡z�zÐØ×ÐØà6Œf×*Ñ*¨1¯:©:Ó6¸iÔH€GØò ˆØ�^‰^˜EÓ"ˆÚØ‹Hðð 
�‰˜ 4ˆÓ	(€BÙ	Ø‹ð 
ð 	ús   ‚A<”A:•AA<Á"A<c                 ó   — y rÉ   r   ©ÚstringÚslice_lengths     rY   Úiter_slicesr  e  s   € ð $'r\   c                 ó   — y rÉ   r   r  s     rY   r  r  i  s   € ð "%r\   c              #  óŽ   K  — d}|�|dk  rt        | «      }|t        | «      k  r| |||z    –— ||z  }|t        | «      k  rŒyy­w)z Iterate over slices of a string.r   N)rf   )r  r  Úposs      rY   r  r  m  sY   è ø€ ð €CØÐ˜|¨qÒ0Ü˜6“{ˆØ
”�F“Ò
Ø�S˜3 Ñ-Ð.Ò.Øˆ|Ñˆð ”�F“Õ
ùs   ‚A AÁAc                ó`  — t        j                  dt        «       | j                  €yg }t	        | j
                  «      }|r	 t        | j                  |«      S 	 t        | j                  |xs dd¬«      S # t        $ r |j                  |«       Y Œ9w xY w# t        $ r | j                  cY S w xY w)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.)Nrd   rP   r  )
rr   rs   rå   rè   rÿ   rþ   r!   ÚUnicodeErrorrÒ   Ú	TypeError)r  Útried_encodingsr  s      rY   Úget_unicode_from_responser  y  s­   € ô ‡M�Mð1ô 	ôð 	‡y�yÐØà!#€Oô )¨¯©Ó3€Háð	-Ü�q—y‘y (Ó+Ð+ð
Ü�1—9‘9˜hÒ1¨'¸)ÔDÐDøô ò 	-Ø×"Ñ" 8Ö,ð	-ûô ò Ø�y‰yÒðús$   ÁA5 ÁB Á5BÂBÂB-Â,B-zBABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~ÚUNRESERVED_SETc                ó†  — | j                  d«      }t        dt        |«      «      D ]l  }||   dd }t        |«      dk(  rI|j                  «       r9	 t	        t        |d«      «      }|t        v r|||   dd z   ||<   ŒVd||   › �||<   Œbd||   › �||<   Œn d	j                  |«      S # t        $ r t        d|› d�«      ‚w xY w)
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
    ú%r   r   rk   é   z"Invalid percent-escape sequence: 'ú'Nr…   )
rN   Úrangerf   ÚisalnumÚchrrJ   rM   r*   r  r¤   )ÚuriÚpartsÚiÚhÚcs        rY   Úunquote_unreservedr'  ¨  sâ   € ð �I‰I�c‹N€EÜ�1”c˜%“jÓ!ò &ˆØ�!‰H�Q�qˆMˆÜˆq‹6�QŠ;˜1Ÿ9™9œ;ðLÜœ˜A˜r›
“O�ð ”NÑ"Ø˜u Q™x¨¨˜|Ñ+��a’à˜u Q™x˜j˜>��a’à˜5 ™8˜*�~ˆE�!ŠHð&ð �7‰7�5‹>Ðøô ò LÜ Ð#EÀaÀSÈÐ!JÓKÐKðLús   ÁB'Â'C c                óp   — d}d}	 t        t        | «      |¬«      S # t        $ r t        | |¬«      cY S w xY w)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    r'  r*   )r"  Úsafe_with_percentÚsafe_without_percents      rY   Úrequote_urir,  À  sJ   € ð /ÐØ0Ðð	5ô Ô'¨Ó,Ð3DÔEÐEøÜò 5ô �SÐ3Ô4Ò4ð	5ús   † œ5´5c           
     ór  — t        j                  dt        j                  | «      «      d   }|j	                  d«      \  }}t        j                  dt        j                  t        t        |«      «      «      «      d   }t        j                  dt        j                  |«      «      d   |z  }||z  ||z  k(  S )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   r¢   )ÚstructÚunpackÚsocketÚ	inet_atonrN   Údotted_netmaskrJ   )ÚipÚnetÚipaddrÚnetaddrÚbitsÚnetmaskÚnetworks          rY   Úaddress_in_networkr:  Ö  s˜   € ô �]‰]˜4¤×!1Ñ!1°"Ó!5Ó6°qÑ9€FØ—I‘I˜c“N�M€GˆTÜ�m‰m˜D¤&×"2Ñ"2´>Ä#ÀdÃ)Ó3LÓ"MÓNÈqÑQ€GÜ�m‰m˜D¤&×"2Ñ"2°7Ó";Ó<¸QÑ?À'ÑI€GØ�WÑ '¨GÑ"3Ñ4Ð4r\   c                óp   — ddd| z
  z  dz
  z  }t        j                  t        j                  d|«      «      S )z�Converts mask from /xx format to xxx.xxx.xxx.xxx

    Example: if mask is 24 function returns 255.255.255.0

    :rtype: str
    l   ÿÿ r   é    z>I)r0  Ú	inet_ntoar.  Úpack)Úmaskr7  s     rY   r2  r2  å  s7   € ð ˜˜b 4™i™¨1Ñ,Ñ,€DÜ×ÑœFŸK™K¨¨dÓ3Ó4Ð4r\   c                óN   — 	 t        j                  | «       y# t        $ r Y yw xY w)z
    :rtype: bool
    FT)r0  r1  rL   )Ú	string_ips    rY   Úis_ipv4_addressrB  ð  s.   € ðÜ×Ñ˜Ô#ð øô ò Ùðús   ‚ ˜	$£$c                ó  — | j                  d«      dk(  rR	 t        | j                  d«      d   «      }|dk  s|dkD  ry	 t	        j
                  | j                  d«      d   «       yy# t        $ r Y yw xY w# t        $ r Y yw xY w)zV
    Very simple check of the cidr format in no_proxy variable.

    :rtype: bool
    r¢   r   Fr<  r   T)ÚcountrJ   rN   rM   r0  r1  rL   )Ústring_networkr?  s     rY   Úis_valid_cidrrF  û  sœ   € ð ×Ñ˜CÓ  AÒ%ð	Ü�~×+Ñ+¨CÓ0°Ñ3Ó4ˆDð �!Š8�t˜b’yØð	Ü×Ñ˜^×1Ñ1°#Ó6°qÑ9Ô:ð
 ð øô ò 	Ùð	ûô ò 	Ùð	ús"   –A( ¿'A7 Á(	A4Á3A4Á7	BÂBc              #  ó<  K  — |du}d}|r2t         j                  j                  | «      }|t         j                  | <   	 d–— |r(|€t         j                  | = y|t         j                  | <   yy# |r(|€t         j                  | = w |t         j                  | <   w w xY w­w)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)rn   r‡   rˆ   )Úenv_namerÆ   Úvalue_changedÚ	old_values       rY   Úset_environrK    s’   è ø€ ð  Ð%€MØ €IÙÜ—J‘J—N‘N 8Ó,ˆ	Ø$Œ�
‰
�8Ñð1ÛáØÐ Ü—J‘J˜xÑ(à'0”—
‘
˜8Ò$ð	 ø‰=ØÐ Ü—J‘J˜xÑ(à'0”—
‘
˜8Ò$ð	 üs   ‚;B¾A- Á+BÁ-,BÂBc                ó�  — dd„}|}|€ |d«      }t        | «      }|j                  }|€y|rÉd„ |j                  dd«      j                  d«      D «       }t	        |«      r)|D ]#  }t        |«      rt        ||«      sŒ y||k(  sŒ# y nm|}|j                  r|d	|j                  › �z  }|D ]H  }	|	j                  d
«      }	||	k(  s||	k(  r yd
|	z   }	|j                  |	«      s|j                  |	«      sŒH y t        d|«      5  	 t        |«      }
ddd«       
ryy# t        t        j                  f$ r d}
Y Œ)w xY w# 1 sw Y   Œ.xY w)zL
    Returns whether we should bypass proxies or not.

    :rtype: bool
    c                óž   — t         j                  j                  | «      xs- t         j                  j                  | j                  «       «      S rÉ   )rn   r‡   rˆ   Úupper)rù   s    rY   Ú	get_proxyz(should_bypass_proxies.<locals>.get_proxy3  s-   € Ü�z‰z�~‰~˜cÓ"ÒA¤b§j¡j§n¡n°S·Y±Y³[Ó&AÐAr\   NÚno_proxyTc              3  ó&   K  — | ]	  }|sŒ|–— Œ y ­wrÉ   r   )r€   rT   s     rY   r‚   z(should_bypass_proxies.<locals>.<genexpr>E  s   è ø€ ÒX 4ÒSWœ$ÑXùs   ‚Šú r…   ú,ú:rC   F)rù   r!   Úreturnú
str | None)r#   rŒ   rP   rN   rB  rF  r:  ÚportÚlstripÚendswithrK  r   r  r0  Úgaierror)r�   rP  rO  Úno_proxy_argÚparsedrŒ   Úno_proxy_hostsÚproxy_ipÚhost_with_portrT   Úbypasss              rY   Úshould_bypass_proxiesra  *  sn  € óBð
 €LØÐÙ˜ZÓ(ˆÜ�c‹]€FØ�‰€HàÐàáñ Y¨8×+;Ñ+;¸CÀÓ+D×+JÑ+JÈ3Ó+OÔXˆä˜8Ô$Ø*ò  �Ü  Ô*Ü)¨(°HÕ=Ù#Ø Ó)ñ  ñ ð &ˆNØ�{Š{Ø A f§k¡k ]Ð"3Ñ3�à&ò  �Ø—{‘{ 3Ó'�Ø˜tÒ# ~¸Ò'=ÙØ˜T‘z�Ø×$Ñ$ TÔ*¨n×.EÑ.EÀdÕ.KÙð ô 
�Z Ó	.ñ ð	Ü! (Ó+ˆF÷ñ Øàøô œ6Ÿ?™?Ð+ò 	ØŠFð	ú÷ð ús*   ÄD<ÄDÄD9Ä6D<Ä8D9Ä9D<Ä<Ec                ó4   — t        | |¬«      ri S t        «       S )zA
    Return a dict of environment proxies.

    :rtype: dict
    ©rP  )ra  r   )r�   rP  s     rY   Úget_environ_proxiesrd  i  s   € ô ˜S¨8Õ4Øˆ	ä‹|Ðr\   c                ó.  — |xs i }t        | «      }|j                  €+|j                  |j                  |j                  d«      «      S |j                  dz   |j                  z   |j                  d|j                  z   dg}d}|D ]  }||v sŒ||   } |S  |S )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�   ÚproxiesÚurlpartsÚ
proxy_keysÚproxyÚ	proxy_keys         rY   Úselect_proxyrm  u  s¯   € ð Šm˜€GÜ˜‹}€HØ×ÑÐ Ø�{‰{˜8Ÿ?™?¨G¯K©K¸Ó,>Ó?Ð?ð 	�‰˜%Ñ (×"3Ñ"3Ñ3Ø�‰Ø�8×$Ñ$Ñ$Øð	€Jð €EØò ˆ	Ø˜ÒØ˜IÑ&ˆEØà€Lðð
 €Lr\   c                óT  — |�|ni }t        t        | j                  «      }t        |«      j                  }|j                  d«      }|j                  «       }|rOt        ||¬«      sBt        ||¬«      }|j                  ||j                  d«      «      }|r|j                  ||«       |S )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
    rP  rc  rf  )
r   r!   r�   r#   rg  rˆ   Úcopyra  rd  Ú
setdefault)	Úrequestrh  Ú	trust_envr�   rg  rP  Únew_proxiesÚenviron_proxiesrk  s	            rY   Úresolve_proxiesru  �  s—   € ð !Ð,‰g°"€GÜ
Œs�G—K‘KÓ
 €CÜ�c‹]×!Ñ!€FØ�{‰{˜:Ó&€HØ—,‘,“.€KáÔ.¨s¸XÕFÜ-¨c¸HÔEˆà×#Ñ# F¨O×,?Ñ,?ÀÓ,FÓGˆáØ×"Ñ" 6¨5Ô1ØÐr\   c                ó   — | › dt         › �S )zO
    Return a string representing the default user agent.

    :rtype: str
    r¢   r   )r™   s    rY   Údefault_user_agentrw  ®  s   € ð ˆV�1”[�MÐ"Ð"r\   c                 ó:   — t        t        «       t        dddœ«      S )z9
    :rtype: requests.structures.CaseInsensitiveDict
    z*/*z
keep-alive)z
User-AgentzAccept-EncodingÚAcceptÚ
Connection)r,   rw  r=   r   r\   rY   Údefault_headersr{  ·  s%   € ô ä,Ó.Ü6ØØ&ñ		
óð r\   c                óÄ  — g }d}| j                  |«      } | s|S t        j                  d| «      D ]Š  }	 |j                  dd«      \  }}d|j                  d«      i}|j                  d«      D ]:  }	 |j                  d«      \  }} | j                  |«      ||j                  |«      <   Œ< |j	                  |«       ŒŒ |S # t        $ r |d}}Y Œ…w xY w# t        $ r Y  Œ4w xY w)	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, *<rB   r   r…   r�   z<> '"r×   )rî   rQ   rN   rM   rÒ   )	rÆ   ÚlinksÚreplace_charsÚvalr�   rô   Úlinkr÷   rù   s	            rY   Úparse_header_linksr�  Å  sý   € ð #%€Eà€Mà�K‰K˜Ó&€EÙØˆä�x‰x˜ Ó&ò ˆð	"ØŸ)™) C¨Ó+‰KˆC�ð !& s§y¡y°Ó':Ð;ˆà—\‘\ #Ó&ò 	HˆEðØ"Ÿ[™[¨Ó-‘
��Uð .3¯[©[¸Ó-GˆD�—‘˜=Ó)Ò*ð	Hð 	�‰�TÕð!ð$ €Løô ò 	"Ø˜r�ŠCð	"ûô ò Úðús#   ´B?Á1CÂ?CÃCÃ	CÃCú Úasciirk   é   c                óŒ  — | dd }|t         j                  t         j                  fv ry|dd t         j                  k(  ry|dd t         j                  t         j
                  fv ry|j                  t        «      }|dk(  ry	|dk(  r |ddd…   t        k(  ry
|ddd…   t        k(  ry|dk(  r|dd t        k(  ry|dd t        k(  ryy)z
    :rtype: str
    Né   zutf-32r„  z	utf-8-sigrk   zutf-16r   rd   z	utf-16-ber   z	utf-16-lez	utf-32-bez	utf-32-le)
r  ÚBOM_UTF32_LEÚBOM_UTF32_BEÚBOM_UTF8ÚBOM_UTF16_LEÚBOM_UTF16_BErD  Ú_nullÚ_null2Ú_null3)ÚdataÚsampleÚ	nullcounts      rY   Úguess_json_utfr’  ð  sÕ   € ð �"�1ˆX€FØ”&×%Ñ%¤v×':Ñ':Ð;Ñ;ØØˆbˆq€z”V—_‘_Ò$ØØˆbˆq€z”f×)Ñ)¬6×+>Ñ+>Ð?Ñ?ØØ—‘œUÓ#€IØ�A‚~ØØ�A‚~Ø‘#�A�#‰;œ&Ò ØØ�!�$�Q�$‰<œ6Ò!Øà�A‚~Ø�"�1ˆ:œÒØØ�!�"ˆ:œÒØàr\   c                óÌ   — t        | «      }|\  }}}}}}}	|j                  }
|
s||
}}
|r#t        t        |
«      }
dj	                  ||
g«      }
|€|}|€d}t        ||
|d||	f«      S )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�   Ú
new_schemer\  rg  ÚauthÚ_hostÚ_portr‰   ÚqueryÚfragmentr•  s              rY   Úprepend_scheme_if_neededrœ    s‡   € ô �s‹^€FØ8>Ñ5€FˆD�%˜  e¨Xð �]‰]€FÙØ˜V�ˆáô ”c˜6Ó"ˆØ—‘˜4 ˜.Ó)ˆØ€~ØˆØ€|Øˆä�v˜v t¨R°¸ÐAÓBÐBr\   c                ó¢   — t        | «      }	 t        |j                  «      t        |j                  «      f}|S # t        t
        f$ r d}Y |S w xY w)z{Given a url with authentication components, extract them into a tuple of
    username,password.

    :rtype: (str,str)
    )r…   r…   )r#   r"   ÚusernameÚpasswordrv   r  )r�   r\  r—  s      rY   Úget_auth_from_urlr   .  sU   € ô �c‹]€Fðä˜Ÿ™Ó(¬'°&·/±/Ó*BÐCˆð €Køô œIÐ&ò Ø‰à€Kðús   �*9 ¹AÁAc                óB   — | \  }}t        | |d«       t        | |d«       y)z§Verifies that header parts don't contain leading whitespace
    reserved characters, or return characters.

    :param header: tuple, in the format (name, value).
    r   r   N)Ú_validate_header_part)rñ   r™   rÆ   s      rY   Úcheck_header_validityr£  ?  s%   € ð �K€Dˆ%Ü˜& $¨Ô*Ü˜& %¨Õ+r\   c           
     óü   — t        |t        «      r
t        |   }n7t        |t        «      r
t        |   }nt        d|›d| › dt        |«      › �«      ‚|j                  |«      s|dk(  rdnd}t        d|› d|›�«      ‚y )	NzHeader part (z) from z# must be of type str or bytes, not r   r™   rÆ   zTInvalid leading whitespace, reserved character(s), or return character(s) in header z: )r^   r!   r   r   r   r)   ÚtyperR   )rñ   Úheader_partÚheader_validator_indexÚ	validatorÚheader_kinds        rY   r¢  r¢  J  s¢   € ô
 �+œsÔ#Ü*Ð+AÑB‰	Ü	�K¤Ô	'ä+Ð,BÑC‰	äØ˜K˜?¨'°&°ð :1Ü15°kÓ1BÐ0CðEó
ð 	
ð
 �?‰?˜;Ô'Ø 6¸!Ò ;‘fÀˆÜð&Ø&1 ]°"°[°OðEó
ð 	
ð (r\   c                ó~   — t        | «      \  }}}}}}|s||}}|j                  dd«      d   }t        |||||df«      S )zW
    Given a url remove the fragment and the authentication part.

    :rtype: str
    r”  r   r›   r…   )r#   Úrsplitr$   )r�   rg  r•  r‰   rô   rš  Ú	_fragments          rY   Úurldefragauthr­  b  sU   € ô 6>¸c³]Ñ2€FˆF�D˜& %¨ñ Ø˜V�ˆà�]‰]˜3 Ó" 2Ñ&€Fä�v˜v t¨V°U¸BÐ?Ó@Ð@r\   c                óÖ   — t        | j                  dd«      }|�.t        | j                  t        «      r	  || j                  «       yt        d«      ‚# t
        $ r t        d«      ‚w xY w)zfMove file pointer back to its recorded starting position
    so it can be read again on redirect.
    rj   Nz;An error occurred when rewinding request body for redirect.z+Unable to rewind request body for redirect.)r�   Úbodyr^   Ú_body_positionr   rL   r+   )Úprepared_requestÚ	body_seeks     rY   Úrewind_bodyr³  s  su   € ô Ð(×-Ñ-¨v°tÓ<€IØÐ¤Ø×'Ñ'Üô"ð	ÙÐ&×5Ñ5Õ6ô $Ð$QÓRÐRøô ò 	Ü'ØMóð ð	ús   µA ÁA()rT   r!   rU  rÄ   )ra   z6_t.SupportsItems[Any, Any] | Iterable[tuple[Any, Any]]rU  zIterable[tuple[Any, Any]])rx   r   rU  rJ   )F)r�   z
_t.UriTyper�   rÄ   rU  ztuple[str, str] | None)rŸ   r   rU  rV  )r‰   r!   rU  r!   )r½   r!   rU  z%Generator[BufferedWriter, None, None])rÆ   z4Mapping[Any, Any] | Iterable[tuple[Any, Any]] | NonerU  zdict[Any, Any] | None)rÆ   ÚNonerU  r´  )rÆ   z6_t.SupportsItems[_KT, _VT] | Iterable[tuple[_KT, _VT]]rU  zlist[tuple[_KT, _VT]])rÆ   z=_t.SupportsItems[_KT, _VT] | Iterable[tuple[_KT, _VT]] | NonerU  zlist[tuple[_KT, _VT]] | None)rÆ   r!   rU  ú	list[str])rÆ   r!   rU  údict[str, str | None])rÆ   r!   rÛ   rÄ   rU  r!   )rÝ   r-   rU  r¶  )rÝ   r-   rß   údict[str, str]rU  r-   )rè   r!   rU  rµ  )rñ   r!   rU  ztuple[str, dict[str, Any]])rþ   úCaseInsensitiveDict[str]rU  rV  )r  zIterable[bytes]r  r2   rU  z"Generator[str | bytes, None, None])r  r   r  ú
int | NonerU  zGenerator[bytes, None, None])r  r!   r  r¹  rU  zGenerator[str, None, None])r  zbytes | strr  r¹  rU  z"Generator[bytes | str, None, None])r  r2   rU  zstr | bytes | None)r"  r!   rU  r!   )r3  r!   r4  r!   rU  rÄ   )r?  rJ   rU  r!   )rA  r!   rU  rÄ   )rE  r!   rU  rÄ   )rH  r!   rÆ   rV  rU  zGenerator[None, None, None])r�   r!   rP  rV  rU  rÄ   rÉ   )r�   r!   rP  rV  rU  r·  )r�   r!   rh  údict[str, str] | NonerU  rV  )T)rq  zRequest | PreparedRequestrh  rº  rr  rÄ   rU  r·  )zpython-requests)r™   r!   rU  r!   )rU  r¸  )rÆ   r!   rU  zlist[dict[str, str]])r�  r   rU  rV  )r�   r!   r–  r!   rU  r!   )r�   r!   rU  ztuple[str, str])rñ   útuple[str | bytes, str | bytes]rU  r´  )rñ   r»  r¦  zstr | bytesr§  rJ   rU  r´  )r�   r!   rU  r!   )r±  r0   rU  r´  )„Ú__doc__Ú
__future__r   r  Ú
contextlibrt   rn   rQ   r0  r.  Úsysrª   rr   r¥   Úcollectionsr   Úcollections.abcr   r   Útypingr   r   r	   r
   r   r   Úurllib3.utilr   r   r…   r   r   Ú_internal_utilsr   r   r   r   r/   r   r_   Ú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Úmodelsr0   r1   r2   r4   Ú__annotations__Úwherer5   r9   r:   r;   r¤   rN   r=   ÚplatformrZ   rb   r{   r—   r    rµ   ÚcontextmanagerrÁ   rÇ   rÊ   rÕ   rØ   rÑ   rà   râ   rì   rú   rÿ   r  r  r  Ú	frozensetr  r'  r,  r:  r2  rB  rF  rK  ra  rd  rm  ru  rw  r{  r�  rl   rŒ  r�  rŽ  r’  rœ  r   r£  r¢  r­  r³  r   r\   rY   ú<module>rÑ     s±  ðòõ #ã Û Û 	Û 	Û 	Û Û Û 
Û Û Û Ý #ß /÷÷ ÷ 1å Ý $÷ó õ 4÷÷ ÷ õ õ :Ý (÷ó õ ,áÝ(Ý!åß:Ñ:à)€ˆUÓ )ð *˜eŸk™k›mÐ ˜Ó +ð !#¨SÑ1€ˆuÓ 1áˆeƒn€Ùˆeƒn€ð "&§¡Ø€B‡H�HˆW‘l°4Ô8Ð9JÑKÓLó"Ð ˜ó ð
 ‡<�<�7Òó$óL	/ðØ=ðàóóD3ðP +0ð1Ø	ð1Ø#'ð1àó1óh&ó#ðL ×Ñò	ó ð	ðØ?ðàóð: 
Ú -ó 
Ø -Ø	ð ØAð àò ó 
ð ðØHðà!óó@ó@ôFó2ó0óó2%ó,ð2ØðØ"*ðà'óð& 
ð'Øð'Ø!+ð'à!ò'ó 
ð'ð 
ð%Øð%Ø)ð%àò%ó 
ð%ð	Øð	Ø'1ð	à'ó	ó&ñT "ØMó€�ó ó
ó05ó,5ó5óóð0 ×Ñò1ó ð1ó,<ô~	óð: ðØ&ðà"ðð ðð ó	ô>#óó"ðL 	�‰�gÓ€Ø	�‰€Ø	�‰€óó@Có<ó",ð
Ø+ð
àð
ð  ð
ð 
ó	
ó0Aô"Sr\   