B
    0*\'              
   @   s`  d ddddddddd	g
Z d
dlZd
dlmZmZmZ dZdZdZdd e	dD Z
e
dd Ze
dd Zx,ded ed D ]Zeeee< qW deed< xdD ]Zeeee< qW dd Zdd Zdd Zdd Zd+ddZd d	 Zd!d Zd,d#dZedd Zxd$D ]Zeeee< qW d%efd&dZefd'dZeZeZd(d) Zd*d ZdS )-body_decodebody_encodebody_lengthdecodedecodestringheader_decodeheader_encodeheader_lengthquoteunquote    N)ascii_lettersdigits	hexdigitsz

 c             C   s   g | ]}d | qS )z=%02X ).0cr   r   ;C:\ALexclude\prg\programme\Python37\Lib\email\quoprimime.py
<listcomp>7   s    r      s   -!*+/ascii_ s_    !"#$%&'()*+,-./0123456789:;<>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~	c             C   s   t | t|  kS )N)chr_QUOPRI_HEADER_MAP)octetr   r   r   header_checkJ   s    r   c             C   s   t | t|  kS )N)r   _QUOPRI_BODY_MAP)r   r   r   r   
body_checkO   s    r   c             C   s   t dd | D S )Nc             s   s   | ]}t t| V  qd S )N)lenr   )r   r   r   r   r   	<genexpr>^   s    z header_length.<locals>.<genexpr>)sum)	bytearrayr   r   r   r   T   s    
c             C   s   t dd | D S )Nc             s   s   | ]}t t| V  qd S )N)r    r   )r   r   r   r   r   r!   h   s    zbody_length.<locals>.<genexpr>)r"   )r#   r   r   r   r   a   s    c             C   sf   t |tst|}| s&| |  n<t| d t| |krT| d  || 7  < n| |  d S )N)
isinstancestrr   appendlstripr    )LsmaxlenZextrar   r   r   _max_appendk   s    
r,   c             C   s   t t| dd dS )N         )r   int)r*   r   r   r   r
   v   s    c             C   s   t t|  S )N)_QUOPRI_MAPord)r   r   r   r   r	   {   s    
iso-8859-1c             C   s$   | sdS |  dt}d||f S )Nr   latin1z=?%s?q?%s?=)r   	translater   )Zheader_bytescharsetencodedr   r   r   r      s    s   
L   c             C   s  |dk rt d| s| S | t} d| }|d }g }|j}x.|  D ] }d}t|d | }	x||	kr|| }
||
d  dkr||||
d   |
d }qd||
d  dkr||||
  |
d }qd||||
 d  |
}qdW |rZ|d dkrZ||	 }|d	krt|d }n(|dkr4|d | }n|t|d  }|||d |  qH|||d   qHW | d tkr|d
 ||S )N   zmaxlinelen must be at least 4=r-   r      r$   z 	r.   r   )	
ValueErrorr5   _QUOPRI_BODY_ENCODE_MAPr'   
splitlinesr    r	   CRLFjoin)ZbodyZ
maxlineleneolZ
soft_breakZmaxlinelen1Zencoded_bodyr'   linestartZ	laststartstopZroomqr   r   r   r      sD    





c             C   s   | s| S d}x|   D ]}| }|s0||7 }qd}t|}x||k r|| }|dkrh||7 }|d7 }nv|d |kr|d7 }q>n^|d |k r||d  tkr||d  tkr|t|||d  7 }|d7 }n||7 }|d7 }||kr>||7 }q>W qW | d dkr||r|d d }|S )	Nr   r   r:   r-   r;   r.   r$   z
)r>   rstripr    r   r
   endswith)r7   rA   ZdecodedrB   inr   r   r   r   r      s8    

,
c             C   s   |  d}t|S )Nr   )groupr
   )matchr*   r   r   r   _unquote_match  s    
rL   c             C   s    |  dd} tjdt| tjdS )Nr   r   z=[a-fA-F0-9]{2})flags)replaceresubrL   ASCII)r*   r   r   r   r   #  s    )r   )r3   ) __all__rO   stringr   r   r   r?   NLZEMPTYSTRINGranger1   r   r   encoder   r   r2   r   r   r   r   r,   r
   r	   r   r=   r   r   r   r   rL   r   r   r   r   r   <module>   sN   




O0