File "_header_value_parser.cpython-37.opt-2.pyc"

Full Path: /home/attunedd/public_html/byp/izo/con7ext_sym404/rintoar.txt/opt/alt/python37/lib64/python3.7/email/__pycache__/_header_value_parser.cpython-37.opt-2.pyc
File size: 58.96 KB
MIME-type: text/x-bytecode.python
Charset: 8 bit

B

YI~d	@slddlZddlZddlZddlmZddlmZddlmZddl	m
Zddl	mZddl	m
Z
edZeed	BZed
ZeeBZeedZeedZeed
BedZeeBZeedBZeeBZeedZddZedejejBZGdddeZ Gddde Z!Gddde Z"Gddde Z#Gddde Z$Gddde!Z%Gdd d e Z&Gd!d"d"e Z'Gd#d$d$e Z(Gd%d&d&e Z)Gd'd(d(e)Z*Gd)d*d*e!Z+Gd+d,d,e Z,Gd-d.d.e Z-Gd/d0d0e Z.Gd1d2d2e Z/Gd3d4d4e Z0Gd5d6d6e Z1Gd7d8d8e Z2Gd9d:d:e Z3Gd;d<d<e Z4Gd=d>d>e Z5Gd?d@d@e Z6GdAdBdBe Z7GdCdDdDe Z8GdEdFdFe Z9GdGdHdHe Z:GdIdJdJe#Z;GdKdLdLe Z<GdMdNdNe Z=GdOdPdPe Z>GdQdRdRe Z?GdSdTdTe?Z@GdUdVdVe ZAGdWdXdXe ZBGdYdZdZe ZCGd[d\d\e ZDGd]d^d^e ZEGd_d`d`eEZFGdadbdbeEZGGdcdddde ZHGdedfdfe ZIGdgdhdhe ZJGdidjdjeKZLGdkdldleLZMGdmdndneLZNGdodpdpeMZOGdqdrdrejPZQeNddsZReNdtduZSeNdvdwZTedxUdyVejWZXedzUeYdyVejZZ[ed{j\Z]edzUeYdyVejZZ^edzUeYdyVejZZ_edzUeYdyVejZZ`d|d}Zad~dZbddZcddZdddZeddZfddZgddZhddZiddZjddZkddZlddZmddZnddZoddZpddZqddZrddZsddZtddZuddZvddZwddZxddZyddZzddZ{ddZ|ddZ}ddZ~ddZddZddZddZddZddÄZddńZddDŽZddɄZdd˄Zdd̈́ZddτZddфZddӄZddՄZddׄZddلZddۄZdd݄Zdd߄ZddZddZddZddZddZdS)N)	hexdigits)OrderedDict)
itemgetter)_encoded_words)errors)utilsz 	(z
()<>@,:;.\"[].z."(z/?=z*'%%cCs dt|dddddS)N"\z\\z\")strreplace)valuer?/opt/alt/python37/lib64/python3.7/email/_header_value_parser.pyquote_stringasrz
   =\?            # literal =?
   [^?]*          # charset
   \?             # literal ?
   [qQbB]         # literal 'q' or 'b', case insensitive
   \?             # literal ?
  .*?             # encoded word
  \?=             # literal ?=
cseZdZdZdZdZfddZddZfddZe	d	d
Z
e	ddZd
dZe	ddZ
e	ddZddZdddZdddZdddZZS)	TokenListNTcstj||g|_dS)N)super__init__defects)selfargskw)	__class__rrrzszTokenList.__init__cCsddd|DS)Ncss|]}t|VqdS)N)r
).0xrrr	<genexpr>sz$TokenList.__str__.<locals>.<genexpr>)join)rrrr__str__~szTokenList.__str__csd|jjtS)Nz{}({}))formatr__name__r__repr__)r)rrrr#s
zTokenList.__repr__cCsddd|DS)Nrcss|]}|jr|jVqdS)N)r)rrrrrrsz"TokenList.value.<locals>.<genexpr>)r)rrrrrszTokenList.valuecCstdd|D|jS)Ncss|]}|jVqdS)N)all_defects)rrrrrrsz(TokenList.all_defects.<locals>.<genexpr>)sumr)rrrrr$szTokenList.all_defectscCs|dS)Nr)startswith_fws)rrrrr&szTokenList.startswith_fwscCstdd|DS)Ncss|]}|jVqdS)N)
as_ew_allowed)rpartrrrrsz*TokenList.as_ew_allowed.<locals>.<genexpr>)all)rrrrr'szTokenList.as_ew_allowedcCs"g}x|D]}||jq
W|S)N)extendcomments)rr+tokenrrrr+s
zTokenList.commentscCst||dS)N)policy)_refold_parse_tree)rr-rrrfoldszTokenList.foldrcCst|j|ddS)N)indent)printppstr)rr0rrrpprintszTokenList.pprintcCsd|j|dS)N
)r0)r_pp)rr0rrrr2szTokenList.ppstrccs~d||jj|jVx<|D]4}t|ds<|d|Vq||dEdHqW|jrhd|j}nd}d||VdS)Nz{}{}/{}(r5z*    !! invalid element in token list: {!r}z    z Defects: {}rz{}){})r!rr"
token_typehasattrr5r)rr0r,Zextrarrrr5s


z
TokenList._pp)r)r)r)r"
__module____qualname__r6syntactic_breakew_combine_allowedrr r#propertyrr$r&r'r+r/r3r2r5
__classcell__rr)rrrts

rc@s$eZdZeddZeddZdS)WhiteSpaceTokenListcCsdS)N r)rrrrrszWhiteSpaceTokenList.valuecCsdd|DS)NcSsg|]}|jdkr|jqS)comment)r6content)rrrrr
<listcomp>sz0WhiteSpaceTokenList.comments.<locals>.<listcomp>r)rrrrr+szWhiteSpaceTokenList.commentsN)r"r8r9r<rr+rrrrr>sr>c@seZdZdZdS)UnstructuredTokenListunstructuredN)r"r8r9r6rrrrrCsrCc@seZdZdZdS)PhrasephraseN)r"r8r9r6rrrrrEsrEc@seZdZdZdS)WordZwordN)r"r8r9r6rrrrrGsrGc@seZdZdZdS)CFWSListcfwsN)r"r8r9r6rrrrrHsrHc@seZdZdZdS)AtomatomN)r"r8r9r6rrrrrJsrJc@seZdZdZdZdS)Tokenr,FN)r"r8r9r6Zencode_as_ewrrrrrLsrLc@seZdZdZdZdZdZdS)EncodedWordzencoded-wordN)r"r8r9r6ctecharsetlangrrrrrMsrMc@s4eZdZdZeddZeddZeddZdS)	QuotedStringz
quoted-stringcCs"x|D]}|jdkr|jSqWdS)Nzbare-quoted-string)r6r)rrrrrrAs

