[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@18.117.11.233: ~ $


���]O��@s�ddlZddlZddlmZddlmZddlmZddlm	Z
ddlmZddlmZe
d�Zee
d	�BZe
d
�ZeeBZee
d�Zee
d�Zee
d
�Be
d�ZeeBZee
d�BZeeBZee
d�Zdd�ZGdd�d�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�Z Gdd�de�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.d/�d/e�Z)Gd0d1�d1e�Z*Gd2d3�d3e�Z+Gd4d5�d5e�Z,Gd6d7�d7e�Z-Gd8d9�d9e�Z.Gd:d;�d;e�Z/Gd<d=�d=e�Z0Gd>d?�d?e�Z1Gd@dA�dAe�Z2GdBdC�dCe�Z3GdDdE�dEe�Z4GdFdG�dGe�Z5GdHdI�dIe�Z6GdJdK�dKe�Z7GdLdM�dMe�Z8GdNdO�dOe�Z9GdPdQ�dQe�Z:GdRdS�dSe�Z;GdTdU�dUe;�Z<GdVdW�dWe�Z=GdXdY�dYe�Z>GdZd[�d[e�Z?Gd\d]�d]e�Z@Gd^d_�d_e�ZAGd`da�daeA�ZBGdbdc�dceA�ZCGddde�dee�ZDGdfdg�dge�ZEGdhdi�die�ZFGdjdk�dkeG�ZHGdldm�dmeH�ZIGdndo�doeH�ZJGdpdq�dqeI�ZKeJddr�ZLeJdsdt�ZMeJdudv�ZNejOdwjPdxjQe���jRZSejOdyjPdxjQe�jTdzd{�jTd|d}���jUZVejOd~�jWZXejOdyjPdxjQe�jTdzd{�jTd|d}���jUZYejOdyjPdxjQe�jTdzd{�jTd|d}���jUZZejOdyjPdxjQe�jTdzd{�jTd|d}���jUZ[dd��Z\d�d��Z]d�d��Z^d�d��Z_d�d��Z`d�d��Zad�d��Zbd�d��Zcd�d��Zdd�d��Zed�d��Zfd�d��Zgd�d��Zhd�d��Zid�d��Zjd�d��Zkd�d��Zld�d��Zmd�d��Znd�d��Zod�d��Zpd�d��Zqd�d��Zrd�d��Zsd�d��Ztd�d��Zud�d��Zvd�d��Zwd�d��Zxd�d��Zyd�d��Zzd�d��Z{d�d��Z|d�d��Z}d�d��Z~d�d��Zd�d��Z�d�d��Z�d�d��Z�d�d��Z�d�d��Z�d�d��Z�d�d��Z�d�d��Z�d�d��Z�d�d��Z�d�d��Z�d�d��Z�d�d��Z�d�d��Z�d�d��Z�dS)��N)�	hexdigits)�OrderedDict)�
itemgetter)�_encoded_words)�errors)�utilsz 	�(z
()<>@,:;.\"[]�.z."(z/?=z*'%�%cCs*dt|�jdd�jdd�dS)N�"�\z\\z\")�str�replace)�value�r�9/opt/alt/python35/lib64/python3.5/_header_value_parser.py�quote_string`src@s[eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zddd
�ZdS)�_FoldedcCsC||_||_d|_d|_d|_g|_g|_dS)NrT)�maxlen�policy�lastlen�stickyspace�	firstline�done�current)�selfrrrrr�__init__is						z_Folded.__init__cCsC|jj|j�|jj|jj�|jj�d|_dS)Nr)r�extendr�appendr�linesep�clearr)rrrr�newliners
z_Folded.newlinecCs|jr|j�dS)N)rr!)rrrr�finalizexs	z_Folded.finalizecCsdj|j�S)N�)�joinr)rrrr�__str__|sz_Folded.__str__cCs|jj|�dS)N)rr)r�stokenrrrrsz_Folded.appendNcCs�|dkrt|�}t|�}|jdk	r+t|j�}|j|||jkr�|jj|j�|j|7_|jj|�|j|7_d|_d|_dS|jr
|j	�}|dk	r�|jt|�7_|t|�7}|j
|�dS|r�|d|jkr�|j|}d|koG|knr�||}|jj|jd|��|j|d�|_|}|j�|jj|j�|jj|�|||_d|_d|_dS|js�|j�|jj|j�|jj|�d|_d|_dS|j||jkrd|jj|�|j|7_dS||jkr�|j�|jj|�||_dSdS)NFT�r)r
�lenrrrrrr�has_fws�pop_leading_fws�_foldr!)r�tokenr&�lZstickyspace_len�ws�marginZtrimrrr�append_if_fits�sf			




			
		
	z_Folded.append_if_fits)	�__name__�
__module__�__qualname__rr!r"r%rr0rrrrrgs	rcs-eZdZdZ�fdd�Zdd�Z�fdd�Zedd	��Zed
d��Z	edd
��Z
dd�Zdd�Zdd�Z
edd��Zdd�Zedd��Zdd�Zdd�Zdd�Zd d!�Zd"d#d$�Zd"d%d&�Zd"d'd(�Z�S))�	TokenListNcs t�j||�g|_dS)N)�superr�defects)r�args�kw)�	__class__rrr�szTokenList.__init__cCsdjdd�|D��S)Nr#css|]}t|�VqdS)N)r
)�.0�xrrr�	<genexpr>�sz$TokenList.__str__.<locals>.<genexpr>)r$)rrrrr%�szTokenList.__str__csdj|jjt�j��S)Nz{}({}))�formatr9r1r5�__repr__)r)r9rrr>�szTokenList.__repr__cCsdjdd�|D��S)Nr#css!|]}|jr|jVqdS)N)r)r:r;rrrr<�sz"TokenList.value.<locals>.<genexpr>)r$)rrrrr�szTokenList.valuecCstdd�|D�|j�S)Ncss|]}|jVqdS)N)�all_defects)r:r;rrrr<�sz(TokenList.all_defects.<locals>.<genexpr>)�sumr6)rrrrr?�szTokenList.all_defectsccs�|j}g}x�|D]|}|j�r_|r_t|�dkrJ|dn	||�V|j�|j�}|j|�|r||�V|g}qW|r�t|�dkr�|dn	||�VdS)Nr'r)r9�startswith_fwsr(r �pop_trailing_wsr)r�klass�thisr,Zend_wsrrr�parts�s	
'


zTokenList.partscCs|dj�S)Nr)rA)rrrrrA
szTokenList.startswith_fwscCs.|djdkr |jd�S|dj�S)Nr�fws)�
token_type�popr*)rrrrr*
s
zTokenList.pop_leading_fwscCs.|djdkr |jd�S|dj�S)Nr'�cfws���rJrJ)rGrHrB)rrrrrBs
zTokenList.pop_trailing_wscCs"x|D]}|jrdSqWdS)NTF)r))r�partrrrr)s
	zTokenList.has_fwscCs|dj�S)Nr)�has_leading_comment)rrrrrLszTokenList.has_leading_commentcCs+g}x|D]}|j|j�q
W|S)N)r�comments)rrMr,rrrrM!s
zTokenList.commentscCsE|jptd�}t||�}|j|�|j�t|�S)Nz+inf)Zmax_line_length�floatrr+r"r
)rrr�foldedrrr�fold(s


zTokenList.foldcCs�g}|j�}|r%|j|�|djdkrG|jd�nd}|jtjt|�|��|j|�dj|�S)Nr'rFr#rJrJ)r*rrGrH�_ew�encoder
r$)r�charset�resr.Ztrailerrrr�as_encoded_word0s
(
zTokenList.as_encoded_wordcCs=g}x'|D]}|j|j||��q
Wdj|�S)Nr#)r�
cte_encoder$)rrSrrTrKrrrrV<s
zTokenList.cte_encodecCs>|jjrdnd}x|jD]}t|�}t|�}yt|�j|�Wn^tk
r�tdd�|jD��r�d}nd}|j	||j�}t|�}YnX|j
||�r�q"|j�}|dk	rt|�|_|j
|�rq"|j
r|j|�q"|j|�|j�q"WdS)Nzutf-8�asciicss!|]}t|tj�VqdS)N)�
isinstancer�UndecodableBytesDefect)r:r;rrrr<Jsz"TokenList._fold.<locals>.<genexpr>zunknown-8bit)r�utf8rEr
r(rR�UnicodeEncodeError�anyr?rVr0r*rr)r+rr!)rrO�encodingrK�tstr�tlenrSr.rrrr+Bs2
		

