o ?Og1C@s gdZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z ddl m Z ddl mZmZmZddlmZdZd Zd Zd Zd Zed Zed ZddZddZd@ddZddZddZdZ ddddZ!ddZ"dd Z#d!d"Z$d#d$Z%dAd&d'Z&dBd(d)Z'dCd*d+Z(d,d-Z)ddd.d/Z*d0d1Z+d2d3Z,dCd4d5Z-ed6ej.Z/d7d8Z0 9 :dDd;d<Z1dEd>d?Z2dS)F)collapse_rfc2231_value decode_paramsdecode_rfc2231encode_rfc2231 formataddr formatdateformat_datetime getaddresses make_msgid mktime_tz parseaddr parsedate parsedate_tzparsedate_to_datetimeunquoteN)quote) AddressList)r )r r _parsedate_tz)Charsetz, z 'z[][\\()<>@,:;".]z[\\"]cCs& z|WdStyYdSw)NFT)encodeUnicodeEncodeError)sr2/opt/alt/python310/lib64/python3.10/email/utils.py_has_surrogates4s rcCs|dd}|ddS)Nutf-8surrogateescapereplace)rdecode)stringZoriginal_bytesrrr _sanitizeAs  r"rcCs |\}}|d|rHz|dWnty0t|tr#t|}||}d||fYSwd}t|r:d}t 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$      rccsbd}d}t|D]\}}|r|d|fVd}q |dkr d}q ||fVq |r/|dfVdSdS)NrF\T) enumerate)addrposescapechrrr_iter_escaped_charsns r3cCs d|vr|Sd}d}g}t|D]"\}}|dkr3|dur |}q||kr-|||||d}d}q|t|krC|||dd|S)Nr$rr)r3appendlenjoin)r/startZopen_posresultr0r2rrr_strip_quoted_realnames}s$  r:T)strictcCs |stdd|D}t|}|jSdd|D}t|}t|}t|}t|j}d}|D]}t|}|d|d7}q1t||krJdgS|S) Ncss|]}t|VqdS)Nr&.0vrrr szgetaddresses..cSsg|]}t|qSrr<r=rrr sz getaddresses..rr4,rr) COMMASPACEr7 _AddressList addresslist_pre_parse_validation_post_parse_validationr:countr6)Z fieldvaluesr;allar/r9nr?rrrrs"   rcCsVt|}d}t|D]\}}|dkr|d7}q |dkr&|d8}|dkr&dSq |dkS)Nr(r4)F)r:r3)r/Zopensr0r2rrr_check_parenthesiss rOcCs(g}|D] }t|s d}||q|S)Nz('', ''))rOr5)Zemail_header_fieldsaccepted_valuesr?rrrrGs  rGcCs,g}|D]}d|dvrd}||q|S)N[r4rC)r5)Zparsed_email_header_tuplesrPr?rrrrHs   rHc CsHdgd|d|dgd|dd|d|d|d |d |fS) Nz"%s, %02d %s %04d %02d:%02d:%02d %s)ZMonZTueZWedZThuZFriZSatZSun) ZJanZFebZMarZAprZMayZJunZJulZAugZSepZOctZNovZDecr4rr) timetuplezonerrr_format_timetuple_and_zones rYFcCsT |dur t}|s |rtj|tjj}ntj|}|r%|}d}t||S)NF)timedatetimeZ fromtimestamptimezoneutcZutcfromtimestamp astimezoner)timeval localtimeusegmtdtrrrrs  rcCsX |}|r|jdus|jtjjkrtdd}n |jdur"d}n|d}t||S)Nz%usegmt option requires a UTC datetimeZGMTz-0000z%z)rWtzinfor[r\r] ValueErrorstrftimerY)rbranowrXrrrrs   rcCs` ttd}t}td}|durd}nd|}|dur%t}d|||||f}|S)Nd@r.z<%d.%d.%d%s@%s>)intrZosgetpidrandomZ getrandbitssocketZgetfqdn)ZidstringZdomainr_pidZrandintZmsgidrrrr "s  r cCsjt|}|durtdt||^}}|dur"tj|ddStj|dddttj|diS)Nz!Invalid date value or format "%s"rRrcseconds)rrdr&r[r\ timedelta)dataZparsed_date_tzZdtupletzrrrr9s rcCsx |st|j}|s dS|dSt|tr|d}t|ts dSt|gd}tt|j}|r6t|dkr8dS|dS)NrCrr4)rErFr%listr&rGrHr6)r/r;Zaddrsrrrr Ds   r cCsb t|dkr/|dr|dr|ddddddS|dr/|dr/|ddS|S) Nr4r$z\\r-z\"<>)r6 startswithendswithrr<rrrrcs  rcCs( |td}t|dkrdd|fS|S)NrS)splitTICKr6)rpartsrrrros    rcCsF tjj|d|p dd}|dur|dur|S|durd}d|||fS)Nrr#)Zsafeencodingz%s'%s'%s)urllibparser)rr+languagerrrrwsrz&^(?P\w+)\*((?P[0-9]+)\*?)?$c Cs> |dg}i}|ddD]<\}}|d}t|}t|}|r?|dd\}}|dur2t|}||g|||fq||dt|fq|r| D]K\}}g}d} | |D]\}} }|rpt j j| dd } d } || q_tt |}| rt|\} } }||| | d|ffqQ||d|fqQ|S) Nrr4*r,numz"%s"Fzlatin-1)r~T)rzrrfc2231_continuationmatchgrouprj setdefaultr5ritemssortrr EMPTYSTRINGr7r) paramsZ new_paramsZrfc2231_paramsr,valueZencodedZmorZ continuationsZextendedrr+rrrrrs:    rrus-asciicCsht|tr t|dkrt|S|\}}}|dur|}t|d}zt|||WSty3t|YSw)NrTzraw-unicode-escape)r%tupler6rbytesr& LookupError)rerrorsZfallback_charsetr+rtextZrawbytesrrrrs    rrvc Cs |durtjtjjS|jdur|S|dd|f}t|}t |}ztj |j d}t||j }Wn?t y||tjt|dd}tjoY|jdk}|r_tjntj }|tj |dkrut|tj|}nt|}Ynw|j|dS)NrvrprRr)rc)r[rfr\r]r^rcrWrZmktimer`rr tm_gmtofftm_zoneAttributeErrorgmtimedaylighttm_isdstaltzonetznamer) rbZisdstZtmrqZlocaltmZdeltartZdstZgmtoffrrrr`s*       r`)r)NFF)F)NN)rr)Nrv)3__all__rkrerZrmrnr[Z urllib.parserZemail._parseaddrrrrEr r r rZ email.charsetrrDrZ UEMPTYSTRINGZCRLFr|compiler'r)rr"rr3r:Zsupports_strict_parsingrrOrGrHrYrrr rr rrrASCIIrrrr`rrrrs`       !,     0