zQuotedString.contentcCsBg}x2|D]*}|jdkr(|t|q
||jq
Wd|S)Nzbare-quoted-stringr)r6appendr
rr)rresrrrrquoted_values

zQuotedString.quoted_valuecCs"x|D]}|jdkr|jSqWdS)Nzbare-quoted-string)r6r)rr,rrrstripped_values

zQuotedString.stripped_valueN)r"r8r9r6r<rArTrUrrrrrQs
rQc@s$eZdZdZddZeddZdS)BareQuotedStringzbare-quoted-stringcCstddd|DS)Nrcss|]}t|VqdS)N)r
)rrrrrrsz+BareQuotedString.__str__.<locals>.<genexpr>)rr)rrrrr szBareQuotedString.__str__cCsddd|DS)Nrcss|]}t|VqdS)N)r
)rrrrrrsz)BareQuotedString.value.<locals>.<genexpr>)r)rrrrr
szBareQuotedString.valueN)r"r8r9r6r r<rrrrrrVsrVc@s8eZdZdZddZddZeddZedd	Zd
S)Commentr@cs(dtdgfddDdgggS)Nrrcsg|]}|qSr)quote)rr)rrrrBsz#Comment.__str__.<locals>.<listcomp>))rr%)rr)rrr s
zComment.__str__cCs2|jdkrt|St|ddddddS)Nr@rz\\rz\(rYz\))r6r
r)rrrrrrXs

z
Comment.quotecCsddd|DS)Nrcss|]}t|VqdS)N)r
)rrrrrr#sz"Comment.content.<locals>.<genexpr>)r)rrrrrA!szComment.contentcCs|jgS)N)rA)rrrrr+%szComment.commentsN)	r"r8r9r6r rXr<rAr+rrrrrWs
rWc@s4eZdZdZeddZeddZeddZdS)	AddressListzaddress-listcCsdd|DS)NcSsg|]}|jdkr|qS)address)r6)rrrrrrB/sz)AddressList.addresses.<locals>.<listcomp>r)rrrr	addresses-szAddressList.addressescCstdd|DgS)Ncss|]}|jdkr|jVqdS)r[N)r6	mailboxes)rrrrrr3sz(AddressList.mailboxes.<locals>.<genexpr>)r%)rrrrr]1szAddressList.mailboxescCstdd|DgS)Ncss|]}|jdkr|jVqdS)r[N)r6
all_mailboxes)rrrrrr8sz,AddressList.all_mailboxes.<locals>.<genexpr>)r%)rrrrr^6szAddressList.all_mailboxesN)r"r8r9r6r<r\r]r^rrrrrZ)srZc@s4eZdZdZeddZeddZeddZdS)	Addressr[cCs|djdkr|djSdS)Nrgroup)r6display_name)rrrrra@szAddress.display_namecCs4|djdkr|dgS|djdkr*gS|djS)Nrmailboxzinvalid-mailbox)r6r])rrrrr]Es

zAddress.mailboxescCs:|djdkr|dgS|djdkr0|dgS|djS)Nrrbzinvalid-mailbox)r6r^)rrrrr^Ms


zAddress.all_mailboxesN)r"r8r9r6r<rar]r^rrrrr_<sr_c@s(eZdZdZeddZeddZdS)MailboxListzmailbox-listcCsdd|DS)NcSsg|]}|jdkr|qS)rb)r6)rrrrrrB[sz)MailboxList.mailboxes.<locals>.<listcomp>r)rrrrr]YszMailboxList.mailboxescCsdd|DS)NcSsg|]}|jdkr|qS))rbzinvalid-mailbox)r6)rrrrrrB_sz-MailboxList.all_mailboxes.<locals>.<listcomp>r)rrrrr^]szMailboxList.all_mailboxesN)r"r8r9r6r<r]r^rrrrrcUsrcc@s(eZdZdZeddZeddZdS)	GroupListz
group-listcCs |r|djdkrgS|djS)Nrzmailbox-list)r6r])rrrrr]gszGroupList.mailboxescCs |r|djdkrgS|djS)Nrzmailbox-list)r6r^)rrrrr^mszGroupList.all_mailboxesN)r"r8r9r6r<r]r^rrrrrdcsrdc@s4eZdZdZeddZeddZeddZdS)	Groupr`cCs|djdkrgS|djS)Nz
group-list)r6r])rrrrr]xszGroup.mailboxescCs|djdkrgS|djS)Nrfz
group-list)r6r^)rrrrr^~szGroup.all_mailboxescCs
|djS)Nr)ra)rrrrraszGroup.display_nameN)r"r8r9r6r<r]r^rarrrrretsrec@sLeZdZdZeddZeddZeddZedd	Zed
dZ	dS)
NameAddrz	name-addrcCst|dkrdS|djS)Nr)lenra)rrrrraszNameAddr.display_namecCs
|djS)N)
local_part)rrrrrkszNameAddr.local_partcCs
|djS)Nrj)domain)rrrrrlszNameAddr.domaincCs
|djS)Nrj)route)rrrrrmszNameAddr.routecCs
|djS)Nrj)	addr_spec)rrrrrnszNameAddr.addr_specN)
r"r8r9r6r<rarkrlrmrnrrrrrgsrgc@s@eZdZdZeddZeddZeddZedd	Zd
S)	AngleAddrz
angle-addrcCs"x|D]}|jdkr|jSqWdS)Nz	addr-spec)r6rk)rrrrrrks

zAngleAddr.local_partcCs"x|D]}|jdkr|jSqWdS)Nz	addr-spec)r6rl)rrrrrrls

