Ë
    #´˜j@T  ã                   ó   — d Z ddlZddlZddlZg d¢Zdj
                  Zdj
                  Zdj
                  Z G d„ de	«      Z
ej                  ej                  z   d	z   Zed
z   Z e ed«      «       e eee«      «      z
  D � ci c]  } | d| z  “Œ
 c} Zej)                   ed«      d ed«      di«        ej*                  d ej,                  e«      z  «      j.                  Z ej*                  d«      Zd„ Zd„ Z ej*                  d«      j8                  Zd„ Zd„ Zg d¢Z g d¢Z!de e!fd„Z" G d„ de#«      Z$dZ%e%dz   Z& ej*                  de%z   d z   e&z   d!z   ejN                  ejP                  z  «      Z) G d"„ d#e#«      Z* G d$„ d%e*«      Z+yc c} w )&a%
  
Here's a sample session to show how to use this module.
At the moment, this is the only documentation.

The Basics
----------

Importing is easy...

   >>> from http import cookies

Most of the time you start by creating a cookie.

   >>> C = cookies.SimpleCookie()

Once you've created your Cookie, you can add values just as if it were
a dictionary.

   >>> C = cookies.SimpleCookie()
   >>> C["fig"] = "newton"
   >>> C["sugar"] = "wafer"
   >>> C.output()
   'Set-Cookie: fig=newton\r\nSet-Cookie: sugar=wafer'

Notice that the printable representation of a Cookie is the
appropriate format for a Set-Cookie: header.  This is the
default behavior.  You can change the header and printed
attributes by using the .output() function

   >>> C = cookies.SimpleCookie()
   >>> C["rocky"] = "road"
   >>> C["rocky"]["path"] = "/cookie"
   >>> print(C.output(header="Cookie:"))
   Cookie: rocky=road; Path=/cookie
   >>> print(C.output(attrs=[], header="Cookie:"))
   Cookie: rocky=road

The load() method of a Cookie extracts cookies from a string.  In a
CGI script, you would use this method to extract the cookies from the
HTTP_COOKIE environment variable.

   >>> C = cookies.SimpleCookie()
   >>> C.load("chips=ahoy; vienna=finger")
   >>> C.output()
   'Set-Cookie: chips=ahoy\r\nSet-Cookie: vienna=finger'

The load() method is darn-tootin smart about identifying cookies
within a string.  Escaped quotation marks, nested semicolons, and other
such trickeries do not confuse it.

   >>> C = cookies.SimpleCookie()
   >>> C.load('keebler="E=everybody; L=\\"Loves\\"; fudge=;";')
   >>> print(C)
   Set-Cookie: keebler="E=everybody; L=\"Loves\"; fudge=;"

Each element of the Cookie also supports all of the RFC 2109
Cookie attributes.  Here's an example which sets the Path
attribute.

   >>> C = cookies.SimpleCookie()
   >>> C["oreo"] = "doublestuff"
   >>> C["oreo"]["path"] = "/"
   >>> print(C)
   Set-Cookie: oreo=doublestuff; Path=/

Each dictionary element has a 'value' attribute, which gives you
back the value associated with the key.

   >>> C = cookies.SimpleCookie()
   >>> C["twix"] = "none for you"
   >>> C["twix"].value
   'none for you'

The SimpleCookie expects that all values should be standard strings.
Just to be sure, SimpleCookie invokes the str() builtin to convert
the value to a string, when the values are set dictionary-style.

   >>> C = cookies.SimpleCookie()
   >>> C["number"] = 7
   >>> C["string"] = "seven"
   >>> C["number"].value
   '7'
   >>> C["string"].value
   'seven'
   >>> C.output()
   'Set-Cookie: number=7\r\nSet-Cookie: string=seven'