zTokenList._foldr#cCs#tdj|jdd���dS)N�
�indentr#)�printr$�_pp)rrarrr�pprintcszTokenList.pprintcCsdj|jdd��S)Nr`rar#)r$rc)rrarrr�ppstrfszTokenList.ppstrccs�dj||jj|j�VxH|D]@}t|d�sN|dj|�Vq$|j|d�EdHq$W|jr�dj|j�}nd}dj||�VdS)Nz{}{}/{}(rcz*    !! invalid element in token list: {!r}z    z Defects: {}r#z{}){})r=r9r1rG�hasattrrcr6)rrar,�extrarrrrcis	
		z
TokenList._pp)r1r2r3rGrr%r>�propertyrr?rErAr*rBr)rLrMrPrUrVr+rdrercrr)r9rr4�s(+!r4c@s4eZdZedd��Zedd��ZdS)�WhiteSpaceTokenListcCsdS)N� r)rrrrr}szWhiteSpaceTokenList.valuecCsdd�|D�S)NcSs(g|]}|jdkr|j�qS)�comment)rG�content)r:r;rrr�
<listcomp>�s	z0WhiteSpaceTokenList.comments.<locals>.<listcomp>r)rrrrrM�szWhiteSpaceTokenList.commentsN)r1r2r3rhrrMrrrrri{sric@s.eZdZdZdd�Zdd�ZdS)�UnstructuredTokenList�unstructuredc
Cs)d}|jjrdnd}x|jD]�}t|�}d}yt|�j|�Wntk
rgtdd�|jD��r�d}nd}|dk	rNtdj	|j
|d�|g��j|�}tdd�|j
d|�D��}	t|�}
t
|
�}|	||jkrN|j
|d�=|j|
�|	||_w(|j|�}d	}YnX|j||�r�|r(t
|j
�d
}q(|s�|r�|j|�q(|j�}|dk	r�t|�|_|j|�r�q(|jr|j|�q(|j|�|j�d}q(WdS)Nzutf-8rWFcss!|]}t|tj�VqdS)N)rXrrY)r:r;rrrr<�sz.UnstructuredTokenList._fold.<locals>.<genexpr>zunknown-8bitr#css|]}t|�VqdS)N)r()r:r;rrrr<�sTr')rrZrEr
rRr[r\r?�get_unstructuredr$rrUr@r(rrrr0Z_fold_as_ewr*rr)r+r!)
rrO�last_ewr]rKr^�is_ewrS�chunkZ
oldlastlen�schunk�lchunkr.rrrr+�sV
	/&


	


zUnstructuredTokenList._foldcCs�g}d}x�|D]�}t|�}y|jd�|j|�Wqtk
r�|dkr�|j|j||��t|�}n<tdj||d�|g��}|j|j|��YqXqWdj|�S)Nzus-asciir#)	r
rRrr[rVr(rpr$rU)rrSrrTrqrK�spart�tlrrrrV�s


&z UnstructuredTokenList.cte_encodeN)r1r2r3rGr+rVrrrrrn�s5rnc@s.eZdZdZdd�Zdd�ZdS)�Phrase�phrasecCsad}|jjrdnd}x<|jD]1}t|�}t|�}d}yt|�j|�Wn�tk
r�tdd�|jD��r�d}nd}|dk	r�|j	�r�|dj
dkr�|jr�|jd�}	nd	}	xCt
|�D]5\}
}|j
d
kr�t|dd��||
<q�Wtd	j|j|d�|g��j|�}t|�}
t|
�}|||jkr�|j|d�=|j|
�tdd�|jD��|_w(|j|�}t|�}d}YnX|j||�rL|r+|jr+t|j�d}q(|jsC|j
d
kr(d}q(|j|�q(WdS)Nzutf-8rWFcss!|]}t|tj�VqdS)N)rXrrY)r:r;rrrr<�szPhrase._fold.<locals>.<genexpr>zunknown-8bitr'rIr#zbare-quoted-stringcss|]}t|�VqdS)N)r()r:r;rrrr<sTz
quoted-stringrJrJ)rrZrEr
r(rRr[r\r?rLrGrMrH�	enumeraternrpr$rrUrrr@rr0r+)rrOrqr]rKr^r_Zhas_ewrS�	remainder�ir,rsrtrurrrr+�sN
	/
zPhrase._foldcCs�g}d}d}x}|D]u}t|�}y|jd�|j|�Wntk
rhd}|dkr�|js�t|�}|j|j||��n�|j�sd|d	jdkr�|jr�|j	d
�}nd}xCt
|�D]5\}	}
|
jdkr�t|
dd��||	<q�Wtdj
||d�|g��}|j|�g||d�<YnX|js�|r|jdkrd}qWdj
|�S)NFzus-asciiTr'rIr#zbare-quoted-stringz
quoted-stringrJrJ)r
rRrr[rMr(rVrLrGrHrzrnrpr$rU)rrSrrTrqrrrKrvr{r|r,rwrrrrVs4


	&!
zPhrase.cte_encodeN)r1r2r3rGr+rVrrrrrx�s?rxc@seZdZdZdS)�WordZwordN)r1r2r3rGrrrrr}1sr}c@s"eZdZdZdd�ZdS)�CFWSListrIcCs
t|j�S)N)�boolrM)rrrrrL:szCFWSList.has_leading_commentN)r1r2r3rGrLrrrrr~6sr~c@seZdZdZdS)�Atom�atomN)r1r2r3rGrrrrr�>sr�c@seZdZdZdS)�Tokenr,N)r1r2r3rGrrrrr�Csr�c@s:eZdZdZdZdZdZedd��ZdS)�EncodedWordzencoded-wordNcCs3|jdk	r|jStjt|�|j�dS)N)�cterQrRr
rS)rrrr�encodedOszEncodedWord.encoded)	r1r2r3rGr�rS�langrhr�rrrrr�Hs
r�c@sLeZdZdZedd��Zedd��Zedd��ZdS)	�QuotedStringz
quoted-stringcCs+x$|D]}|jdkr|jSqWdS)Nzbare-quoted-string)rGr)rr;rrrrl[s
zQuotedString.contentcCsYg}xC|D];}|jdkr8|jt|��q
|j|j�q
Wdj|�S)Nzbare-quoted-stringr#)rGrr
rr$)rrTr;rrr�quoted_valueas
zQuotedString.quoted_valuecCs+x$|D]}|jdkr|jSqWdS)Nzbare-quoted-string)rGr)rr,rrr�stripped_valueks
zQuotedString.stripped_valueN)r1r2r3rGrhrlr�r�rrrrr�Ws
r�c@s4eZdZdZdd�Zedd��ZdS)�BareQuotedStringzbare-quoted-stringcCs tdjdd�|D���S)Nr#css|]}t|�VqdS)N)r
)r:r;rrrr<wsz+BareQuotedString.__str__.<locals>.<genexpr>)rr$)rrrrr%vszBareQuotedString.__str__cCsdjdd�|D��S)Nr#css|]}t|�VqdS)N)r
)r:r;rrrr<{sz)BareQuotedString.value.<locals>.<genexpr>)r$)rrrrryszBareQuotedString.valueN)r1r2r3rGr%rhrrrrrr�rsr�c@sReZdZdZdd�Zdd�Zedd��Zedd	��Zd
S)�Commentrkcs8djtdg�fdd��D�dggg��S)Nr#rcsg|]}�j|��qSr)�quote)r:r;)rrrrm�s	z#Comment.__str__.<locals>.<listcomp>�))r$r@)rr)rrr%�s
		zComment.__str__cCsG|jdkrt|�St|�jdd�jdd�jdd�S)Nrkrz\\rz\(r�z\))rGr
