B 3u;=! @spddlZddlZdddgZdjZdjZdjZGdddeZej ej d Z e d Z d d e ed e eee DZeeddeddiedee jZddZedZedZddZdddddddgZdd d!d"d#d$d%d&d'd(d)d*d+g Zdeefd,d-ZGd.d/d/eZd0Z e d1Z!ed2e d3e!d4ej"ej#BZ$Gd5ddeZ%Gd6dde%Z&dS)7N CookieError BaseCookie SimpleCookiez;  c@s eZdZdS)rN)__name__ __module__ __qualname__r r //opt/alt/python37/lib/python3.7/http/cookies.pyrsz!#$%&'*+-.^_`|~:z ()/<=>?@[]{}cCsi|]}d||qS)z\%03or ).0nr r r sr"z\"\z\\z[%s]+cCs*|dkst|r|Sd|tdSdS)Nr) _is_legal_key translate _Translator)strr r r _quotesrz\\[0-3][0-7][0-7]z[\\].cCsP|dkst|dkr|S|ddks0|ddkr4|S|dd}d}t|}g}xd|krh|krFnnt||}t||}|s|s|||dPd}}|r|d}|r|d}|r|r||kr|||||||d|d}qR|||||tt||d|dd|d}qRWt|S)Nrr) len _OctalPattsearch _QuotePattappendstartchrint _nulljoin)rir ZresZo_matchZq_matchjkr r r _unquotes6      $ r(ZMonZTueZWedZThuZFriZSatZSunZJanZFebZMarZAprZMayZJunZJulZAugZSepZOctZNovZDecc CsRddlm}m}|}|||\ }}}} } } } } }d|| ||||| | | fS)Nr)gmtimetimez#%s, %02d %3s %4d %02d:%02d:%02d GMT)r*r))ZfutureZ weekdaynameZ monthnamer)r*ZnowZyearZmonthZdayZhhZmmssZwdyzr r r _getdates r.c @seZdZddddddddd Zd d hZd d ZeddZeddZeddZ ddZ d0ddZ ddZ e jZddZddZdd Zd!d"Zd#d$Zd%d&Zd1d(d)ZeZd*d+Zd2d,d-Zd3d.d/ZdS)4MorselexpiresZPathCommentZDomainzMax-AgeZSecureZHttpOnlyZVersion)r0pathcommentdomainzmax-agesecurehttponlyversionr5r6cCs4d|_|_|_x|jD]}t||dqWdS)Nr)_key_value _coded_value _reserveddict __setitem__)selfkeyr r r __init__ s zMorsel.__init__cCs|jS)N)r8)r>r r r r?(sz Morsel.keycCs|jS)N)r9)r>r r r value,sz Morsel.valuecCs|jS)N)r:)r>r r r coded_value0szMorsel.coded_valuecCs2|}||jkr td|ft|||dS)NzInvalid attribute %r)lowerr;rr<r=)r>KVr r r r=4s zMorsel.__setitem__NcCs.|}||jkr td|ft|||S)NzInvalid attribute %r)rCr;rr< setdefault)r>r?valr r r rF:s zMorsel.setdefaultcCs>t|tstSt||o<|j|jko<|j|jko<|j|jkS)N) isinstancer/NotImplementedr<__eq__r9r8r:)r>morselr r r rJ@s     z Morsel.__eq__cCs$t}t|||j|j|S)N)r/r<update__dict__)r>rKr r r copyJs z Morsel.copycCsVi}x@t|D]0\}}|}||jkr:td|f|||<qWt||dS)NzInvalid attribute %r)r<itemsrCr;rrL)r>valuesdatar?rGr r r rLPs  z Morsel.updatecCs||jkS)N)rCr;)r>rDr r r isReservedKeyYszMorsel.isReservedKeycCsH||jkrtd|ft|s2td|f||_||_||_dS)Nz Attempt to set a reserved key %rzIllegal key %r)rCr;rrr8r9r:)r>r?rGZ coded_valr r r set\sz Morsel.setcCs|j|j|jdS)N)r?rArB)r8r9r:)r>r r r __getstate__gszMorsel.__getstate__cCs"|d|_|d|_|d|_dS)Nr?rArB)r8r9r:)r>stater r r __setstate__ns  zMorsel.__setstate__ Set-Cookie:cCsd|||fS)Nz%s %s) OutputString)r>attrsheaderr r r outputssz Morsel.outputcCsd|jj|fS)Nz<%s: %s>) __class__rrX)r>r r r __repr__xszMorsel.__repr__cCsd||ddS)Nz rz\")rXreplace)r>rYr r r js_output{szMorsel.js_outputcCs(g}|j}|d|j|jf|dkr,|j}t|}x|D]\}}|dkrPq>||krZq>|dkrt|tr|d|j|t|fq>|dkrt|tr|d|j||fq>|dkrt|t r|d|j|t |fq>||j kr|r|t |j|q>|d|j||fq>Wt |S)Nz%s=%srr0zmax-agez%s=%dr3) r r?rBr;sortedrOrHr#r.rr_flags_semispacejoin)r>rYresultr rOr?rAr r r rXs,  zMorsel.OutputString)N)NrW)N)N)rrr r;rar@propertyr?rArBr=rFrJobject__ne__rNrLrRrSrTrVr[__str__r]r_rXr r r r r/s8        r/z,\w\d!#%&'~_`><@,:/\$\*\+\-\.\^\|\)\(\?\}\{\=z\[\]z \s* # Optional whitespace at start of cookie (?P # Start of group 'key' [a ]+? # Any word of at least one letter ) # End of group 'key' ( # Optional group: there may not be a value. \s*=\s* # Equal Sign (?P # Start of group 'val' "(?:[^\\"]|\\.)*" # Any doublequoted string | # or \w{3},\s[\w\d\s-]{9,11}\s[\d:]{8}\sGMT # Special case for "expires" attr | # 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@sjeZdZddZddZdddZdd Zd d ZdddZeZ ddZ dddZ ddZ e fddZdS)rcCs||fS)Nr )r>rGr r r value_decodeszBaseCookie.value_decodecCst|}||fS)N)r)r>rGstrvalr r r value_encodeszBaseCookie.value_encodeNcCs|r||dS)N)load)r>inputr r r r@szBaseCookie.__init__cCs.||t}||||t|||dS)N)getr/rSr<r=)r>r?Z real_valuerBMr r r Z__setszBaseCookie.__setcCs:t|trt|||n||\}}||||dS)N)rHr/r<r=rj_BaseCookie__set)r>r?rArvalcvalr r r r=s zBaseCookie.__setitem__ Set-Cookie: cCs>g}t|}x"|D]\}}||||qW||S)N)r`rOr r[join)r>rYrZseprcrOr?rAr r r r[s  zBaseCookie.outputcCsNg}t|}x(|D] \}}|d|t|jfqWd|jjt|fS)Nz%s=%sz<%s: %s>)r`rOr reprrAr\r _spacejoin)r>lrOr?rAr r r r]s  zBaseCookie.__repr__cCs:g}t|}x |D]\}}|||qWt|S)N)r`rOr r_r$)r>rYrcrOr?rAr r r r_s  zBaseCookie.js_outputcCs8t|tr||nx|D]\}}|||<q WdS)N)rHr_BaseCookie__parse_stringrO)r>Zrawdatar?rAr r r rk s    zBaseCookie.loadcCspd}t|}g}d}d}d}xd|kr6|krnn|||} | sLP| d| d} } | d}| ddkr|s~q ||| dd| fq | tjkr|sdS| dkr| tjkr||| dfqdSn||| t | fq | dk r||| | | fd}q dSq Wd} xF|D]>\} } } | |krH| | | <n| \}}| | |||| } q*WdS) NrFrrr?rG$T) rmatchgroupendr rCr/r;rar(rhro)r>rZpattr%r Z parsed_itemsZ morsel_seenZTYPE_ATTRIBUTEZ TYPE_KEYVALUEr{r?rArntprprqr r r Z__parse_stringsF      zBaseCookie.__parse_string)N)Nrrrs)N)rrr rhrjr@ror=r[rgr]r_rk_CookiePatternryr r r r rs    c@seZdZddZddZdS)rcCs t||fS)N)r()r>rGr r r rh\szSimpleCookie.value_decodecCst|}|t|fS)N)rr)r>rGrir r r rj_szSimpleCookie.value_encodeN)rrr rhrjr r r r rUs)'restring__all__rtr$rbrw ExceptionrZ ascii_lettersdigitsZ _LegalCharsZ_UnescapedCharsrSrangemapordrrLcompileescape fullmatchrrrrr(Z _weekdaynameZ _monthnamer.r<r/Z_LegalKeyCharsZ_LegalValueCharsASCIIVERBOSErrrr r r r sB   2 4