???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................U
    e5dL!                     @   s   d dl Z d dlZd dlZd dlZd dlmZmZ d dlmZ dddddd	d
dgZ	e
e djdd Zdd ZG dd deZe Zdeed< dd Zdd Zdd Zdd Zdd	 ZeedZdd
 ZeedZeedZdddZdS )    N)ascii_lettersdigits)errorsdecode_qencode_qdecode_bencode_blen_qlen_bdecodeencodes   =([a-fA-F0-9]{2})c                 C   s   t | d S )N   )bytesfromhexgroupr   )m r   ,/usr/lib64/python3.8/email/_encoded_words.py<lambda>A       r   c                 C   s   |  dd} t| g fS )N   _    )replace_q_byte_subber)encodedr   r   r   r   C   s    c                   @   s,   e Zd Zded ed Zdd ZdS )	_QByteMaps   -!*+/asciic                 C   s.   || j krt|| |< nd|| |< | | S )Nz={:02X})safechrformat)selfkeyr   r   r   __missing__M   s    
z_QByteMap.__missing__N)__name__
__module____qualname__r   r   r   r   r"   r   r   r   r   r   I   s   r   _ c                 C   s   d dd | D S )N c                 s   s   | ]}t | V  qd S N)_q_byte_map.0xr   r   r   	<genexpr>Z   s     zencode_q.<locals>.<genexpr>)joinbstringr   r   r   r   Y   s    c                 C   s   t dd | D S )Nc                 s   s   | ]}t t| V  qd S r)   )lenr*   r+   r   r   r   r.   ]   s     zlen_q.<locals>.<genexpr>)sumr0   r   r   r   r	   \   s    c                 C   s   t | d }|r dd d|  nd}z&tj| | dd|rDt gng fW S  tjk
 r   ztj| ddt gfW  Y S  tjk
r   z,tj| d ddt t gfW  Y  Y S  tjk
r   | t gf Y  Y  Y S X Y nX Y nX d S )N   s   ===r   T)ZvalidateFs   ==)	r2   base64Z	b64decoder   ZInvalidBase64PaddingDefectbinasciiErrorZInvalidBase64CharactersDefectZInvalidBase64LengthDefect)r   Zpad_errZmissing_paddingr   r   r   r   d   s(    
c                 C   s   t | dS )Nr   )r5   Z	b64encoder   r0   r   r   r   r      s    c                 C   s&   t t| d\}}|d |r dnd S )N   r4   r   )divmodr2   )r1   Zgroups_of_3Zleftoverr   r   r   r
      s    )qbc           	   
   C   s   |  d\}}}}}|d\}}}| }|dd}t| |\}}z||}W nv tk
r   |t	d
| ||d}Y nB tk
r   |dd}| dkr|td
| Y nX ||||fS )N?*r   surrogateescapez:Encoded word contains bytes not decodable using {} charsetunknown-8bitz<Unknown charset {} in encoded word; decoded as unknown bytes)split	partitionlowerr   _cte_decodersr   UnicodeErrorappendr   ZUndecodableBytesDefectr   LookupErrorZCharsetError)	Zewr&   charsetZcteZ
cte_stringlangr1   Zdefectsstringr   r   r   r      s&    utf-8r(   c                 C   s|   |dkr|  dd}n
|  |}|d krTtd |}td |}|| dk rPdnd}t| |}|rld| }d||||S )	Nr?   r   r>   r:   r;      r=   z=?{}{}?{}?{}?=)r   _cte_encode_length_cte_encodersr   )rI   rG   encodingrH   r1   ZqlenZblenr   r   r   r   r      s    
)rJ   Nr(   )rer5   r6   	functoolsrI   r   r   Zemailr   __all__partialcompilesubr   r   dictr   r*   ordr   r	   r   r   r
   rC   r   rM   rL   r   r   r   r   r   <module>*   sJ   &+