r)rrrrrr��s

z
Comment.quotecCsdjdd�|D��S)Nr#css|]}t|�VqdS)N)r
)r:r;rrrr<�sz"Comment.content.<locals>.<genexpr>)r$)rrrrrl�szComment.contentcCs
|jgS)N)rl)rrrrrM�szComment.commentsN)	r1r2r3rGr%r�rhrlrMrrrrr�~s
r�c@sLeZdZdZedd��Zedd��Zedd��ZdS)	�AddressListzaddress-listcCsdd�|D�S)NcSs%g|]}|jdkr|�qS)�address)rG)r:r;rrrrm�s	z)AddressList.addresses.<locals>.<listcomp>r)rrrr�	addresses�szAddressList.addressescCstdd�|D�g�S)Ncss'|]}|jdkr|jVqdS)r�N)rG�	mailboxes)r:r;rrrr<�sz(AddressList.mailboxes.<locals>.<genexpr>)r@)rrrrr��szAddressList.mailboxescCstdd�|D�g�S)Ncss'|]}|jdkr|jVqdS)r�N)rG�
all_mailboxes)r:r;rrrr<�sz,AddressList.all_mailboxes.<locals>.<genexpr>)r@)rrrrr��szAddressList.all_mailboxesN)r1r2r3rGrhr�r�r�rrrrr��sr�c@sLeZdZdZedd��Zedd��Zedd��ZdS)	�Addressr�cCs"|djdkr|djSdS)Nr�group)rG�display_name)rrrrr��szAddress.display_namecCs@|djdkr|dgS|djdkr5gS|djS)Nr�mailboxzinvalid-mailbox)rGr�)rrrrr��s
zAddress.mailboxescCsG|djdkr|dgS|djdkr<|dgS|djS)Nrr�zinvalid-mailbox)rGr�)rrrrr��s
zAddress.all_mailboxesN)r1r2r3rGrhr�r�r�rrrrr��sr�c@s:eZdZdZedd��Zedd��ZdS)�MailboxListzmailbox-listcCsdd�|D�S)NcSs%g|]}|jdkr|�qS)r�)rG)r:r;rrrrm�s	z)MailboxList.mailboxes.<locals>.<listcomp>r)rrrrr��szMailboxList.mailboxescCsdd�|D�S)NcSs%g|]}|jdkr|�qS)r��invalid-mailbox)r�r�)rG)r:r;rrrrm�s	z-MailboxList.all_mailboxes.<locals>.<listcomp>r)rrrrr��szMailboxList.all_mailboxesN)r1r2r3rGrhr�r�rrrrr��sr�c@s:eZdZdZedd��Zedd��ZdS)�	GroupListz
group-listcCs)|s|djdkrgS|djS)Nrzmailbox-list)rGr�)rrrrr��szGroupList.mailboxescCs)|s|djdkrgS|djS)Nrzmailbox-list)rGr�)rrrrr��szGroupList.all_mailboxesN)r1r2r3rGrhr�r�rrrrr��sr�c@sLeZdZdZedd��Zedd��Zedd��ZdS)	�Groupr�cCs"|djdkrgS|djS)N�z
group-list)rGr�)rrrrr��szGroup.mailboxescCs"|djdkrgS|djS)Nr�z
group-list)rGr�)rrrrr��szGroup.all_mailboxescCs|djS)Nr)r�)rrrrr��szGroup.display_nameN)r1r2r3rGrhr�r�r�rrrrr��sr�c@speZdZdZedd��Zedd��Zedd��Zedd	��Zed
d��Z	dS)
�NameAddrz	name-addrcCs!t|�dkrdS|djS)Nr'r)r(r�)rrrrr��szNameAddr.display_namecCs|djS)Nr'rJ)�
local_part)rrrrr�szNameAddr.local_partcCs|djS)Nr'rJ)�domain)rrrrr�szNameAddr.domaincCs|djS)Nr'rJ)�route)rrrrr�
szNameAddr.routecCs|djS)Nr'rJ)�	addr_spec)rrrrr�szNameAddr.addr_specN)
r1r2r3rGrhr�r�r�r�r�rrrrr��sr�c@s^eZdZdZedd��Zedd��Zedd��Zedd	��Zd
S)�	AngleAddrz
angle-addrcCs+x$|D]}|jdkr|jSqWdS)Nz	addr-spec)rGr�)rr;rrrr�s
zAngleAddr.local_partcCs+x$|D]}|jdkr|jSqWdS)Nz	addr-spec)rGr�)rr;rrrr�s
zAngleAddr.domaincCs+x$|D]}|jdkr|jSqWdS)Nz	obs-route)rG�domains)rr;rrrr�#s
zAngleAddr.routecCs/x(|D]}|jdkr|jSqWdSdS)Nz	addr-specz<>)rGr�)rr;rrrr�)s
zAngleAddr.addr_specN)	r1r2r3rGrhr�r�r�r�rrrrr�s
r�c@s(eZdZdZedd��ZdS)�ObsRoutez	obs-routecCsdd�|D�S)NcSs(g|]}|jdkr|j�qS)r�)rGr�)r:r;rrrrm8s	z$ObsRoute.domains.<locals>.<listcomp>r)rrrrr�6szObsRoute.domainsN)r1r2r3rGrhr�rrrrr�2sr�c@speZdZdZedd��Zedd��Zedd��Zedd	��Zed
d��Z	dS)
�Mailboxr�cCs"|djdkr|djSdS)Nrz	name-addr)rGr�)rrrrr�?szMailbox.display_namecCs|djS)Nr)r�)rrrrr�DszMailbox.local_partcCs|djS)Nr)r�)rrrrr�HszMailbox.domaincCs"|djdkr|djSdS)Nrz	name-addr)rGr�)rrrrr�Lsz
Mailbox.routecCs|djS)Nr)r�)rrrrr�QszMailbox.addr_specN)
r1r2r3rGrhr�r�r�r�r�rrrrr�;sr�c@s:eZdZdZedd��ZeZZZZ	dS)�InvalidMailboxzinvalid-mailboxcCsdS)Nr)rrrrr�ZszInvalidMailbox.display_nameN)
r1r2r3rGrhr�r�r�r�r�rrrrr�Vsr�cs.eZdZdZe�fdd��Z�S)�Domainr�csdjt�jj��S)Nr#)r$r5r�split)r)r9rrr�esz
Domain.domain)r1r2r3rGrhr�rr)r9rr�asr�c@seZdZdZdS)�DotAtomzdot-atomN)r1r2r3rGrrrrr�jsr�c@seZdZdZdS)�DotAtomTextz
dot-atom-textN)r1r2r3rGrrrrr�osr�c@s^eZdZdZedd��Zedd��Zedd��Zedd	��Zd
S)�AddrSpecz	addr-speccCs|djS)Nr)r�)rrrrr�xszAddrSpec.local_partcCs!t|�dkrdS|djS)N�r'rJ)r(r�)rrrrr�|szAddrSpec.domaincCsJt|�dkr|djS|djj�|dj|djj�S)Nr�rr'r�)r(r�rstrip�lstrip)rrrrr�szAddrSpec.valuecCsht|j�}t|�t|t�kr=t|j�}n	|j}|jdk	rd|d|jS|S)N�@)�setr�r(�
DOT_ATOM_ENDSrr�)rZnamesetZlprrrr��s	zAddrSpec.addr_specN)	r1r2r3rGrhr�r�rr�rrrrr�ts
r�c@seZdZdZdS)�ObsLocalPartzobs-local-partN)r1r2r3rGrrrrr��sr�cs@eZdZdZedd��Ze�fdd��Z�S)�DisplayNamezdisplay-namecCs�t|�}|djdkr/|jd�n5|ddjdkrdt|ddd��|d<|djdkr�|j�n5|ddjdkr�t|ddd��|d	<|jS)
NrrIr'rJrJrJrJrJrJ)r4rGrHr)rrTrrrr��s
zDisplayName.display_namecs�d}|jrd}n&x#|D]}|jdkrd}qW|r�d}}|djdksx|ddjdkr~d}|d	jdks�|d
djdkr�d}|t|j�|St�jSdS)NFTz
quoted-stringr#rrIrjr'rJrJrJ)r6rGrr�r5r)rr�r;�preZpost)r9rrr�s		