Finis.
é    N)ÚCookieErrorÚ
BaseCookieÚSimpleCookieÚ z; Ú c                   ó   — e Zd Zy)r   N)Ú__name__Ú
__module__Ú__qualname__© ó    úlib/python3.12/http/cookies.pyr   r   ‘   s   „ Ør   r   z!#$%&'*+-.^_`|~:z ()/<=>?@[]{}é   z\%03oÚ"ú\"Ú\z\\z[%s]+z[\x00-\x1F\x7F]c                  ó&   — t        d„ | D «       «      S )zhDetects control characters within a value.
    Supports any type, as header values can be any type.
    c              3   óX   K  — | ]"  }t         j                  t        |«      «      –— Œ$ y ­w©N)Ú_control_character_reÚsearchÚstr)Ú.0Úvs     r   Ú	<genexpr>z)_has_control_character.<locals>.<genexpr>´   s!   è ø€ ÐA¹S¸Ô$×+Ñ+¬C°«F×3¹Sùs   ‚(*)Úany)Úvals    r   Ú_has_control_characterr   °   s   € ô ÑA¹SÓAÓAÐAr   c                 óV   — | �t        | «      r| S d| j                  t        «      z   dz   S )zãQuote a string for use in a cookie header.

    If the string does not need to be double-quoted, then just return the
    string.  Otherwise, surround the string in doublequotes and quote
    (with a \) special characters.
    r   )Ú_is_legal_keyÚ	translateÚ_Translator©r   s    r   Ú_quoter$   ·   s.   € ð €{”m CÔ(Øˆ
à�S—]‘]¤;Ó/Ñ/°#Ñ5Ð5r   z\\(?:([0-3][0-7][0-7])|(.))c                 óF   — | d   rt        t        | d   d«      «      S | d   S )Né   é   é   )ÚchrÚint)Úms    r   Ú_unquote_replacer,   Æ   s'   € Øˆ‚tÜ”3�q˜‘t˜Q“<Ó Ð à�‰tˆr   c                 ót   — | �t        | «      dk  r| S | d   dk7  s| d   dk7  r| S | dd } t        t        | «      S )Nr(   r   r   éÿÿÿÿr&   )ÚlenÚ_unquote_subr,   r#   s    r   Ú_unquoter1   Ì   sO   € ð €{”c˜#“h ’lØˆ
Ø
ˆ1�v�‚}˜˜B™ 3šØˆ
ð ˆa�ˆ)€Cô Ô(¨#Ó.Ð.r   )ÚMonÚTueÚWedÚThuÚFriÚSatÚSun)NÚJanÚFebÚMarÚAprÚMayÚJunÚJulÚAugÚSepÚOctÚNovÚDecc           	      ón   — ddl m}m }  |«       } ||| z   «      \	  }}}}	}
}}}}d||   |||   ||	|
|fz  S )Nr   )ÚgmtimeÚtimez#%s, %02d %3s %4d %02d:%02d:%02d GMT)rG   rF   )ÚfutureÚweekdaynameÚ	monthnamerF   rG   ÚnowÚyearÚmonthÚdayÚhhÚmmÚssÚwdÚyÚzs                  r   Ú_getdaterU   í   sW   € ß!Ù
‹&€CÙ-3°C¸&±LÓ-AÑ*€Dˆ%��b˜"˜b " a¨Ø0Ø˜‰O˜S )¨EÑ"2°D¸"¸bÀ"ÐEñFð Fr   c            
       ó  — e Zd ZdZdddddddd	d
dœ	ZddhZd„ Zed„ «       Zed„ «       Z	ed„ «       Z
d„ Zd!d„Zd„ Zej                  Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd"d„ZeZd„ Zd!d„Zd!d „Z eej<                  «      Zy)#ÚMorselaC  A class to hold ONE (key, value) pair.

    In a cookie, each such pair may have several attributes, so this class is
    used to keep the attributes associated with the appropriate key,value pair.
    This class also includes a coded_value attribute, which is used to hold
    the network representation of the value.
    ÚexpiresÚPathÚCommentÚDomainzMax-AgeÚSecureÚHttpOnlyÚVersionÚSameSite)	rX   ÚpathÚcommentÚdomainúmax-ageÚsecureÚhttponlyÚversionÚsamesiterd   re   c                 ó~   — d x| _         x| _        | _        | j                  D ]  }t        j                  | |d«       Œ y )Nr   )Ú_keyÚ_valueÚ_coded_valueÚ	_reservedÚdictÚ__setitem__)ÚselfÚkeys     r   Ú__init__zMorsel.__init__  s:   € à6:Ð:ˆŒ	Ð:�D”K $Ô"3ð —>”>ˆCÜ×Ñ˜T 3¨Õ+ñ "r   c                 ó   — | j                   S r   )ri   ©ro   s    r   rp   z