zAngleAddr.domaincCs"x|D]}|jdkr|jSqWdS)Nz	obs-route)r6domains)rrrrrrms

zAngleAddr.routecCs<x6|D]*}|jdkr|jr |jSt|j|jSqWdSdS)Nz	addr-specz<>)r6rkrnr)rrrrrrns

zAngleAddr.addr_specN)	r"r8r9r6r<rkrlrmrnrrrrros
roc@seZdZdZeddZdS)ObsRoutez	obs-routecCsdd|DS)NcSsg|]}|jdkr|jqS)rl)r6rl)rrrrrrBsz$ObsRoute.domains.<locals>.<listcomp>r)rrrrrpszObsRoute.domainsN)r"r8r9r6r<rprrrrrqsrqc@sLeZdZdZeddZeddZeddZedd	Zed
dZ	dS)
MailboxrbcCs|djdkr|djSdS)Nrz	name-addr)r6ra)rrrrraszMailbox.display_namecCs
|djS)Nr)rk)rrrrrkszMailbox.local_partcCs
|djS)Nr)rl)rrrrrlszMailbox.domaincCs|djdkr|djSdS)Nrz	name-addr)r6rm)rrrrrmsz
Mailbox.routecCs
|djS)Nr)rn)rrrrrnszMailbox.addr_specN)
r"r8r9r6r<rarkrlrmrnrrrrrrsrrc@s,eZdZdZeddZeZZZZ	dS)InvalidMailboxzinvalid-mailboxcCsdS)Nr)rrrrraszInvalidMailbox.display_nameN)
r"r8r9r6r<rarkrlrmrnrrrrrssrscs(eZdZdZdZefddZZS)DomainrlFcsdtjS)Nr)rrrsplit)r)rrrrlsz
Domain.domain)r"r8r9r6r'r<rlr=rr)rrrtsrtc@seZdZdZdS)DotAtomzdot-atomN)r"r8r9r6rrrrrvsrvc@seZdZdZdZdS)DotAtomTextz
dot-atom-textTN)r"r8r9r6r'rrrrrwsrwc@sDeZdZdZdZeddZeddZeddZed	d
Z	dS)AddrSpecz	addr-specFcCs
|djS)Nr)rk)rrrrrkszAddrSpec.local_partcCst|dkrdS|djS)Nrj)rirl)rrrrrlszAddrSpec.domaincCs<t|dkr|djS|dj|dj|djS)Nryrrhrf)rirrstriplstrip)rrrrrs
zAddrSpec.valuecCsLt|j}t|t|tkr*t|j}n|j}|jdk	rH|d|jS|S)N@)setrkri
DOT_ATOM_ENDSrrl)rZnamesetZlprrrrns

zAddrSpec.addr_specN)
r"r8r9r6r'r<rkrlrrnrrrrrx
srxc@seZdZdZdZdS)ObsLocalPartzobs-local-partFN)r"r8r9r6r'rrrrr+srcs4eZdZdZdZeddZefddZZS)DisplayNamezdisplay-nameFcCst|}t|dkr|jS|djdkr4|dn*|ddjdkr^t|ddd|d<|djdkrv|n*|ddjdkrt|ddd|d<|jS)NrrIrhrj)rrirr6pop)rrSrrrra6s
zDisplayName.display_namecsd}|jrd}nx|D]}|jdkrd}qWt|dkr|rd}}|djdksd|ddjdkrhd}|djdks|ddjdkrd}|t|j|StjSdS)	NFTz
quoted-stringrrrIr?rj)rr6rirrarr)rrXrZpreZpost)rrrrGs

  zDisplayName.value)	r"r8r9r6r;r<rarr=rr)rrr1src@s,eZdZdZdZeddZeddZdS)	LocalPartz