**zDisplayName.value)r1r2r3rGrhr�rrr)r9rr��sr�c@s:eZdZdZedd��Zedd��ZdS)�	LocalPartz
local-partcCs-|djdkr|djS|djSdS)Nrz
quoted-string)rGr�r)rrrrr�szLocalPart.valuecCstg}t}d}x�|dtgD]�}|jdkr?q'|r�|jdkr�|djdkr�t|dd��|d<t|t�}|r�|jdkr�|djdkr�|jt|dd���n
|j|�|d	}|}q'Wt|dd
��}|jS)NFrrI�dotr'rJrJrJrJrJ)�DOTrGr4rXrr)rrTZlastZ
last_is_tl�tokZis_tlrrrr��s$	 


zLocalPart.local_partN)r1r2r3rGrhrr�rrrrr��sr�cs@eZdZdZe�fdd��Zedd��Z�S)�
DomainLiteralzdomain-literalcsdjt�jj��S)Nr#)r$r5rr�)r)r9rrr��szDomainLiteral.domaincCs+x$|D]}|jdkr|jSqWdS)N�ptext)rGr)rr;rrr�ip�s
zDomainLiteral.ip)r1r2r3rGrhr�r�rr)r9rr��sr�c@s"eZdZdZdZdZdS)�MIMEVersionzmime-versionN)r1r2r3rG�major�minorrrrrr��sr�c@sLeZdZdZdZdZdZedd��Zedd��Z	dS)	�	Parameter�	parameterFzus-asciicCs|jr|djSdS)Nr'r)�	sectioned�number)rrrr�section_numberszParameter.section_numbercCs�xz|D]r}|jdkr#|jS|jdkrxD|D]<}|jdkr9x$|D]}|jdkrU|jSqUWq9WqWdS)Nrz
quoted-stringzbare-quoted-stringr#)rGr�)rr,rrr�param_values


zParameter.param_valueN)
r1r2r3rGr��extendedrSrhr�r�rrrrr��sr�c@seZdZdZdS)�InvalidParameterzinvalid-parameterN)r1r2r3rGrrrrr�sr�c@s(eZdZdZedd��ZdS)�	Attribute�	attributecCs.x'|D]}|jjd�r|jSqWdS)N�attrtext)rG�endswithr)rr,rrrr�s
zAttribute.stripped_valueN)r1r2r3rGrhr�rrrrr�sr�c@seZdZdZdZdS)�Section�sectionN)r1r2r3rGr�rrrrr�$sr�c@s(eZdZdZedd��ZdS)�ValuercCsC|d}|jdkr#|d}|jjd�r<|jS|jS)NrrIr'�
quoted-stringr��extended-attribute)r�r�r�)rGr�r�r)rr,rrrr�.s

		zValue.stripped_valueN)r1r2r3rGrhr�rrrrr�*sr�c@s4eZdZdZedd��Zdd�ZdS)�MimeParameterszmime-parametersccs�t�}x||D]t}|jjd�s+q|djdkrAq|djj�}||krjg||<||j|j|f�qWx|j�D]�\}}t|dt	d��}|dd}|j
}|jr1t|�dkr1|dddkr1|ddj
jtjd��|dd�}g}d}x/|D]'\}	}
|	|kr�|
js�|
j
jtjd��qDn|
j
jtjd��|d7}|
j}|
jr^ytjj|�}Wn*tk
r�tjj|d	d
�}YncXy|j|d�}Wn$tk
r8|jdd�}YnXtj|�r^|
j
jtj��|j|�qDWd
j|�}||fVq�WdS)Nr�rr��keyr'z.duplicate parameter name; duplicate(s) ignoredz+duplicate parameter name; duplicate ignoredz(inconsistent RFC2231 parameter numberingr]zlatin-1�surrogateescapezus-asciir#)rrGr�r�striprr��items�sortedrrSr�r(r6r�InvalidHeaderDefectr��urllib�parseZunquote_to_bytesr[�unquote�decode�LookupErrorr�_has_surrogatesrYr$)r�paramsr,�namerEZfirst_paramrSZvalue_partsr|r��paramrrrrr�=sZ	

	
	


		

zMimeParameters.paramscCsvg}xL|jD]A\}}|rD|jdj|t|���q|j|�qWdj|�}|rrd|SdS)Nz{}={}z; rjr#)r�rr=rr$)rr�r�rrrrr%�s"zMimeParameters.__str__N)r1r2r3rGrhr�r%rrrrr�9sFr�c@s4eZdZedd��Zedd��ZdS)�ParameterizedHeaderValuecCs1x*t|�D]}|jdkr
|jSq
WiS)Nzmime-parameters)�reversedrGr�)rr,rrrr��szParameterizedHeaderValue.paramscCsB|r5|djdkr5t|dd�|d�St|�jS)Nr'zmime-parametersrJrJrJ)rGr4rE)rrrrrE�szParameterizedHeaderValue.partsN)r1r2r3rhr�rErrrrr��sr�c@s"eZdZdZdZdZdS)�ContentTypezcontent-type�textZplainN)r1r2r3rG�maintype�subtyperrrrr��sr�c@seZdZdZdZdS)�ContentDispositionzcontent-dispositionN)r1r2r3rG�content_dispositionrrrrr��sr�c@seZdZdZdZdS)�ContentTransferEncodingzcontent-transfer-encodingZ7bitN)r1r2r3rGr�rrrrr��sr�c@seZdZdZdS)�HeaderLabelzheader-labelN)r1r2r3rGrrrrr��sr�c@s"eZdZdZdd�ZdS)�Header�headercCs�|jt|jd���t|jd�|_|djdkrZt|jd��nd|_|jd�}|r�td��|j	|�dS)NrrIr#zMalformed Header token list)
rr
rHr(rrrGr�
ValueErrorr+)rrO�restrrrr+�s1zHeader._foldN)r1r2r3rGr+rrrrr��sr�cs�eZdZ�fdd�Z�fdd�Zedd��Zd�fdd	�Zd
d�Zdd
�Z	dd�Z
edd��Zdd�Zdd�Z
�S)�Terminalcs+t�j||�}||_g|_|S)N)r5�__new__rGr6)�clsrrGr)r9rrr��s		zTerminal.__new__csdj|jjt�j��S)Nz{}({}))r=r9r1r5r>)r)r9rrr>�szTerminal.__repr__cCs
t|j�S)N)�listr6)rrrrr?�szTerminal.all_defectsr#csIdj||jj|jt�j�|js3dndj|j��gS)Nz
{}{}/{}({}){}r#z {})r=r9r1rGr5r>r6)rra)r9rrrc�s	zTerminal._ppcCsJt|�}y|jd�|SWn"tk
rEtj||�SYnXdS)Nzus-ascii)r
rRr[rQ)rrSrrrrrrV�s