Morsel.key   s   € à�y‰yÐr   c                 ó   — | j                   S r   )rj   rs   s    r   ÚvaluezMorsel.value$  s   € à�{‰{Ðr   c                 ó   — | j                   S r   )rk   rs   s    r   Úcoded_valuezMorsel.coded_value(  s   € à× Ñ Ð r   c                 óÄ   — |j                  «       }|| j                  vrt        d|›�«      ‚t        ||«      rt        d|›d|›�«      ‚t        j                  | ||«       y ©NzInvalid attribute ú.Control characters are not allowed in cookies r   )Úlowerrl   r   r   rm   rn   )ro   ÚKÚVs      r   rn   zMorsel.__setitem__,  s_   € Ø�G‰G‹IˆØ�D—N‘NÑ"Ý¹Ð;Ó<Ð<Ü! ! QÔ'ÜÐ NÈqÈeÐSTÐUVÐTYÐZÓ[Ð[Ü×Ñ˜˜q !Õ$r   Nc                 óÂ   — |j                  «       }|| j                  vrt        d|›�«      ‚t        ||«      rt        d|›d|›�«      ‚t        j                  | ||«      S ry   )r{   rl   r   r   rm   Ú
setdefault)ro   rp   r   s      r   r   zMorsel.setdefault4  sV   € Ø�i‰i‹kˆØ�d—n‘nÑ$Ý¹Ð=Ó>Ð>Ü! # sÔ+ÝÒWZÑ\_ÐaÓbÐbÜ�‰˜t S¨#Ó.Ð.r   c                 óü   — t        |t        «      st        S t        j	                  | |«      xrO | j
                  |j
                  k(  xr4 | j                  |j                  k(  xr | j                  |j                  k(  S r   )Ú
isinstancerW   ÚNotImplementedrm   Ú__eq__rj   ri   rk   ©ro   Úmorsels     r   rƒ   zMorsel.__eq__<  sj   € Ü˜&¤&Ô)Ü!Ð!Ü—‘˜D &Ó)ò 9Ø—‘˜vŸ}™}Ñ,ò9à—	‘	˜VŸ[™[Ñ(ò9ð ×!Ñ! V×%8Ñ%8Ñ8ð	:r   c                 ó�   — t        «       }t        j                  || «       |j                  j                  | j                  «       |S r   )rW   rm   ÚupdateÚ__dict__r„   s     r   ÚcopyzMorsel.copyF  s2   € Ü“ˆÜ�‰�F˜DÔ!Ø�‰×Ñ˜tŸ}™}Ô-Øˆr   c                 ó  — i }t        |«      j                  «       D ]S  \  }}|j                  «       }|| j                  vrt	        d|›�«      ‚t        ||«      rt	        d|›d|›�«      ‚|||<   ŒU t         j                  | |«       y ry   )rm   Úitemsr{   rl   r   r   r‡   )ro   ÚvaluesÚdatarp   r   s        r   r‡   zMorsel.updateL  sŒ   € ØˆÜ˜V›×*Ñ*Ö,‰HˆC�Ø—)‘)“+ˆCØ˜$Ÿ.™.Ñ(Ý!¹CÐ"AÓBÐBÜ% c¨3Ô/Ü!ð #-Ø-0¨G°1°S°Gð#=ó >ð >àˆD�ŠIð -ô 	�‰�D˜$Õr   c                 ó(   — | j                  |«       | S r   )r‡   )ro   rŒ   s     r   Ú__ior__zMorsel.__ior__X  s   € Ø�‰�FÔØˆr   c                 ó:   — |j                  «       | j                  v S r   )r{   rl   )ro   r|   s     r   ÚisReservedKeyzMorsel.isReservedKey\  s   € Ø�w‰w‹y˜DŸN™NÐ*Ð*r   c                 óö   — |j                  «       | j                  v rt        d|›�«      ‚t        |«      st        d|›�«      ‚t	        |||«      rt        d|›d|›d|›�«      ‚|| _        || _        || _        y )NzAttempt to set a reserved key zIllegal key rz   r   )r{   rl   r   r    r   ri   rj   rk   )ro   rp   r   Ú	coded_vals       r   Úsetz
Morsel.set_  sw   € Ø�9‰9‹;˜$Ÿ.™.Ñ(ÝÁCÐIÓJÐJÜ˜SÔ!Ý±#Ð7Ó8Ð8Ü! # s¨IÔ6ÝÚLOÒQTÑV_Ðaócð cð ˆŒ	ØˆŒØ%ˆÕr   c                 óJ   — | j                   | j                  | j                  dœS )N)rp   ru   rw   )ri   rj   rk   rs   s    r   Ú__getstate__zMorsel.__getstate__m  s#   € à—9‘9Ø—[‘[Ø×,Ñ,ñ
ð 	
r   c                 óŽ   — |d   }|d   }|d   }t        |||«      rt        d|›d|›d|›�«      ‚|| _        || _        || _        y )Nrp   ru   rw   rz   r   )r   r   ri   rj   rk   )ro   Ústaterp   ru   rw   s        r   Ú__setstate__zMorsel.__setstate__t  si   € Ø�E‰lˆØ�g‘ˆØ˜MÑ*ˆÜ! # u¨kÔ:ÜÐNØ!$  q¨¨	°°;°/ðCó Dð DàˆŒ	ØˆŒØ'ˆÕr   c                 ó.   — |›d| j                  |«      ›�S )Nr   )ÚOutputString)ro   ÚattrsÚheaders      r   ÚoutputzMorsel.output  s   € Ú  $×"3Ñ"3°EÔ":Ð;Ð;r   c                 óX   — d| j                   j                  ›d| j                  «       ›d�S )NÚ<ú: Ú>)Ú	__class__r	   r›   rs   s    r   Ú__repr__zMorsel.__repr__„  s    � Ø!Ÿ^™^×4Ó4°d×6GÑ6GÕ6IÐJÐJr   c                 óz   — | j                  |«      }t        |«      rt        d«      ‚d|j                  dd«      z  S )Nú-Control characters are not allowed in cookiesz—
        <script type="text/javascript">
        <!-- begin hiding
        document.cookie = "%s";
        // end hiding -->
        </script>
        r   r   )r›   r   r   Úreplace)ro   rœ   Úoutput_strings      r   Ú	js_outputzMorsel.js_output‡  sG   € à×)Ñ)¨%Ó0ˆÜ! -Ô0ÜÐMÓNÐNðð ×$Ñ$ S¨%Ó0ñ2ð 	2r   c                 óÆ  — g }|j                   } || j                  ›d| j                  ›�«       |€| j                  }t	        | j                  «       «      }|D ]ü  \  }}|dk(  rŒ||vrŒ|dk(  r4t        |t        «      r$ || j                  |   ›dt        |«      ›�«       ŒJ|dk(  r+t        |t        «      r |d| j                  |   |fz  «       Œz|dk(  r4t        |t        «      r$ || j                  |   ›dt        |«      ›�«       Œ³|| j                  v r"|sŒÄ |t        | j                  |   «      «       Œã || j                  |   ›d|›�«       Œþ t        |«      S )NÚ=r   rX   rc   z%s=%dra   )Úappendrp   rw   rl   Úsortedr‹   r�   r*   rU   r   r$   Ú_flagsÚ_semispacejoin)ro   rœ   Úresultr¬   r‹   rp   ru   s          r   r›   zMorsel.OutputString”  s8  € ð ˆØ—‘ˆñ 	˜$Ÿ(›( D×$4Ò$4Ð5Ô6ð ˆ=Ø—N‘NˆEÜ�t—z‘z“|Ó$ˆÛ‰JˆC�Ø˜Š{ØØ˜%ÑØØ�iÒ¤J¨u´cÔ$:Ù $§.¡.°Ó"5´xÀ´ÐGÕHØ˜	Ò!¤j°¼Ô&<Ù�w $§.¡.°Ñ"5°uÐ!=Ñ=Õ>Ø˜	Ò!¤j°¼Ô&<Ù $§.¡.°Ó"5´v¸e´}ÐEÕFØ˜Ÿ™Ñ#ÚÙœ3˜tŸ~™~¨cÑ2Ó3Õ4á $§.¡.°Ó"5±uÐ=Õ>ð  ô$ ˜fÓ%Ð%r   r   )NúSet-Cookie:) r	   r
   r   Ú__doc__rl   r®   rq   Úpropertyrp   ru   rw   rn   r   rƒ   ÚobjectÚ__ne__r‰   r‡   r�   r‘   r”   r–   r™   rž   Ú__str__r¤   r©   r›   ÚclassmethodÚtypesÚGenericAliasÚ__class_getitem__r   r   r   rW   rW   õ   så   „ ñð* ØØØØØØØØñ
€Ið ˜
Ð#€Fò,ð ñó ðð ñó ðð ñ!ó ð!ò%ó/ò:ð �]‰]€Fòò
 òò+ò&ò
ò	(ó<ð €GòKó2ó&ñB $ E×$6Ñ$6Ó7Ñr   rW   z,\w\d!#%&'~_`><@,:/\$\*\+\-\.\^\|\)\(\?\}\{\=z\[\]zŒ
    \s*                            # Optional whitespace at start of cookie
    (?P<key>                       # Start of group 'key'
    [ax  ]+?   # Any word of at least one letter
    )                              # End of group 'key'
    (                              # Optional group: there may not be a value.
    \s*=\s*                          # Equal Sign
    (?P<val>                         # Start of group 'val'
    "(?:[^\\"]|\\.)*"                  # Any double-quoted string
    |                                  # or
    # Special case for "expires" attr
    (\w{3,6}day|\w{3}),\s              # Day of the week or abbreviated day
    [\w\d\s-]{9,11}\s[\d:]{8}\sGMT     # Date and time in specific format
    |                                  # or
    [a-  ]*      # Any word or empty string
    )                                # End of group 'val'
    )?                             # End of optional value group
    \s*                            # Any number of spaces.
    (\s+|;|$)                      # Ending either at space, semicolon, or EOS.
    c                   óZ   — e Zd ZdZd„ Zd„ Zdd„Zd„ Zd„ Zdd„Z	e	Z
d	„ Zdd
„Zd„ Zefd„Zy)r   z'A container class for a set of Morsels.c                 ó
   — ||fS )a
  real_value, coded_value = value_decode(STRING)
        Called prior to setting a cookie's value from the network
        representation.  The VALUE is the value read from HTTP
        header.
        Override this function to modify the behavior of cookies.
        r   ©ro   r   s     r   Úvalue_decodezBaseCookie.value_decodeß  s   € ð �Cˆxˆr   c                 ó    — t        |«      }||fS )zýreal_value, coded_value = value_encode(VALUE)
        Called prior to setting a cookie's value from the dictionary
        representation.  The VALUE is the value being assigned.
        Override this function to modify the behavior of cookies.
        r#   ©ro   r   Ústrvals      r   Úvalue_encodezBaseCookie.value_encodeè  s   € ô �S“ˆØ�vˆ~Ðr   Nc                 ó,   — |r| j                  |«       y y r   )Úload)ro   Úinputs     r   rq   zBaseCookie.__init__ñ  s   € ÙØ�I‰I�eÕð r   c                 óŒ   — | j                  |t        «       «      }|j                  |||«       t        j	                  | ||«       y)z+Private method for setting a cookie's valueN)ÚgetrW   r”   rm   rn   )ro   rp   Ú