local-partFcCs&|djdkr|djS|djSdS)Nrz
quoted-string)r6rTr)rrrrr`s
zLocalPart.valuecCstg}t}d}x|dtgD]}|jdkr.q|r^|jdkr^|djdkr^t|dd|d<t|t}|r|jdkr|djdkr|t|ddn
|||d}|}qWt|dd}|jS)NFrrIdotrjrh)DOTr6r
isinstancerRr)rrSZlastZ
last_is_tltokZis_tlrrrrkgs$


zLocalPart.local_partN)r"r8r9r6r'r<rrkrrrrr[srcs4eZdZdZdZefddZeddZZS)
DomainLiteralzdomain-literalFcsdtjS)Nr)rrrru)r)rrrrlszDomainLiteral.domaincCs"x|D]}|jdkr|jSqWdS)Nptext)r6r)rrrrrips

zDomainLiteral.ip)	r"r8r9r6r'r<rlrr=rr)rrrsrc@seZdZdZdZdZdS)MIMEVersionzmime-versionN)r"r8r9r6majorminorrrrrrsrc@s4eZdZdZdZdZdZeddZeddZ	dS)		Parameter	parameterFzus-asciicCs|jr|djSdS)Nrhr)	sectionednumber)rrrrsection_numberszParameter.section_numbercCsbx\|D]T}|jdkr|jS|jdkrx4|D],}|jdkr*x|D]}|jdkr>|jSq>Wq*WqWdS)Nrz
quoted-stringzbare-quoted-stringr)r6rU)rr,rrrparam_values






zParameter.param_valueN)
r"r8r9r6rextendedrOr<rrrrrrrsrc@seZdZdZdS)InvalidParameterzinvalid-parameterN)r"r8r9r6rrrrrsrc@seZdZdZeddZdS)	Attribute	attributecCs$x|D]}|jdr|jSqWdS)Nattrtext)r6endswithr)rr,rrrrUs
zAttribute.stripped_valueN)r"r8r9r6r<rUrrrrrsrc@seZdZdZdZdS)SectionsectionN)r"r8r9r6rrrrrrsrc@seZdZdZeddZdS)ValuercCs2|d}|jdkr|d}|jdr,|jS|jS)NrrIrh)z
quoted-stringrzextended-attribute)r6rrUr)rr,rrrrUs
zValue.stripped_valueN)r"r8r9r6r<rUrrrrrsrc@s(eZdZdZdZeddZddZdS)MimeParameterszmime-parametersFc
cst}x\|D]T}|jdsq|djdkr.q|dj}||krLg||<|||j|fqWx|D]\}}t|t	dd}|dd}|j
}|jst|dkr|dddkr|ddj
td|dd}g}d}x|D]\}	}
|	|kr4|
js"|
j
tdqn|
j
td|d7}|
j}|
jrytj|}Wn&tk
rtjj|d	d
}YnRXy||d}Wn"tk
r|dd}YnXt|r|
j
t||qWd
|}||fVqpWdS)Nrrr)keyrhz.duplicate parameter name; duplicate(s) ignoredz+duplicate parameter name; duplicate ignoredz(inconsistent RFC2231 parameter numberingzlatin-1)encodingsurrogateescapezus-asciir)rr6rrstriprRritemssortedrrOrrirrInvalidHeaderDefectrurllibparseZunquote_to_bytesUnicodeEncodeErrorZunquotedecodeLookupErrorr_has_surrogatesUndecodableBytesDefectr)rparamsr,namepartsZfirst_paramrOZvalue_partsirparamrrrrrsZ




zMimeParameters.paramscCsXg}x8|jD].\}}|r0|d|t|q||qWd|}|rTd|SdS)Nz{}={}z; r?r)rrRr!rr)rrrrrrrr !s
zMimeParameters.__str__N)r"r8r9r6r:r<rr rrrrrsFrc@seZdZdZeddZdS)ParameterizedHeaderValueFcCs&x t|D]}|jdkr
|jSq
WiS)Nzmime-parameters)reversedr6r)rr,rrrr2s

zParameterizedHeaderValue.paramsN)r"r8r9r:r<rrrrrr,src@seZdZdZdZdZdZdS)ContentTypezcontent-typeFtextZplainN)r"r8r9r6r'maintypesubtyperrrrr:src@seZdZdZdZdZdS)ContentDispositionzcontent-dispositionFN)r"r8r9r6r'content_dispositionrrrrrBsrc@seZdZdZdZdZdS)ContentTransferEncodingzcontent-transfer-encodingFZ7bitN)r"r8r9r6r'rNrrrrrIsrc@seZdZdZdZdS)HeaderLabelzheader-labelFN)r"r8r9r6r'rrrrrPsrc@seZdZdZdS)HeaderheaderN)r"r8r9r6rrrrrVsrcsreZdZdZdZdZfddZfddZddZe	dd	Z
dfdd	Zd
dZe	ddZ
ddZZS)TerminalTcst||}||_g|_|S)N)r__new__r6r)clsrr6r)rrrreszTerminal.__new__csd|jjtS)Nz{}({}))r!rr"rr#)r)rrrr#kszTerminal.__repr__cCst|jjd|jdS)N/)r1rr"r6)rrrrr3nszTerminal.pprintcCs
t|jS)N)listr)rrrrr$qszTerminal.all_defectsrc	s2d||jj|jt|js"dn
d|jgS)Nz
{}{}/{}({}){}rz {})r!rr"r6rr#r)rr0)rrrr5uszTerminal._ppcCsdS)Nr)rrrrpop_trailing_ws~szTerminal.pop_trailing_wscCsgS)Nr)rrrrr+szTerminal.commentscCst||jfS)N)r
r6)rrrr__getnewargs__szTerminal.__getnewargs__)r)r"r8r9r'r;r:rr#r3r<r$r5rr+rr=rr)rrr_s	rc@s eZdZeddZddZdS)WhiteSpaceTerminalcCsdS)Nr?r)rrrrrszWhiteSpaceTerminal.valuecCsdS)NTr)rrrrr&sz!WhiteSpaceTerminal.startswith_fwsN)r"r8r9r<rr&rrrrrsrc@s eZdZeddZddZdS)
ValueTerminalcCs|S)Nr)rrrrrszValueTerminal.valuecCsdS)NFr)rrrrr&szValueTerminal.startswith_fwsN)r"r8r9r<rr&rrrrrsrc@s eZdZeddZddZdS)EWWhiteSpaceTerminalcCsdS)Nrr)rrrrrszEWWhiteSpaceTerminal.valuecCsdS)Nrr)rrrrr szEWWhiteSpaceTerminal.__str__N)r"r8r9r<rr rrrrrsrc@seZdZdS)_InvalidEwErrorN)r"r8r9rrrrrsrr,zlist-separatorr|zroute-component-markerz([{}]+)rz[^{}]+z[\x00-\x20\x7F]cCs>t|}|r|jt|t|r:|jtddS)Nz*Non-ASCII characters found in header token)_non_printable_finderrrRrZNonPrintableDefectrrr)xtextZnon_printablesrrr_validate_xtexts

rcCst|d^}}g}d}d}xbtt|D]J}||dkrL|rFd}d}nd}q(|rVd}n|||krdP|||q(W|d}d|d||dg||fS)NrhFrTr)
_wsp_splitterrangerirRr)rendcharsZfragment	remainderZvcharsescapehad_qpposrrr_get_ptext_to_endcharss$	rcCs.|}t|dt|t|d}||fS)Nfws)r{rri)rZnewvaluerrrrget_fwssrc
	Cst}|ds td||dddd^}}||ddkrXtd|d|}t|dkr|dtkr|dtkr|	ddkr|dd^}}|d|}t|dkr|j
td	||_
d|}ytd|d\}}}}	Wn*ttfk
r*td
|j
YnX||_||_|j
|	xh|r|dtkrtt|\}
}||
qFt|d^}}t|d}t|||d|}qFW|r|dtkr|j
td||fS)
Nz=?z"expected encoded word but found {}rfz?=rhrr?zwhitespace inside encoded wordz!encoded word format invalid: '{}'vtextz.missing trailing whitespace after encoded-word)rM
startswithrHeaderParseErrorr!rurrircountrrRrrN_ewr
ValueErrorKeyErrorrrOrPr*WSPrrrr)
rZewrrZremstrrestrrOrPrr,charsrrrrget_encoded_wordsT







rcCsLt}x>|rF|dtkr4t|\}}||q
d}|dryt|\}}Wn,tk
rjd}Yntjk
r~YnrXd}t	|dkr|dj
dkr|jtdd}|rt	|dkr|d	j
d
krt
|dd|d<||q
t|d^}}|rt|r|d^}}t|d}t|||d|}q
W|S)
NrTz=?Frjrz&missing whitespace before encoded wordrhzencoded-wordrr)rCrrrRrrrrrrir6rrrrrfc2047_matchersearch	partitionrrr)rrDr,valid_ewZhave_wsrrrrrrget_unstructured8sD






rcCs*t|d\}}}t|d}t|||fS)Nz()r)rrr)rr_rrrget_qp_ctext{s
rcCs*t|d\}}}t|d}t|||fS)Nrr)rrr)rrrrrrget_qcontents

rcCsNt|}|std||}|t|d}t|d}t|||fS)Nzexpected atext but found '{}'atext)_non_atom_end_matcherrrr!r`rirr)rmrrrr	get_atexts
rcCsv|ddkrtd|t}|dd}|rT|ddkrTt|\}}||x|rD|ddkrD|dtkrt|\}}n|dddkr,d}y&t|\}}|j	t
dd	}Wn"tjk
rt|\}}YnX|r8t|dkr8|d
jdkr8|djd
kr8t
|d
d|d
<nt|\}}||qVW|sf|j	t
d||fS||ddfS)Nrrzexpected '"' but found '{}'rhrfz=?Fz!encoded word inside quoted stringTrjrrzencoded-wordz"end of header inside quoted string)rrr!rVrrRrrrrrrir6r)rZbare_quoted_stringr,rrrrget_bare_quoted_strings@