zTerminal.cte_encodecCsdS)Nr)rrrrrB�szTerminal.pop_trailing_wscCsdS)Nr)rrrrr*�szTerminal.pop_leading_fwscCsgS)Nr)rrrrrM�szTerminal.commentscCsdS)NFr)rrrrrL�szTerminal.has_leading_commentcCst|�|jfS)N)r
rG)rrrr�__getnewargs__szTerminal.__getnewargs__)r1r2r3r�r>rhr?rcrVrBr*rMrLr�rr)r9rr��s	r�c@s4eZdZedd��Zdd�ZdZdS)�WhiteSpaceTerminalcCsdS)Nrjr)rrrrrszWhiteSpaceTerminal.valuecCsdS)NTr)rrrrrA
sz!WhiteSpaceTerminal.startswith_fwsTN)r1r2r3rhrrAr)rrrrr�sr�c@s@eZdZedd��Zdd�ZdZdd�ZdS)	�
ValueTerminalcCs|S)Nr)rrrrrszValueTerminal.valuecCsdS)NFr)rrrrrAszValueTerminal.startswith_fwsFcCstjt|�|�S)N)rQrRr
)rrSrrrrUszValueTerminal.as_encoded_wordN)r1r2r3rhrrAr)rUrrrrr�sr�c@sFeZdZedd��Zedd��Zdd�ZdZdS)	�EWWhiteSpaceTerminalcCsdS)Nr#r)rrrrr!szEWWhiteSpaceTerminal.valuecCs|dd�S)Nr)rrrrr�%szEWWhiteSpaceTerminal.encodedcCsdS)Nr#r)rrrrr%)szEWWhiteSpaceTerminal.__str__TN)r1r2r3rhrr�r%r)rrrrr�sr�r��,zlist-separatorr�zroute-component-markerz([{}]+)r#z[^{}]+rz\\�]z\]z[\x00-\x20\x7F]cCsWt|�}|r+|jjtj|��tj|�rS|jjtjd��dS)Nz*Non-ASCII characters found in header token)�_non_printable_finderr6rrZNonPrintableDefectrr�rY)�xtextZnon_printablesrrr�_validate_xtextWsr�cCs�t|d�^}}g}d}d}x�tt|��D]e}||dkrn|red}d}n	d}q:|r}d}n|||kr�P|j||�q:W|d}dj|�dj||d�g|�|fS)Nr'FrTr#)�
_wsp_splitter�ranger(rr$)r�endcharsZfragmentr{Zvchars�escape�had_qp�posrrr�_get_ptext_to_endcharsas$			
rcCs?|j�}t|dt|�t|��d�}||fS)NrF)r�r�r()rZnewvaluerFrrr�get_fwss)rc
Cs<t�}|jd�s0tjdj|���|dd�jdd�^}}||dd�kr�tjdj|���dj|�}t|�dkr�|dtkr�|dtkr�|jdd�^}}|d|}t|j��dkr|j	j
tjd��||_dj|�}y't
jd|d�\}}}}	Wn-tk
r�tjd	j|j���YnX||_||_|j	j|	�x�|r1|dtkr�t|�\}
}|j
|
�q�t|d�^}}t|d
�}t|�|j
|�dj|�}q�W||fS)Nz=?z"expected encoded word but found {}r�z?=r'r#rzwhitespace inside encoded wordz!encoded word format invalid: '{}'�vtext)r��
startswithr�HeaderParseErrorr=r�r$r(rr6rr�r�rQr�r�rSr�r�WSPrr�r�r�)
rZewr�r{Zremstrr�r�rSr�r6r,�charsrrrr�get_encoded_word�sH	"2
	'
			


rcCsot�}x_|rj|dtkrDt|�\}}|j|�q|jd�ryt|�\}}Wntjk
r�Yn�Xd}t|�dkr�|dj	dkr�|j
jtjd��d}|r
t|�dkr
|d
j	d	kr
t|dd�|d<|j|�qt
|d�^}}t|d
�}t|�|j|�dj|�}qW|S)Nrz=?Tr'rFz&missing whitespace before encoded wordFr�zencoded-wordrr#rJ���rJrJ)rnrrrrrrrr(rGr6r�r�r�r�r�r$)rror,Zhave_wsr�r{rrrrrp�s:		




rpcCs;t|d�\}}}t|d�}t|�||fS)Nz()r�)rr�r�)rr��_rrr�get_qp_ctext�s
r
cCs;t|d�\}}}t|d�}t|�||fS)Nrr�)rr�r�)rr�r	rrr�get_qcontent�s

rcCsot|�}|s*tjdj|���|j�}|t|�d�}t|d�}t|�||fS)Nzexpected atext but found '{}'�atext)�_non_atom_end_matcherrrr=r�r(r�r�)r�mrrrr�	get_atext
s
rcCsQ|ddkr(tjdj|���t�}|dd�}x�|r|ddkr|dtkrt|�\}}n�|dd�dkr�y/t|�\}}|jjtj	d��Wqtjk
r�t
|�\}}YqXnt
|�\}}|j|�qDW|s=|jjtj	d��||fS||dd�fS)	Nrrzexpected '"' but found '{}'r'r�z=?z!encoded word inside quoted stringz"end of header inside quoted string)rrr=r�rrrr6rr�r)rZbare_quoted_stringr,rrr�get_bare_quoted_strings,	

rcCs
|r.|ddkr.tjdj|���t�}|dd�}x�|r�|ddkr�|dtkr�t|�\}}n7|ddkr�t|�\}}nt|�\}}|j|�qJW|s�|j	jtj
d��||fS||dd�fS)Nrrzexpected '(' but found '{}'r'r�zend of header inside comment)rrr=r�rr�get_commentr
rr6r�)rrkr,rrrr<s"	

rcCstt�}x^|ri|dtkri|dtkrGt|�\}}nt|�\}}|j|�qW||fS)Nr)r~�CFWS_LEADERrrrr)rrIr,rrr�get_cfwsUs	rcCs�t�}|r>|dtkr>t|�\}}|j|�t|�\}}|j|�|r�|dtkr�t|�\}}|j|�||fS)Nr)r�rrrr)rZ
quoted_stringr,rrr�get_quoted_stringbs	


rcCst�}|r>|dtkr>t|�\}}|j|�|rl|dtkrltjdj|���|jd�r�yt	|�\}}Wq�tjk
r�t
|�\}}Yq�Xnt
|�\}}|j|�|r|dtkrt|�\}}|j|�||fS)Nrzexpected atom but found '{}'z=?)r�rrr�	ATOM_ENDSrrr=rrr)rr�r,rrr�get_atomts$	


rcCs�t�}|s |dtkr8tjdj|���xl|r�|dtkr�t|�\}}|j|�|r;|ddkr;|jt�|dd�}q;W|dtkr�tjdjd|���||fS)Nrz8expected atom at a start of dot-atom-text but found '{}'r	r'z4expected atom at end of dot-atom-text but found '{}'rJ)r�rrrr=rrr�)rZ
dot_atom_textr,rrr�get_dot_atom_text�s	

rcCs�t�}|dtkr8t|�\}}|j|�|jd�r�yt|�\}}Wq�tjk
r�t|�\}}Yq�Xnt|�\}}|j|�|r�|dtkr�t|�\}}|j|�||fS)Nrz=?)	r�rrrrrrrr)rZdot_atomr,rrr�get_dot_atom�s	


rcCs�|dtkr%t|�\}}nd}|ddkrPt|�\}}n=|dtkr{tjdj|���nt|�\}}|dk	r�|g|dd�<||fS)Nrrz1Expected 'atom' or 'quoted-string' but found '{}')rrr�SPECIALSrrr=r)r�leaderr,rrr�get_word�srcCsIt�}y#t|�\}}|j|�Wn.tjk
r\|jjtjd��YnXx�|r>|dtkr>|ddkr�|jt�|jjtj	d��|dd�}q`yt|�\}}WnVtjk
r-|dt
kr&t|�\}}|jjtj	d��n�YnX|j|�q`W||fS)Nzphrase does not start with wordrr	zperiod in 'phrase'r'zcomment found without atom)rxrrrrr6r��PHRASE_ENDSr��ObsoleteHeaderDefectrr)rryr,rrr�
get_phrase�s.	