real_valuerw   ÚMs        r   Ú__setzBaseCookie.__setõ  s6   € à�H‰H�Sœ&›(Ó#ˆØ	�‰ˆc�:˜{Ô+Ü×Ñ˜˜s AÕ&r   c                 ó¢   — t        |t        «      rt        j                  | ||«       y| j	                  |«      \  }}| j                  |||«       y)zDictionary style assignment.N)r�   rW   rm   rn   rÂ   Ú_BaseCookie__set)ro   rp   ru   ÚrvalÚcvals        r   rn   zBaseCookie.__setitem__û  sB   € ä�eœVÔ$ä×Ñ˜T 3¨Õ.à×*Ñ*¨5Ó1‰JˆD�$Ø�J‰J�s˜D $Õ'r   c                 óà   — g }t        | j                  «       «      }|D ]>  \  }}|j                  ||«      }t        |«      rt	        d«      ‚|j                  |«       Œ@ |j                  |«      S )z"Return a string suitable for HTTP.r¦   )r­   r‹   rž   r   r   r¬   Újoin)	ro   rœ   r�   Úsepr°   r‹   rp   ru   Úvalue_outputs	            r   rž   zBaseCookie.output  sf   € àˆÜ�t—z‘z“|Ó$ˆÛ‰JˆC�Ø Ÿ<™<¨¨vÓ6ˆLÜ% lÔ3Ü!Ð"QÓRÐRØ�M‰M˜,Õ'ð	  ð
 �x‰x˜ÓÐr   c                 óê   — g }t        | j                  «       «      }|D ].  \  }}|j                  |›dt        |j                  «      ›�«       Œ0 d| j
                  j                  ›dt        |«      ›d�S )Nr«   r    r¡   r¢   )r­   r‹   r¬   Úreprru   r£   r	   Ú