rcCs|r |ddkr td|t}|dd}x^|r|ddkr|dtkr^t|\}}n&|ddkrxt|\}}nt|\}}||q4W|s|j	t
d||fS||ddfS)Nrrzexpected '(' but found '{}'rhrYzend of header inside comment)rrr!rWrrget_commentrrRrr)rr@r,rrrrs"
rcCsTt}xD|rJ|dtkrJ|dtkr2t|\}}nt|\}}||qW||fS)Nr)rHCFWS_LEADERrrrrR)rrIr,rrrget_cfwssrcCspt}|r,|dtkr,t|\}}||t|\}}|||rh|dtkrht|\}}||||fS)Nr)rQrrrRr)rZ
quoted_stringr,rrrget_quoted_strings


rcCst}|r,|dtkr,t|\}}|||rL|dtkrLtd||dryt	|\}}Wqtjk
rt
|\}}YqXnt
|\}}|||r|dtkrt|\}}||||fS)Nrzexpected atom but found '{}'z=?)rJrrrR	ATOM_ENDSrrr!rrr)rrKr,rrrget_atoms$



rcCst}|r|dtkr&td|xP|rv|dtkrvt|\}}|||r(|ddkr(|t|dd}q(W|dtkrtdd|||fS)Nrz8expected atom at a start of dot-atom-text but found '{}'r	rhrjz4expected atom at end of dot-atom-text but found '{}')rwrrrr!rrRr)rZ
dot_atom_textr,rrrget_dot_atom_text)s

rcCst}|dtkr(t|\}}|||drhyt|\}}Wqttjk
rdt|\}}YqtXnt|\}}|||r|dtkrt|\}}||||fS)Nrz=?)	rvrrrRrrrrr)rZdot_atomr,rrrget_dot_atom<s



rcCs|dtkrt|\}}nd}|s,td|ddkrFt|\}}n*|dtkrdtd|nt|\}}|dk	r|g|dd<||fS)Nrz5Expected 'atom' or 'quoted-string' but found nothing.rz1Expected 'atom' or 'quoted-string' but found '{}')rrrrrSPECIALSr!r)rleaderr,rrrget_wordUs
rcCst}yt|\}}||Wn(tjk
rH|jtdYnXx|r|dtkr|ddkr|t|jt	d|dd}qLyt|\}}WnDtjk
r|dt
krt|\}}|jt	dnYnX||qLW||fS)Nzphrase does not start with wordrr	zperiod in 'phrase'rhzcomment found without atom)rErrRrrrrPHRASE_ENDSrObsoleteHeaderDefectrr)rrFr,rrr
get_phrasews.




rcCsvt}d}|dtkr"t|\}}|s6td|yt|\}}Wn^tjk
ryt|\}}Wn6tjk
r|ddkr|dtkrt	}YnXYnX|dk	r|g|dd<|
||r4|ddks|dtkr4tt||\}}|j
dkr|j
tdn|j
td||d<y|jdWn(tk
rl|j
tdYnX||fS)	Nrz"expected local-part but found '{}'rzinvalid-obs-local-partz<local-part is not dot-atom, quoted-string, or obs-local-partz,local-part is not a dot-atom (contains CFWS)asciiz)local-part contains non-ASCII characters))rrrrrr!rrrrrRget_obs_local_partr
r6rrrrencoderZNonASCIILocalPartDefect)rrkrr,obs_local_partrrrget_local_partsB
 



rcCst}d}x |r,|ddks.|dtkr,|ddkrn|rP|jtd|td}|dd}qnD|ddkr|t|dd|dd}|jtd	d}q|r|d
jdkr|jtdyt	|\}}d}Wn4tj
k
r|dtkrt|\}}YnX||qW|djdks^|djd
krp|djdkrp|jtd|d
jdks|d
jd
kr|djdkr|jtd|jrd|_||fS)NFrrr	zinvalid repeated '.'Trhzmisplaced-specialz/'\' character outside of quoted-string/ccontentrjrzmissing '.' between wordsrIz!Invalid leading '.' in local partrz"Invalid trailing '.' in local partzinvalid-obs-local-part)
rrrrRrrrrr6rrrr)rrZlast_non_ws_was_dotr,rrrrsV$





rcCs@t|d\}}}t|d}|r0|jtdt|||fS)Nz[]rz(quoted printable found in domain-literal)rrrrRrrr)rrrrrr	get_dtexts