rcCs�t�}d}|dtkr1t|�\}}|sOtjdj|���yt|�\}}Wnotjk
r�yt|�\}}WnAtjk
r�|ddkr�|dtkr��t	�}YnXYnX|dk	r�|g|dd�<|j
|�|r�|ddks)|dtkr�tt|�|�\}}|j
dkrp|jj
tjd��n|jj
tjd��||d<y|jjd�Wn+tk
r�|jj
tjd��YnX||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)rWz)local-part contains non-ASCII characters))r�rrrrr=rrrr4r�get_obs_local_partr
rGr6r�rrrRr[ZNonASCIILocalPartDefect)rr�rr,�obs_local_partrrr�get_local_partsB	 
&



r!cCsHt�}d}xv|r�|ddks8|dtkr�|ddkr�|rg|jjtjd��|jt�d}|dd�}qn\|ddkr�|jt|dd��|dd�}|jjtjd	��d}q|r|djd
kr|jjtjd��yt	|�\}}d}Wn:tj
k
rv|dtkr`�t|�\}}YnX|j|�qW|djd
ks�|djdkr�|djd
kr�|jjtjd
��|djd
ks|djdkr,|djd
kr,|jjtjd��|jr>d|_||fS)NFrrr	zinvalid repeated '.'Tr'zmisplaced-specialz/'\' character outside of quoted-string/ccontentr�zmissing '.' between wordsrIz!Invalid leading '.' in local partr�z"Invalid trailing '.' in local partzinvalid-obs-local-partrJrJrJr)
r�rr6rrr�r�r�rGrrrr)rr Zlast_non_ws_was_dotr,rrrr'sV	)







		rcCsZt|d�\}}}t|d�}|rF|jjtjd��t|�||fS)Nz[]r�z(quoted printable found in domain-literal)rr�r6rrrr�)rr�r�rrr�	get_dtextVs

r"cCs:|r
dS|jtjd��|jtdd��dS)NFz"end of input inside domain-literalr�zdomain-literal-endT)rrr�r�)r�domain_literalrrr�_check_for_early_dl_endjs
r$cCs�t�}|dtkr8t|�\}}|j|�|sMtjd��|ddkrutjdj|���|dd�}t||�r�||fS|jtdd��|dt	kr�t
|�\}}|j|�t|�\}}|j|�t||�r||fS|dt	krJt
|�\}}|j|�t||�rc||fS|ddkr�tjdj|���|jtdd	��|dd�}|r�|dtkr�t|�\}}|j|�||fS)
Nrzexpected domain-literal�[z6expected '[' at start of domain-literal but found '{}'r'zdomain-literal-startr�z4expected ']' at end of domain-literal but found '{}'zdomain-literal-end)r�rrrrrr=r$r�rrr")rr#r,rrr�get_domain_literalrsD	







r&cCs�t�}d}|dtkr1t|�\}}|sOtjdj|���|ddkr�t|�\}}|dk	r�|g|dd�<|j|�||fSyt|�\}}Wn'tjk
r�t	|�\}}YnX|r|ddkrtjd��|dk	r+|g|dd�<|j|�|r�|ddkr�|j
jtjd��|djdkr�|d|dd�<xP|r�|ddkr�|jt
�t	|d	d��\}}|j|�q�W||fS)
Nrzexpected domain but found '{}'r%r�zInvalid Domainr	z(domain is not a dot-atom (contains CFWS)zdot-atomr')r�rrrrr=r&rrrr6rrGr�)rr�rr,rrr�
get_domain�s@	




r'cCs�t�}t|�\}}|j|�|s?|ddkrb|jjtjd��||fS|jtdd��t|dd��\}}|j|�||fS)Nrr�z"add-spec local part with no domainzaddress-at-symbolr')r�r!rr6rr�r�r')rr�r,rrr�
get_addr_spec�s	



r(cCst�}x�|r�|ddks2|dtkr�|dtkrdt|�\}}|j|�q|ddkr|jt�|dd�}qW|s�|ddkr�tjdj|���|jt�t	|dd��\}}|j|�x�|r�|ddkr�|jt�|dd�}|s7P|dtkrft|�\}}|j|�|ddkr�|jt�t	|dd��\}}|j|�q�W|s�tjd��|ddkr�tjdj|���|jt
dd	��||dd�fS)
Nrr�r'r�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)r�rrr�
ListSeparatorrrr=�RouteComponentMarkerr'r�)rZ	obs_router,rrr�
get_obs_route�sB	)





r,cCs6t�}|dtkr8t|�\}}|j|�|sO|ddkrgtjdj|���|jtdd��|dd�}|ddkr�|jtdd��|jjtj	d��|dd�}||fSyt
|�\}}Wn�tjk
r�y/t|�\}}|jjtjd	��Wn-tjk
rmtjd
j|���YnX|j|�t
|�\}}YnX|j|�|r�|ddkr�|dd�}n|jjtj	d��|jtdd��|r,|dtkr,t|�\}}|j|�||fS)Nr�<z"expected angle-addr but found '{}'zangle-addr-startr'�>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)
r�rrrrrr=r�r6r�r(r,r)rZ
angle_addrr,rrr�get_angle_addr�sJ	






r/cCsRt�}t|�\}}|j|dd��|jdd�|_||fS)N)r�rrr6)rr�r,rrr�get_display_name&s
	r0cCs5t�}d}|dtkrOt|�\}}|sOtjdj|���|ddkr�|dtkr�tjdj|���t|�\}}|s�tjdj|���|dk	r�|g|ddd�<d}|j|�t	|�\}}|dk	r|g|dd�<|j|�||fS)Nrz!expected name-addr but found '{}'r-)
r�rrrrr=rr0rr/)rZ	name_addrrr,rrr�
get_name_addr5s0	

r1cCs�t�}yt|�\}}Wn[tjk
r|yt|�\}}Wn-tjk
rwtjdj|���YnXYnXtdd�|jD��r�d|_|j	|�||fS)Nzexpected mailbox but found '{}'css!|]}t|tj�VqdS)N)rXrr�)r:r;rrrr<bszget_mailbox.<locals>.<genexpr>zinvalid-mailbox)
r�r1rrr(r=r\r?rGr)rr�r,rrr�get_mailboxSs		
r2cCs�t�}xv|r�|d|kr�|dtkr_|jt|dd��|dd�}qt|�\}}|j|�qW||fS)Nrzmisplaced-specialr')r�rrr�r)rr�Zinvalid_mailboxr,rrr�get_invalid_mailboxhs	
r3cCsMt�}x7|rB|ddkrBy#t|�\}}|j|�Wn`tjk
r�d}|dtkrt|�\}}|s�|ddkr�|j|�|jjtjd��q�t	|d�\}}|dk	r�|g|dd�<|j|�|jjtj
d��n�|ddkrI|jjtjd��nZt	|d�\}}|dk	r}|g|dd�<|j|�|jjtj
d��YnX|r|ddkr|d	}d|_t	|d�\}}|j|�|jjtj
d��|r|ddkr|jt
�|dd�}qW||fS)
Nr�;z,;zempty element in mailbox-listzinvalid mailbox in mailbox-listr�r'zinvalid-mailboxrJ)r�r2rrrrrr6rr3r�rGrr*)rZmailbox_listr,rr�rrr�get_mailbox_listzsN	






	


r5cCsct�}|s2|jjtjd��||fSd}|r�|dtkr�t|�\}}|s�|jjtjd��|j|�||fS|ddkr�|j|�||fSt|�\}}t|j	�dkr-|dk	r�|j|�|j
|�|jjtjd��||fS|dk	rL|g|dd�<|j|�||fS)Nzend of header before group-listrzend of header in group-listr4zgroup-list with empty entries)r�r6rrr�rrr5r(r�rr)rZ
group_listrr,rrr�get_group_list�s8	











