3 sjE@sdddddddddd d d d d dgZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z ddl m Z ddl mZmZmZddlmZdZdZdZdZdZejdZejdZddZddZdCd!dZd"d#Zd$d%Zd&Z d&d'd(dZ!d)d*Z"d+d,Z#d-d.Z$ejd/ej%ej&BZ'd0d1Z(dDd3dZ)dEd4dZ*dFd5dZ+d6d Z,d&d'd7d Z-d8dZ.d9dZ/dGd:dZ0ejd;ej1Z2d@,:;".]z[\\"]c Cs&y |jdStk r dSXdS)NFT)encodeUnicodeEncodeError)sr#/usr/lib64/python3.6/email/utils.py_has_surrogates4s rcCs|jdd}|jddS)Nzutf-8surrogateescapereplace)rdecode)stringZoriginal_bytesrrr _sanitizeAs r!utf-8c Cs|\}}|jd|ry|jdWn8tk r\t|trFt|}|j|}d||fSXd}tj|rpd}tj d|}d||||fS|S)Nasciiz%s <%s>r"z\\\g<0>z %s%s%s <%s>) rr isinstancestrrZ header_encode specialsresearch escapesresub)ZpaircharsetnameZaddressZ encoded_nameZquotesrrrrMs      ccs`d}d}xDt|D]8\}}|r2|d|fVd}q|dkr@d}q||fVqW|r\|dfVdS)NrF\T) enumerate)addrposescapechrrr_iter_escaped_charsosr3cCsd|kr |Sd}d}g}xPt|D]D\}}|dkr"|dkr@|}q"||krZ|j||||d}d}q"W|t|kr|j||ddj|S)Nr$rr)r3appendlenjoin)r/startZopen_posresultr0r2rrr_strip_quoted_realnames~s  r:T)strictcCs|s&tjdd|D}t|}|jSdd|D}t|}tj|}t|}t|j}d}x&|D]}t|}|d|jd7}qbWt||krd gS|S) Ncss|]}t|VqdS)N)r&).0vrrr szgetaddresses..cSsg|] }t|qSr)r&)r<r=rrr sz getaddresses..rr4,r)rr) COMMASPACEr7 _AddressList addresslist_pre_parse_validation_post_parse_validationr:countr6)Z fieldvaluesr;allar/r9nr=rrrrs     cCsXt|}d}xBt|D]6\}}|dkr0|d7}q|dkr|d8}|dkrdSqW|dkS)Nr(r4)F)r:r3)r/Zopensr0r2rrr_check_parenthesiss rLcCs,g}x"|D]}t|sd}|j|q W|S)Nz('', ''))rLr5)Zemail_header_fieldsaccepted_valuesr=rrrrDs  rDcCs0g}x&|D]}d|dkrd}|j|q W|S)N[r4r)rr)r5)Zparsed_email_header_tuplesrMr=rrrrEs   rEa_ =\? # literal =? (?P[^?]*?) # non-greedy up to the next ? is the charset \? # literal ? (?P[qb]) # either a "q" or a "b", case insensitive \? # literal ? (?P.*?) # non-greedy up to the next ?= is the atom \?= # literal ?= cCsfddddddddg|d |d d d d dddddddddg |dd|d|d|d|d|fS)Nz"%s, %02d %s %04d %02d:%02d:%02d %sZMonZTueZWedZThuZFriZSatZSunZJanZFebZMarZAprZMayZJunZJulZAugZSepZOctZNovZDecr4rr) timetuplezonerrr_format_timetuple_and_zones rVFcCsR|dkrtj}|s|r,tjj|tjj}n tjj|}|rH|j}d}t||S)NF)timedatetimeZ fromtimestamptimezoneutcZutcfromtimestamp astimezoner)timeval localtimeusegmtdtrrrrs cCsV|j}|r2|jdks$|jtjjkr,tdd}n|jdkrBd}n |jd}t||S)Nz%usegmt option requires a UTC datetimeZGMTz-0000z%z)rTtzinforXrYrZ ValueErrorZstrftimerV)r_r^nowrUrrrrs  cCs^ttjd}tj}tjd}|dkr0d}nd|}|dkrHtj}d|||||f}|S)Nd@r.z<%d.%d.%d%s@%s>)intrWosgetpidrandomZ getrandbitssocketZgetfqdn)ZidstringZdomainr\pidZrandintZmsgidrrrr /s  cCsNt|^}}|dkr(tj|ddStj|dddtjtj|diS)NrOr`)seconds)rrXrY timedelta)dataZdtupletzrrrrFs cCsx|st|j}|sdS|dSt|tr0|d}t|ts>dSt|gd}tt|j}| slt|dkrpdS|dS)Nrrr4)rr)rr)rr)rBrCr%listr&rDrEr6)r/r;Zaddrsrrrr Ns    cCs`t|dkr\|jdr<|jdr<|ddjddjddS|jdr\|jdr\|dd S|S) Nr4r$z\\r-z\"<>rs)r6 startswithendswithr)r&rrrrms   cCs&|jtd}t|dkr"dd|fS|S)NrP)splitTICKr6)rpartsrrrrys   cCsDtjj|d|pdd}|dkr*|dkr*|S|dkr6d}d|||fS)Nrr#)Zsafeencodingz%s'%s'%s)urllibparser)rr+languagerrrrs z&^(?P\w+)\*((?P[0-9]+)\*?)?$c Csx|dd}g}i}|jd\}}|j||fx|r|jd\}}|jdrTd}nd}t|}tj|}|r|jdd\}}|dk rt|}|j|gj|||fq2|j|dt |fq2W|rtx|j D]\}}g}d} |j x6|D].\}} }|rt j j| dd } d} |j| qWt tj|}| r^t|\} } }|j|| | d|ffq|j|d|fqW|S) Nr*TFr,numz"%s"zlatin-1)ry)popr5rurrfc2231_continuationmatchgrouprf setdefaultritemssortrzr{ EMPTYSTRINGr7r) ZparamsZ new_paramsZrfc2231_paramsr,valueZencodedZmor~Z continuationsZextendedrr+r|rrrrsD   rus-asciic Csjt|t st|dkr t|S|\}}}|dkr6|}t|d}y t|||Stk rdt|SXdS)NrQzraw-unicode-escape)r%tupler6rbytesr& LookupError)rerrorsZfallback_charsetr+r|textZrawbytesrrrrs   r4c Cs|dkrtjjtjjjS|jdk r.|jS|jdd|f}tj|}tj |}y tj |j d}tj||j }Wnt k r|tjtj|dd}tjo|jdk}|rtjntj }|tj |dkrtj|tj|}n tj|}YnX|j|dS)Nr4)rlrOr)r`rs)rXrbrYrZr[r`rTrWZmktimer]rmZ tm_gmtoffZtm_zoneAttributeErrorZgmtimeZdaylightZtm_isdstZaltzoneZtznamer) r_ZisdstZtmrlZlocaltmZdeltarodstZgmtoffrrrr]s$   r])r")NFF)F)NN)NN)rrrs)Nrs)6__all__rgrerWrirjrXZ urllib.parserzZemail._parseaddrrrrBr r r rZ email.charsetrrArZ UEMPTYSTRINGZCRLFrwcompiler'r)rr!rr3r:Zsupports_strict_parsingrrLrDrEVERBOSE IGNORECASEZecrerVrrr rr rrrASCIIrrrr]rrrrsx        ",       8