rcCs,|rdS|td|tdddS)NFz"end of input inside domain-literal]zdomain-literal-endT)rRrrr)rdomain_literalrrr_check_for_early_dl_endsrcCsjt}|dtkr(t|\}}|||s6td|ddkrRtd||dd}t||rp||fS|tdd|dt	krt
|\}}||t|\}}||t||r||fS|dt	krt
|\}}||t||r||fS|ddkrtd||tdd	|dd}|rb|dtkrbt|\}}||||fS)
Nrzexpected domain-literal[z6expected '[' at start of domain-literal but found '{}'rhzdomain-literal-startrz4expected ']' at end of domain-literal but found '{}'zdomain-literal-end)rrrrRrrr!rrrrr)rrr,rrrget_domain_literalsD








rcCsvt}d}|dtkr"t|\}}|s6td||ddkrvt|\}}|dk	rd|g|dd<||||fSyt|\}}Wn"tjk
rt	|\}}YnX|r|ddkrtd|dk	r|g|dd<|||rn|ddkrn|j
td|djdkr*|d|dd<xB|rl|ddkrl|t
t	|d	d\}}||q,W||fS)
Nrzexpected domain but found '{}'rr|zInvalid Domainr	z(domain is not a dot-atom (contains CFWS)zdot-atomrh)rtrrrrr!rrRrrrrr6r)rrlrr,rrr
get_domain6s@




rcCs|t}t|\}}|||r,|ddkrF|jtd||fS|tddt|dd\}}||||fS)Nrr|z"add-spec local part with no domainzaddress-at-symbolrh)rxrrRrrrrr)rrnr,rrr
get_addr_spec\s


r	cCst}xf|rl|ddks$|dtkrl|dtkrHt|\}}||q|ddkr|t|dd}qW|r~|ddkrtd||tt	|dd\}}||x|rB|ddkrB|t|dd}|sP|dtkrt|\}}|||ddkr|tt	|dd\}}||qW|sTtd|ddkrrtd||t
dd	||ddfS)
Nrrrhr|z(expected obs-route domain but found '{}'z%end of header while parsing obs-route:z4expected ':' marking end of obs-route but found '{}'zend-of-obs-route-marker)rqrrrR
ListSeparatorrrr!RouteComponentMarkerrr)rZ	obs_router,rrr
get_obs_routelsB






r
cCst}|dtkr(t|\}}|||r8|ddkrHtd||tdd|dd}|ddkr|tdd|jt	d|dd}||fSyt
|\}}Wnztjk
r0y"t|\}}|jtd	Wn(tjk
rtd
|YnX||t
|\}}YnX|||r^|ddkr^|dd}n|jt	d|tdd|r|dtkrt|\}}||||fS)Nr<z"expected angle-addr but found '{}'zangle-addr-startrh>zangle-addr-endznull addr-spec in angle-addrz*obsolete route specification in angle-addrz.expected addr-spec or obs-route but found '{}'z"missing trailing '>' on angle-addr)
rorrrRrrr!rrrr	r
r)rZ
angle_addrr,rrrget_angle_addrsJ






rcCs<t}t|\}}||dd|jdd|_||fS)N)rrr*r)rrar,rrrget_display_names
rcCst}d}|dtkr6t|\}}|s6td||ddkr|dtkr^td|t|\}}|s~td||dk	r|g|ddd<d}||t	|\}}|dk	r|g|dd<||||fS)Nrz!expected name-addr but found '{}'r)
rgrrrrr!rrrRr)rZ	name_addrrr,rrr
get_name_addrs0

rcCst}yt|\}}WnNtjk
rdyt|\}}Wn&tjk
r^td|YnXYnXtdd|jDrd|_|	|||fS)Nzexpected mailbox but found '{}'css|]}t|tjVqdS)N)rrr)rrrrrrszget_mailbox.<locals>.<genexpr>zinvalid-mailbox)
rrrrrr	r!anyr$r6rR)rrbr,rrrget_mailboxs
rcCsht}xX|r^|d|kr^|dtkrF|t|dd|dd}qt|\}}||qW||fS)Nrzmisplaced-specialrh)rsrrRrr)rrZinvalid_mailboxr,rrrget_invalid_mailboxsrcCst}x|r|ddkryt|\}}||Wntjk
r@d}|dtkrt|\}}|rz|ddkr|||jtdn@t	|d\}}|dk	r|g|dd<|||jt
dnb|ddkr|jtdnBt	|d\}}|dk	r |g|dd<|||jt
dYnX|r|ddkr|d}d|_t	|d\}}|||jt
d|r
|ddkr
|t
|d	d}q
W||fS)
Nr;z,;zempty element in mailbox-listzinvalid mailbox in mailbox-listrrjzinvalid-mailboxrh)rcrrRrrrrrrrrr6r*r)rZmailbox_listr,rrbrrrget_mailbox_listsN













rcCst}|s$|jtd||fSd}|r|dtkrt|\}}|sl|jtd||||fS|ddkr||||fSt|\}}t|j	dkr|dk	r|||
||jtd||fS|dk	r|g|dd<||||fS)Nzend of header before group-listrzend of header in group-listrzgroup-list with empty entries)rdrrRrrrrrrir^r*r)rZ
group_listrr,rrrget_group_listPs8