r6cCs�t�}t|�\}}|s2|ddkrJtjdj|���|j|�|jtdd��|dd�}|r�|ddkr�|jtdd��||dd�fSt|�\}}|j|�|s�|jjtj	d��|ddkr#tjd	j|���|jtdd��|dd�}|r~|dt
kr~t|�\}}|j|�||fS)
Nrr)z8expected ':' at end of group display name but found '{}'zgroup-display-name-terminatorr'r4zgroup-terminatorzend of header in groupz)expected ';' at end of group but found {})r�r0rrr=rr�r6r6r�rr)rr�r,rrr�	get_group�s2	



r7cCs�t�}yt|�\}}Wn[tjk
r|yt|�\}}Wn-tjk
rwtjdj|���YnXYnX|j|�||fS)Nzexpected address but found '{}')r�r7rrr2r=r)rr�r,rrr�get_address�s	
r8cCs_t�}xI|rTy#t|�\}}|j|�Wn�tjk
r�}zbd}|dtkrt|�\}}|s�|ddkr�|j|�|jjtjd��q�t	|d�\}}|dk	r�|g|dd�<|jt
|g��|jjtjd��n�|ddkrG|jjtjd��nct	|d�\}}|dk	r{|g|dd�<|jt
|g��|jjtjd��WYdd}~XnX|r%|ddkr%|d	d}d|_t	|d�\}}|j
|�|jjtjd��|r|jtdd��|dd�}qW||fS)
Nrr�z"address-list entry with no contentzinvalid address in address-listzempty element in address-listr'zinvalid-mailboxzlist-separatorrJ)r�r8rrrrrr6rr3r�r�rGrr�)rZaddress_listr,�errrr�rrr�get_address_list	sN
		



	

r:cCsst�}|s,|jjtjd��|S|dtkrzt|�\}}|j|�|sz|jjtjd��d}xH|r�|ddkr�|dtkr�||d7}|dd�}q�W|j�s|jjtjdj	|���|jt
|d��n%t|�|_|jt
|d	��|rl|dtkrlt|�\}}|j|�|s�|ddkr�|jdk	r�|jjtjd
��|r�|jt
|d��|S|jt
dd��|dd�}|r&|dtkr&t|�\}}|j|�|sX|jdk	rT|jjtjd
��|Sd}x8|r�|dtkr�||d7}|dd�}qaW|j�s�|jjtjdj	|���|jt
|d��n%t|�|_
|jt
|d	��|r:|dtkr:t|�\}}|j|�|ro|jjtjd
��|jt
|d��|S)Nz%Missing MIME version number (eg: 1.0)rz0Expected MIME version number but found only CFWSr#r	r'z1Expected MIME major version number but found {!r}r��digitsz0Incomplete MIME version; found only major numberzversion-separatorz1Expected MIME minor version number but found {!r}z'Excess non-CFWS text after MIME version)r�r6rr�HeaderMissingRequiredValuerr�isdigitr�r=r��intr�r�)rZmime_versionr,r;rrr�parse_mime_versionQ	sv	


)





r?cCs�t�}xv|r�|ddkr�|dtkr_|jt|dd��|dd�}qt|�\}}|j|�qW||fS)Nrr4zmisplaced-specialr')r�rrr�r)rZinvalid_parameterr,rrr�get_invalid_parameter�	s	
r@cCsot|�}|s*tjdj|���|j�}|t|�d�}t|d�}t|�||fS)Nzexpected ttext but found '{}'�ttext)�_non_token_end_matcherrrr=r�r(r�r�)rrrArrr�	get_ttext�	s	
rCcCs�t�}|r>|dtkr>t|�\}}|j|�|rl|dtkrltjdj|���t|�\}}|j|�|r�|dtkr�t|�\}}|j|�||fS)Nrzexpected token but found '{}')	r�rrr�
TOKEN_ENDSrrr=rC)rZmtokenr,rrr�	get_token�	s		


rEcCsot|�}|s*tjdj|���|j�}|t|�d�}t|d�}t|�||fS)Nz expected attrtext but found {!r}r�)�_non_attribute_end_matcherrrr=r�r(r�r�)rrr�rrr�get_attrtext�	s	
rGcCs�t�}|r>|dtkr>t|�\}}|j|�|rl|dtkrltjdj|���t|�\}}|j|�|r�|dtkr�t|�\}}|j|�||fS)Nrzexpected token but found '{}')	r�rrr�ATTRIBUTE_ENDSrrr=rG)rr�r,rrr�
get_attribute�	s		


rIcCsot|�}|s*tjdj|���|j�}|t|�d�}t|d�}t|�||fS)Nz)expected extended attrtext but found {!r}zextended-attrtext)�#_non_extended_attribute_end_matcherrrr=r�r(r�r�)rrr�rrr�get_extended_attrtext�	s
rKcCs�t�}|r>|dtkr>t|�\}}|j|�|rl|dtkrltjdj|���t|�\}}|j|�|r�|dtkr�t|�\}}|j|�||fS)Nrzexpected token but found '{}')	r�rrr�EXTENDED_ATTRIBUTE_ENDSrrr=rK)rr�r,rrr�get_extended_attribute
s	


rMcCs3t�}|s |ddkr8tjdj|���|jtdd��|dd�}|sv|dj�r�tjdj|���d}x8|r�|dj�r�||d7}|dd�}q�W|ddkr|dkr|jjtjd	��t	|�|_
|jt|d
��||fS)Nr�*zExpected section but found {}zsection-markerr'z$Expected section number but found {}r#�0z&section numberhas an invalid leading 0r;)r�rrr=rr�r=r6ZInvalidHeaderErrorr>r�)rr�r;rrr�get_section#
s$		rPcCs�t�}|stjd��d}|dtkrFt|�\}}|sdtjdj|���|ddkr�t|�\}}nt|�\}}|dk	r�|g|dd�<|j|�||fS)Nz&Expected value but found end of stringrz Expected value but found only {}r)	r�rrrrr=rrMr)r�vrr,rrr�	get_valueA
s 	
rRcCs�t�}t|�\}}|j|�|s?|ddkrk|jjtjdj|���||fS|ddkry,t|�\}}d|_|j|�Wntj	k
r�YnX|s�tj	d��|ddkr|jt
dd��|dd�}d|_|dd	kr2tj	d
��|jt
d	d��|dd�}d}|r�|dtkr�t
|�\}}|j|�d}|}|jr�|r�|ddkr�t|�\}}|j}d
}|jdkr>|r
|ddkr
d}qkt|�\}}	|	rk|	ddkrkd}n-yt|�\}}	WnYn
X|	skd}|r�|jjtjd��|j|�x4|D],}
|
jdkr�g|
dd�<|
}Pq�W|}nd}|jjtjd��|r|ddkrd}nt|�\}}|js@|jdkr�|sW|ddkr�|j|�|dk	rv|}||fS|jjtjd��|s�|jjtjd��|j|�|dkr||fSn7|dk	r1x|D]}
|
jdkr�Pq�W|
jdk|j|
�|
j|_|ddkrYtj	dj|���|jt
dd��|dd�}|r�|ddkr�t|�\}}|j|�|j|_|s�|ddkr�tj	dj|���|jt
dd��|dd�}|dk	r�t�}x�|r�|dtkrXt|�\}}nD|ddkr�t
dd�}|dd�}nt|�\}}|j|�q-W|}nt|�\}}|j|�|dk	r�|}||fS)Nrr4z)Parameter contains name ({}) but no valuerNTzIncomplete parameterzextended-parameter-markerr'�=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-attrtextr�z=Expected RFC2231 char/lang encoding delimiter, but found {!r}zRFC2231 delimiterz;Expected RFC2231 char/lang encoding delimiter, but found {}ZDQUOTE)r�rIrr6rr�r=rPr�rr�r�rrrr�r�rGrKrGrRrrSr�r�rrr)rr�r,rr{ZappendtoZqstringZinner_valueZ
semi_validr��trQrrr�
get_parameterW
s�	


		
			


	
	









			
rVcCs�t�}x�|r�y#t|�\}}|j|�Wntjk
r=}z�d}|dtkrut|�\}}|s�|j|�|S|ddkr�|dk	r�|j|�|jjtjd��nZt	|�\}}|r�|g|dd�<|j|�|jjtjdj
|���WYdd}~XnX|r�|ddkr�|d	}d|_t	|�\}}|j|�|jjtjdj
|���|r|jt
dd��|dd�}qW|S)
Nrr4zparameter entry with no contentzinvalid parameter {!r}r'zinvalid-parameterz)parameter with invalid trailing text {!r}zparameter-separatorrJ)r�rVrrrrrr6r�r@r=rGrr�)rZmime_parametersr,r9rr�rrr�parse_mime_parameters�
sD
		