_spacejoin)ro   Úlr‹   rp   ru   s        r   r¤   zBaseCookie.__repr__  sX   € ØˆÜ�t—z‘z“|Ó$ˆÛ‰JˆC�Ø�H‰H¢¤T¨%¯+©+Ô%6Ð7Õ8ñ  à!Ÿ^™^×4Ó4´jÀµmÐDÐDr   c                 ó¢   — g }t        | j                  «       «      }|D ]%  \  }}|j                  |j                  |«      «       Œ' t	        |«      S )z(Return a string suitable for JavaScript.)r­   r‹   r¬   r©   Ú	_nulljoin)ro   rœ   r°   r‹   rp   ru   s         r   r©   zBaseCookie.js_output  sE   € àˆÜ�t—z‘z“|Ó$ˆÛ‰JˆC�Ø�M‰M˜%Ÿ/™/¨%Ó0Õ1ð  ä˜Ó Ð r   c                 ó‚   — t        |t        «      r| j                  |«       y|j                  «       D ]
  \  }}|| |<   Œ y)zÝLoad cookies from a string (presumably HTTP_COOKIE) or
        from a dictionary.  Loading cookies from a dictionary 'd'
        is equivalent to calling:
            map(Cookie.__setitem__, d.keys(), d.values())
        N)r�   r   Ú_BaseCookie__parse_stringr‹   )ro   Úrawdatarp   ru   s       r   rÄ   zBaseCookie.load   sC   € ô �gœsÔ#Ø×Ñ Ô(ð
 	ð &Ÿm™mžo‘