rcCs t}t|\}}|r"|ddkr2td||||tdd|dd}|r|ddkr|tdd||ddfSt|\}}|||s|jt	dn|ddkrtd	||tdd|dd}|r|dt
krt|\}}||||fS)
Nrr
z8expected ':' at end of group display name but found '{}'zgroup-display-name-terminatorrhrzgroup-terminatorzend of header in groupz)expected ';' at end of group but found {})rerrrr!rRrrrrrr)rr`r,rrr	get_groupus2




rcCsxt}yt|\}}WnNtjk
rdyt|\}}Wn&tjk
r^td|YnXYnX||||fS)Nzexpected address but found '{}')r_rrrrr!rR)rr[r,rrrget_addresss
rc
Cst}x|ryt|\}}||Wn tjk
rL}zd}|dtkrt|\}}|rn|ddkr|||jtdnFt	|d\}}|dk	r|g|dd<|t
|g|jtdnh|ddkr|jtdnHt	|d\}}|dk	r|g|dd<|t
|g|jtdWdd}~XYnX|r|ddkr|dd}d|_t	|d\}}|
||jtd|r
|tdd|d	d}q
W||fS)
Nrrz"address-list entry with no contentzinvalid address in address-listzempty element in address-listrjzinvalid-mailboxzlist-separatorrh)rZrrRrrrrrrrr_rr6r*r)rZaddress_listr,errrrbrrrget_address_listsN












rcCst}|s |jtd|S|dtkrXt|\}}|||sX|jtdd}x8|r|ddkr|dtkr||d7}|dd}q^W|s|jtd	||t
|dnt||_|t
|d	|r|dtkrt|\}}|||r |ddkrX|jdk	r>|jtd
|rT|t
|d|S|t
dd|dd}|r|dtkrt|\}}|||s|jdk	r|jtd
|Sd}x2|r|dtkr||d7}|dd}qW|s2|jtd	||t
|dnt||_
|t
|d	|rv|dtkrvt|\}}|||r|jtd
|t
|d|S)Nz%Missing MIME version number (eg: 1.0)rz0Expected MIME version number but found only CFWSrr	rhz1Expected MIME major version number but found {!r}rdigitsz0Incomplete MIME version; found only major numberzversion-separatorz1Expected MIME minor version number but found {!r}z'Excess non-CFWS text after MIME version)rrrRrHeaderMissingRequiredValuerrisdigitrr!rintrr)rZmime_versionr,rrrrparse_mime_versionsv













r!cCsht}xX|r^|ddkr^|dtkrF|t|dd|dd}qt|\}}||qW||fS)Nrrzmisplaced-specialrh)rrrRrr)rZinvalid_parameterr,rrrget_invalid_parameter2sr"cCsNt|}|std||}|t|d}t|d}t|||fS)Nzexpected ttext but found '{}'ttext)_non_token_end_matcherrrr!r`rirr)rrr#rrr	get_ttextDs	
r%cCst}|r,|dtkr,t|\}}|||rL|dtkrLtd|t|\}}|||r|dtkrt|\}}||||fS)Nrzexpected token but found '{}')	rLrrrR
TOKEN_ENDSrrr!r%)rZmtokenr,rrr	get_tokenWs	


r'cCsNt|}|std||}|t|d}t|d}t|||fS)Nz expected attrtext but found {!r}r)_non_attribute_end_matcherrrr!r`rirr)rrrrrrget_attrtextns	
r)cCst}|r,|dtkr,t|\}}|||rL|dtkrLtd|t|\}}|||r|dtkrt|\}}||||fS)Nrzexpected token but found '{}')	rrrrRATTRIBUTE_ENDSrrr!r))rrr,rrr
get_attributes	


r+cCsNt|}|std||}|t|d}t|d}t|||fS)Nz)expected extended attrtext but found {!r}zextended-attrtext)#_non_extended_attribute_end_matcherrrr!r`rirr)rrrrrrget_extended_attrtexts
r-cCst}|r,|dtkr,t|\}}|||rL|dtkrLtd|t|\}}|||r|dtkrt|\}}||||fS)Nrzexpected token but found '{}')	rrrrREXTENDED_ATTRIBUTE_ENDSrrr!r-)rrr,rrrget_extended_attributes


r/cCst}|r|ddkr&td||tdd|dd}|rR|dsbtd|d}x,|r|dr||d7}|dd}qhW|ddkr|dkr|jtd	t	||_
|t|d
||fS)Nr*zExpected section but found {}zsection-markerrhz$Expected section number but found {}r0z'section number has an invalid leading 0r)rrrr!rRrrrZInvalidHeaderErrorr r)rrrrrrget_sections&	

r2cCst}|stdd}|dtkr0t|\}}|sDtd||ddkr^t|\}}nt|\}}|dk	r|g|dd<||||fS)Nz&Expected value but found end of stringrz Expected value but found only {}r)	rrrrrr!rr/rR)rvrr,rrr	get_values 

