JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbra XC?h&^@sgdZddlZddlZddlZddlZddlmZddlmZ e j Z dZ dZ dZ dZd Zd Zd Ze d Ze d ZedejejBZedZedZejjZddZdddZGdddZGdddZGddde Z!dS))Header decode_header make_headerN)HeaderParseError)charset   z Nz us-asciizutf-8ai =\? # literal =? (?P[^?]*?) # non-greedy up to the next ? is the charset \? # literal ? (?P[qQbB]) # either a "q" or a "b", case insensitive \? # literal ? (?P.*?) # non-greedy up to the next ?= is the encoded string \?= # literal ?= z[\041-\176]+:$z \n[^ \t]+:c Cst|drdd|jDSt|s.|dfgSg}|D]}t|}d}|r:|d}|rj|}d}|r~||ddf|rL|d }|d }|d}||||fqLq:g} t |D]J\} } | dkr| dr|| ddr|| dd r| | dqt | D] } || =qg} |D]\}}}|durV| ||fn|d kr|t j|}| ||fn||d krt|d }|r|d dd |7}zt j|}Wntjytd Yn0| ||fn td|q2g}d}}| D]v\}}t|tr*t|d}|dur>|}|}nB||kr`|||f|}|}n |durx|t|7}n||7}q |||f|S)N_chunkscSs(g|] \}}t|t|t|fqS)_charsetZ_encodestr).0stringrrr1/opt/alt/python39/lib64/python3.9/email/header.py Msz!decode_header..TrFqbz===zBase64 decoding errorzUnexpected encoding: zraw-unicode-escape)hasattrr ecresearch splitlinessplitpoplstripappendlower enumerateisspacereversedemail quoprimimeZ header_decodelenZ base64mimedecodebinasciiErrorrAssertionError isinstancerbytesBSPACE)headerZwordslinepartsfirstZ unencodedrencodingZencodedZdroplistnwdZ decoded_wordsZencoded_stringZwordZpaderrZ collapsedZ last_word last_charsetrrrr=s|       4              rcCsFt|||d}|D].\}}|dur4t|ts4t|}|||q|S)N) maxlinelen header_namecontinuation_ws)rr-Charsetr!)Z decoded_seqr9r:r;hsrrrrrs  rc@sJeZdZdddZddZdd Zdd d Zd d ZdddZddZ dS)rNrstrictcCs||durt}nt|ts t|}||_||_g|_|durH|||||durTt}||_|durjd|_ nt |d|_ dS)Nrr) USASCIIr-r<r_continuation_wsr r! MAXLINELEN _maxlinelen _headerlenr()selfr>rr9r:r;errorsrrr__init__s zHeader.__init__c Cs|g}d}d}|jD]\}}|}|tjkrH|dd}|dd}|r|o\||d}|dvr|dvr|s|td}n|dvr|s|t|o||d}|}||qt |S)NasciisurrogateescapereplacerNr ) _normalizer r UNKNOWN8BITencoder) _nonctextr!SPACE EMPTYSTRINGjoin) rEZuchunkslastcs lastspacerrZnextcsZoriginal_byteshasspacerrr__str__s*        zHeader.__str__cCs |t|kSN)r)rEotherrrr__eq__sz Header.__eq__cCs|dur|j}nt|ts"t|}t|tsZ|jp4d}|tjkrN|dd}n |||}|jpbd}|tjkrz|||Wn t y|dkrt }Yn0|j ||fdS)Nr rI) rr-r<rZ input_codecrNr)Z output_codecrOUnicodeEncodeErrorUTF8r r!)rEr>rrFZ input_charsetZoutput_charsetrrrr! s$         z Header.appendcCs|p|dvS)N)()\)r$)rEr>rrrrP4szHeader._nonctext;, rcCs||dur|j}|dkr"d}t|j||j|}d}d}}|jD]\}} |dur|oh||d}|dvr|r~| dvr|n| dvr|s||o||d}| }d}|} | r| d| d| n| dd| | ddD]`} | | j dur"| |jd| | q| } | dt | t | } | | | | qt | dkrF| qF|jrx|||}t|rtd ||S) Nri@BrKrLFr rrz8header value appears to contain an embedded header: {!r})rMrC_ValueFormatterrDrAr rPadd_transitionrfeednewlineheader_encodingr r(_str_embedded_headerrrformat)rE splitcharsr9linesepZ formatterrTrVrUrrlinesr1ZslinefwsvaluerrrrO9sX!        z Header.encodecCsxg}d}g}|jD]B\}}||kr.||q|durJ|t||f|g}|}q|rn|t||f||_dSrX)r r!rQrS)rEZchunksr8Z last_chunkrrrrrrMs zHeader._normalize)NNNNrr?)Nr?)r`Nr) __name__ __module__ __qualname__rGrWrZr!rPrOrMrrrrrs /  + Prc@sTeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ dS)racCs0||_||_t||_||_g|_t||_dSrX)_maxlenrAr(_continuation_ws_len _splitchars_lines _Accumulator _current_line)rEZ headerlenmaxlenr;rirrrrGs  z_ValueFormatter.__init__cCs|||jSrX)rdrSrt)rErjrrrrfsz_ValueFormatter._strcCs |tSrX)rfNLrErrrrWsz_ValueFormatter.__str__cCsv|j}|dkr|jj|t|jdkrh|jrV|jrV|jdt|j7<n|jt|j|jdS)N)rr rrL) rvrpushr( is_onlywsrtrr!reset)rEZ end_of_linerrrrds  z_ValueFormatter.newlinecCs|jdddS)Nrr )rvrzryrrrrbsz_ValueFormatter.add_transitioncCs|jdur||||jdS|||}z|d}WntyPYdS0|durf|||z |}WntyYdS0||j |j ||D]}|j |j |qdSNr)re _ascii_splitrsZheader_encode_lines _maxlengthsr IndexError _append_chunkrdrvrzrArtr!)rErlrrZ encoded_linesZ first_line last_liner1rrrrcs$     z_ValueFormatter.feedccs&|jt|jV|j|jVqdSrX)rqr(rvrrryrrrrsz_ValueFormatter._maxlengthscCsftdtd||}|dr0dg|dd<n |dtt|gdD]\}}|||qLdS)Nz([z]+)rr r)rerFWSrzipiterr)rErlrrir2partrrrr~s  z_ValueFormatter._ascii_splitcCs|j||t|j|jkr|jD]v}t|jdddD]T}|rn|j|d}|rn|d|krnq|j|dd}|r@|d|kr@qq@q&qq&|j\}}|jj dkr| |sd}|j||dS|j |}|j t|j|j|dS)NrrrLr)rvrzr(rqrsrange part_countr$r _initial_sizerdpop_fromrtr!rr|)rErlrZchiZprevpartrZ remainderrrrrs.   z_ValueFormatter._append_chunkN) rnrorprGrfrWrdrbrcrr~rrrrrras %racsjeZdZdfdd ZddZdddZfdd Zd d Zd d ZdddZ ddZ fddZ Z S)rurcs||_tdSrX)rsuperrG)rEZ initial_size __class__rrrGsz_Accumulator.__init__cCs|||fdSrX)r!)rErlrrrrrz#sz_Accumulator.pushcCs||d}g||d<|SrXr)rErZpoppedrrrr&s  z_Accumulator.pop_fromcs|dkrdStS)Nr)r r )rrrryrrrr+s z_Accumulator.popcCstdd|D|jS)Ncss"|]\}}t|t|VqdSrX)r(rrlrrrr 1z'_Accumulator.__len__..)sumrryrrr__len__0sz_Accumulator.__len__cCstdd|DS)Ncss |]\}}t||fVqdSrXrRrSrrrrr5sz'_Accumulator.__str__..rryrrrrW4s z_Accumulator.__str__NcCs"|dur g}||dd<d|_dSr})r)rEZstartvalrrrr|8s z_Accumulator.resetcCs|jdko| pt|Sr})rrr$ryrrrr{>sz_Accumulator.is_onlywscs tSrX)rrryrrrrAsz_Accumulator.part_count)r)r)N) rnrorprGrzrrrrWr|r{r __classcell__rrrrrus   ru)NNr)"__all__rr*Zemail.quoprimimer&Zemail.base64mimeZ email.errorsrrrr<rxrQr/ZSPACE8rRrBrr@r\compileVERBOSE MULTILINErZfcrergr'Z _max_appendrrrralistrurrrrs>     _ k