&
	
rWcCs�xv|rx|ddkrx|dtkrV|jt|dd��|dd�}qt|�\}}|j|�qW|s�dS|jtdd��|jt|dd���dS)Nrr4zmisplaced-specialr'zparameter-separator)rrr�rrW)Z	tokenlistrr,rrr�_find_mime_parameterssrXcCs;t�}d}|s2|jjtjd��|Syt|�\}}WnHtjk
r�|jjtjdj|���t	||�|SYnX|j|�|s�|ddkr�|jjtjd��|r�t	||�|S|j
j�j�|_
|jtdd��|dd�}yt|�\}}WnHtjk
r�|jjtjd	j|���t	||�|SYnX|j|�|j
j�j�|_|s�|S|dd
kr|jjtjdj|���|`
|`t	||�|S|jtd
d��|jt|dd���|S)
NFz"Missing content type specificationz(Expected content maintype but found {!r}r�/zInvalid content typezcontent-type-separatorr'z'Expected content subtype but found {!r}r4z<Only parameters are valid after content type, but found {!r}zparameter-separator)r�r6rrr<rErr�r=rXrr��lowerr�r�r�rW)rZctypeZrecoverr,rrr�parse_content_type_header)sX	

	



	


r[c
Cs6t�}|s,|jjtjd��|Syt|�\}}WnHtjk
r�|jjtjdj|���t	||�|SYnX|j|�|j
j�j�|_
|s�|S|ddkr�|jjtjdj|���t	||�|S|jtdd��|jt|dd���|S)NzMissing content dispositionz+Expected content disposition but found {!r}rr4zCOnly parameters are valid after content disposition, but found {!r}zparameter-separatorr')r�r6rrr<rErr�r=rXrr�rZr�r�rW)rZdisp_headerr,rrr� parse_content_disposition_headerbs2	

	


r\cCs1t�}|s,|jjtjd��|Syt|�\}}Wn7tjk
r{|jjtjdj|���Yn&X|j|�|j	j
�j�|_|s�|Sx|r,|jjtjd��|dt
kr
|jt|dd��|dd�}q�t|�\}}|j|�q�W|S)Nz!Missing content transfer encodingz1Expected content transfer encoding but found {!r}z*Extra text after content transfer encodingrzmisplaced-specialr')r�r6rrr<rErr�r=rr�rZr�rr�r)rZ
cte_headerr,rrr�&parse_content_transfer_encoding_header�s.	

	
r])��rer��stringr�collectionsr�operatorrZemailrrQrrr�rrrrr�rZ	TSPECIALSrDZ	ASPECIALSrHrLrrr�r4rirnrxr}r~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r
r�r�r�r�r�r*r+�compiler=r$r�r�r�matchr
�findallr�rBrFrJr�rrrrpr
rrrrrrrrrrrr!rr"r$r&r'r(r,r/r0r1r2r3r5r6r7r8r:r?r@rCrErGrIrKrMrPrRrVrWrXr[r\r]rrrr�<module>Fs


T�K`		 '#
U3$000!
*8
&'/'&).9%>D�49

Filemanager

Name Type Size Permission Actions
__init__.cpython-35.opt-1.pyc File 1.72 KB 0644
__init__.cpython-35.opt-2.pyc File 1.12 KB 0644
__init__.cpython-35.pyc File 1.72 KB 0644
_encoded_words.cpython-35.opt-1.pyc File 5.9 KB 0644
_encoded_words.cpython-35.opt-2.pyc File 4.05 KB 0644
_encoded_words.cpython-35.pyc File 5.9 KB 0644
_header_value_parser.cpython-35.opt-1.pyc File 85.26 KB 0644
_header_value_parser.cpython-35.opt-2.pyc File 70.1 KB 0644
_header_value_parser.cpython-35.pyc File 85.32 KB 0644
_parseaddr.cpython-35.opt-1.pyc File 13.48 KB 0644
_parseaddr.cpython-35.opt-2.pyc File 10.58 KB 0644
_parseaddr.cpython-35.pyc File 13.48 KB 0644
_policybase.cpython-35.opt-1.pyc File 14.83 KB 0644
_policybase.cpython-35.opt-2.pyc File 6.33 KB 0644
_policybase.cpython-35.pyc File 14.83 KB 0644
base64mime.cpython-35.opt-1.pyc File 3.29 KB 0644
base64mime.cpython-35.opt-2.pyc File 1.55 KB 0644
base64mime.cpython-35.pyc File 3.29 KB 0644
charset.cpython-35.opt-1.pyc File 11.73 KB 0644
charset.cpython-35.opt-2.pyc File 5.54 KB 0644
charset.cpython-35.pyc File 11.77 KB 0644
contentmanager.cpython-35.opt-1.pyc File 7.91 KB 0644
contentmanager.cpython-35.opt-2.pyc File 7.9 KB 0644
contentmanager.cpython-35.pyc File 7.91 KB 0644
encoders.cpython-35.opt-1.pyc File 1.7 KB 0644
encoders.cpython-35.opt-2.pyc File 1.35 KB 0644
encoders.cpython-35.pyc File 1.7 KB 0644
errors.cpython-35.opt-1.pyc File 6.13 KB 0644
errors.cpython-35.opt-2.pyc File 4.63 KB 0644
errors.cpython-35.pyc File 6.13 KB 0644
feedparser.cpython-35.opt-1.pyc File 11.18 KB 0644
feedparser.cpython-35.opt-2.pyc File 9.54 KB 0644
feedparser.cpython-35.pyc File 11.35 KB 0644
generator.cpython-35.opt-1.pyc File 13.18 KB 0644
generator.cpython-35.opt-2.pyc File 9.55 KB 0644
generator.cpython-35.pyc File 13.18 KB 0644
header.cpython-35.opt-1.pyc File 17.27 KB 0644
header.cpython-35.opt-2.pyc File 11.77 KB 0644
header.cpython-35.pyc File 17.27 KB 0644
headerregistry.cpython-35.opt-1.pyc File 22.03 KB 0644
headerregistry.cpython-35.opt-2.pyc File 16.38 KB 0644
headerregistry.cpython-35.pyc File 22.09 KB 0644
iterators.cpython-35.opt-1.pyc File 1.98 KB 0644
iterators.cpython-35.opt-2.pyc File 1.37 KB 0644
iterators.cpython-35.pyc File 1.98 KB 0644
message.cpython-35.opt-1.pyc File 38.32 KB 0644
message.cpython-35.opt-2.pyc File 22.64 KB 0644
message.cpython-35.pyc File 38.32 KB 0644
parser.cpython-35.opt-1.pyc File 5.77 KB 0644
parser.cpython-35.opt-2.pyc File 2.81 KB 0644
parser.cpython-35.pyc File 5.77 KB 0644
policy.cpython-35.opt-1.pyc File 9.62 KB 0644
policy.cpython-35.opt-2.pyc File 3.54 KB 0644
policy.cpython-35.pyc File 9.62 KB 0644
quoprimime.cpython-35.opt-1.pyc File 7.92 KB 0644
quoprimime.cpython-35.opt-2.pyc File 4.52 KB 0644
quoprimime.cpython-35.pyc File 7.92 KB 0644
utils.cpython-35.opt-1.pyc File 10.21 KB 0644
utils.cpython-35.opt-2.pyc File 7.15 KB 0644
utils.cpython-35.pyc File 10.21 KB 0644