��UØ!��S’	ð .àr   c                 ó  — d}t        |«      }g }d}d}d}d|cxk  r|k  �r!n �n|j                  ||«      }	|	s�n|	j                  d«      |	j                  d«      }}
|	j                  d«      }|
d   dk(  r|sŒd|j	                  ||
dd  |f«       n¢|
j                  «       t        j                  v rY|sy |€6|
j                  «       t        j                  v r|j	                  ||
df«       nHy |j	                  ||
t        |«      f«       n)|�&|j	                  ||
| j                  |«      f«       d}ny d|cxk  r|k  r�Œn d }|D ]9  \  }}
}||k(  r
|€J ‚|||
<   Œ||k(  sJ ‚|\  }}| j                  |
||«       | |
   }Œ; y )	Nr   Fr&   r(   rp   r   Ú$T)r/   ÚmatchÚgroupÚendr¬   r{   rW   rl   r®   r1   r¾   rÌ   )ro   r   ÚpattÚiÚnÚparsed_itemsÚmorsel_seenÚTYPE_ATTRIBUTEÚTYPE_KEYVALUErÞ   rp   ru   rÉ   ÚtprÍ   rÎ   s                   r   Ú__parse_stringzBaseCookie.__parse_string.  s¢  € ØˆÜ�‹HˆØˆØˆàˆØˆð
 �1Œj�q�jà—J‘J˜s AÓ&ˆEÙáàŸ™ UÓ+¨U¯[©[¸Ó-?�ˆCØ—	‘	˜!“ˆAà�1‰v˜Š}Ù"ð Ø×#Ñ# ^°S¸¸°W¸eÐ$DÕEØ—‘“¤× 0Ñ 0Ñ0Ù"àØ�=Ø—y‘y“{¤f§m¡mÑ3Ø$×+Ñ+¨^¸SÀ$Ð,GÕHð à ×'Ñ'¨¸¼hÀu»oÐ(NÕOØÐ"Ø×#Ñ# ]°C¸×9JÑ9JÈ5Ó9QÐ$RÔSØ"‘ð ðE �1Œj�qŽjðJ ˆÛ*‰NˆB��UØ�^Ò#Ø�}Ð$�}Ø��#’à˜]Ò*Ð*Ð*Ø"‘
��dØ—
‘
˜3  dÔ+Ø˜‘I‘ñ +r   r   )Nr±   z
)r	   r
   r   r²   r¾   rÂ   rq   rÌ   rn   rž   r¶   r¤   r©   rÄ   Ú_CookiePatternrÚ   r   r   r   r   r   Ü  sD   „ Ù1òòóò'ò(ó	 ð €GòEó!òð (6ô :r   r   c                   ó   — e Zd ZdZd„ Zd„ Zy)r   zþ
    SimpleCookie supports strings as cookie values.  When setting
    the value using the dictionary assignment notation, SimpleCookie
    calls the builtin str() to convert the value to a string.  Values
    received from HTTP are kept as strings.
    c                 ó   — t        |«      |fS r   )r1   r½   s     r   r¾   zSimpleCookie.value_decoder  s   € Ü˜‹}˜cÐ!Ð!r   c                 ó2   — t        |«      }|t        |«      fS r   )r   r$   rÀ   s      r   rÂ   zSimpleCookie.value_encodeu  s   € Ü�S“ˆØ”v˜f“~Ð%Ð%r   N)r	   r
   r   r²   r¾   rÂ   r   r   r   r   r   k  s   „ ñò"ó&r   r   ),r²   ÚreÚstringr¸   Ú__all__rÐ   rØ   r¯   rÕ   Ú	Exceptionr   Úascii_lettersÚdigitsÚ_LegalCharsÚ_UnescapedCharsr”   ÚrangeÚmapÚordr"   r‡   ÚcompileÚescapeÚ	fullmatchr    r   r   r$   Úsubr0   r,   r1   Ú_weekdaynameÚ
_monthnamerU   rm   rW   Ú_LegalKeyCharsÚ_LegalValueCharsÚASCIIÚVERBOSErê   r   r   )rã   s   0r   Ú<module>r     sê  ðñNXóz 
Û Û â
7€à�G‰G€	Ø—‘€Ø�X‰X€
ô
	�)ô 	ð" ×"Ñ" V§]¡]Ñ2Ð5GÑG€Ø Ñ/€ñ ™E #›J›©#©c°#°Ó.GÓ*HÒHóJÙH�1ð �(˜Q‘,‰ØHñJ€à × Ñ ÙˆƒHˆeÙˆƒIˆvðô ð
 �—
‘
˜7 Y R§Y¡Y¨{Ó%;Ñ;Ó<×FÑF€Ø"˜Ÿ
™
Ð#5Ó6Ð òBò
6ð ˆr�z‰zÐ8Ó9×=Ñ=€òò/ò6 A€ò8€
ð  <¸:ó Fô@8ˆTô @8ðX B€Ø! GÑ+Ð Ø�—‘ð 	ð ñð	ñ	ð ñðñð& 
�‰�B—J‘JÑ	ó' €ô2L�ô Lô^&�:õ &ùòMJs   ÂF