r4cCst}t|\}}|||r,|ddkrL|jtd|||fS|ddkry t|\}}d|_||Wntj	k
rYnX|st	d|ddkr|t
dd|dd}d|_|dd	krt	d
|t
d	d|dd}d}|r,|dtkr,t
|\}}||d}|}|jrF|rF|ddkrFt|\}}|j}d
}|jdkr|r|ddkrd}n$t|\}}	|	r|	ddkrd}n(yt|\}}	WnYnX|	sd}|r0|jtd||x,|D]$}
|
jdkrg|
dd<|
}PqW|}nd}|jtd|r`|ddkr`d}nt|\}}|jr|jdkr|r|ddkr|||dk	r|}||fS|jtd|s|jtd|||dkr||fSn|dk	r@x|D]}
|
jdkrPqW|
jdk||
|
j|_|ddkr^t	d||t
dd|dd}|r|ddkrt|\}}|||j|_|r|ddkrt	d||t
dd|dd}|dk	rht}xd|r`|dtkr t|\}}n2|ddkrFt
dd}|dd}nt|\}}||qW|}nt|\}}|||dk	r|}||fS)Nrrz)Parameter contains name ({}) but no valuer0TzIncomplete parameterzextended-parameter-markerrh=zParameter not followed by '='zparameter-separatorrF'z5Quoted string value for extended parameter is invalidzbare-quoted-stringzZParameter marked as extended but appears to have a quoted string value that is non-encodedzcApparent initial-extended-value but attribute was not marked as extended or was not initial sectionz(Missing required charset/lang delimiterszextended-attrtextrz=Expected RFC2231 char/lang encoding delimiter, but found {!r}zRFC2231-delimiterz;Expected RFC2231 char/lang encoding delimiter, but found {}ZDQUOTE)rr+rRrrrr!r2rrrrrrrrUrr)r-r6r4rrOrPrrrr)rrr,rrZappendtoZqstringZinner_valueZ
semi_validrtr3rrr
get_parameters
























r8c
Csht}xZ|rbyt|\}}||Wntjk
r}zd}|dtkrZt|\}}|sl|||S|ddkr|dk	r|||jtdn@t	|\}}|r|g|dd<|||jtd
|Wdd}~XYnX|r@|ddkr@|d}d|_t	|\}}|||jtd
||r
|t
dd|d	d}q
W|S)
Nrrzparameter entry with no contentzinvalid parameter {!r}rjzinvalid-parameterz)parameter with invalid trailing text {!r}zparameter-separatorrh)rr8rRrrrrrrr"r!r6r*r)rZmime_parametersr,rrrrrrparse_mime_parameters	sD







 

r9cCsxX|rX|ddkrX|dtkr@|t|dd|dd}qt|\}}||qW|sbdS|tdd|t|dddS)Nrrzmisplaced-specialrhzparameter-separator)rrRrrr9)Z	tokenlistrr,rrr_find_mime_parameters	sr:c
Cst}d}|s$|jtd|Syt|\}}Wn8tjk
rl|jtd|t	|||SX|||r|ddkr|jtd|rt	|||S|j
|_
|tdd|dd}yt|\}}Wn:tjk
r"|jtd	|t	|||SX|||j
|_|sH|S|dd
kr|jtd||`
|`t	|||S|td
d|t|dd|S)
NFz"Missing content type specificationz(Expected content maintype but found {!r}rrzInvalid content typezcontent-type-separatorrhz'Expected content subtype but found {!r}rz<Only parameters are valid after content type, but found {!r}zparameter-separator)rrrRrrr'rrr!r:rrlowerrrrr9)rZctypeZrecoverr,rrrparse_content_type_header	sX











r<c
Cst}|s |jtd|Syt|\}}Wn8tjk
rh|jtd|t	|||SX|||j
|_
|s|S|ddkr|jtd|t	|||S|tdd|t|dd|S)NzMissing content dispositionz+Expected content disposition but found {!r}rrzCOnly parameters are valid after content disposition, but found {!r}zparameter-separatorrh)rrrRrrr'rrr!r:rrr;rrr9)rZdisp_headerr,rrr parse_content_disposition_header	s2






r=c
Cst}|s |jtd|Syt|\}}Wn.tjk
r^|jtd|YnX|||j	
|_|s|Sx^|r|jtd|dt
kr|t|dd|dd}qt|\}}||qW|S)Nz!Missing content transfer encodingz1Expected content transfer encoding but found {!r}z*Extra text after content transfer encodingrzmisplaced-specialrh)rrrRrrr'rrr!rrr;rNrrr)rZ
cte_headerr,rrr&parse_content_transfer_encoding_header
s.



r>cCsDd}|r@|dr@|ddtkr@|dd}|ddd|d<|S)Nrrj)r)linesZwsprrr_steal_trailing_WSP_if_existsL
s
r@cCs|jp
tj}|jrdnd}dg}d}d}d}tdd}t|}	xl|	r|	d}
|
|krd|d8}qBt|
}|
jdkrt	|t
@rd	}y|||}Wn6tk
rt
d
d|
jDrd}nd}d	}YnX|
jd
krt|
|||qB|r|s|
jstd}d}|
jrt|
j|ddt|j}
|j|
krtt|
|t|dkrbt|}|||d|
7<qBt|
dst|
|	}	nt|||||
j|}d}qBt||t|dkr|d|7<qB|
jrt|d|krt|}|s|
r|||d}qBt|
dsRt|
}|
jsH|d7}||||	}	qB|
jrr|sr|	d|
d	}qBt|}|s|
r|||qB|d|7<qBW|j||jS)Nzutf-8zus-asciirrFwrap_as_ew_blockedrhrTcss|]}t|tjVqdS)N)rrr)rrrrrrm
sz%_refold_parse_tree.<locals>.<genexpr>zunknown-8bitzmime-parameters)r-rjr)Zmax_line_lengthsysmaxsizeutf8rrrr
r6r}rrrrr$_fold_mime_parametersr'r:r/rilinesepr@rRr7_fold_as_ewr;r&insertr)Z
parse_treer-maxlenrr?last_ewrAZ
want_encodingZend_ew_not_allowedrr(tstrrOZencoded_partnewlineZnewpartsrrrr.S
s









r.cCs|dk	r<|r<tt|d|d|}|dd||d<|dtkr|d}|dd}t|d|krz|t||d|7<d}|dtkr|d}|dd}|dkrt|dn|}|dkrdn|}	t|	d}
|
d|krtdx|r|t|d}||
}|dkr.|d	q|d|}
tj	|
|	d
}t||}x6|dkr|
dd}
tj	|
|	d
}t||}qVW|d|7<|t|
d}|r|d	t|d}qW|d|7<|r|SdS)Nrjrrhrzus-asciizutf-8z3max_line_length is too small to fit an encoded wordr?)rO)
r
rrrirRr@rrrr)Z	to_encoder?rIrJr;rOZleading_wspZtrailing_wspZnew_last_ewZ	encode_as
chrome_lenZremaining_spaceZ
text_spaceZto_encode_wordZencoded_wordZexcessrrrrG
sP


rGc	Csx|jD]\}}|dds6|dd7<|}d}y||d}Wn0tk
rd}t|rxd}d}nd}YnX|rtjj	|d	|d
}	d
|||	}
nd
|t|}
t|dt|
d
|kr|dd|
|d<q
n"t|
d|kr|
d|
q
d}|d}x|rt|tt|dt|}
||
dkrTd}||
d}}x<|d|}tjj	|d	|d
}	t|	|krP|d
8}qfW|
d
||||	d	}|d
7}||d}|r|dd7<qWq
WdS)NrjrstrictFTzunknown-8bitrzutf-8r)Zsaferz
{}*={}''{}z{}={}rhr?rfrz''ryNz {}*{}*={}{})rrzrrrrrrrrXr!rrirRr
)r(r?rIrrrrOZ
error_handlerZencoding_requiredZ
encoded_valuerKrZextra_chromerNZ
splitpointZmaxcharspartialrrrrE
s\


 rE)rerBrstringrcollectionsroperatorrZemailrrrrr}rrrrr~rZ	TSPECIALSr&Z	ASPECIALSr*r.rcompileVERBOSE	MULTILINErrrr>rCrErGrHrJrLrMrQrVrWrZr_rcrdrergrorqrrrsrtrvrwrxrrrrrrrrrrrrrrrrrr
rrrrrrrrrr!rrurrmatchrfindallrr$r(r,rrrrrrrrrrrrrrrrrrrrrrrr	r
rrrrrrrrrrr!r"r%r'r)r+r-r/r2r4r8r9r:r<r=r>r@r.rGrErrrr<module>FsC"	
!*$
V	+






1C+
"&'/'&).9%>D49/gA