File: //lib64/python3.9/__pycache__/quopri.cpython-39.opt-1.pyc
a
    �DOgb  �                   @   s�   d Z g d�ZdZdZdZdZzddlmZmZ W n e	yJ   dZdZY n0 d	d
� Z
dd� Zddd�Zddd�Z
ddd�Zd dd�Zdd� Zdd� Zdd� Zedkr�e�  dS )!zHConversions to/from quoted-printable transport encoding as per RFC 1521.)�encode�decode�encodestring�decodestring�   =�L   s   0123456789ABCDEF�    �    )�a2b_qp�b2a_qpNc                 C   s:   | dv r|S | dkr|S | t kp8d|   ko2dkn   S )z�Decide whether a particular byte ordinal needs to be quoted.
    The 'quotetabs' flag indicates whether embedded tabs and spaces should be
    quoted.  Note that line-ending tabs and spaces are always encoded, as per
    RFC 1521.
    �    	�   _�    �   ~)�ESCAPE)�c�	quotetabs�header� r   �/usr/lib64/python3.9/quopri.py�needsquoting   s
    r   c                 C   s(   t | �} ttt| d  t| d  f� S )zQuote a single character.�   )�ordr   �bytes�HEX�r   r   r   r   �quote$   s    r   Fc           
      C   s2  t dur,| �� }t |||d�}|�|� dS |dfdd�}d}| �� }|sN�qg }	d}
|dd� dkrv|dd� }d}
|D ]D}t|f�}t|||�r�t|�}|r�|dkr�|	�d	� qz|	�|� qz|dur�||� t�	|	�}t
|�tk�r||dtd
 � dd� |td
 d� }q�|}q>|du�r.|||
d� dS )
av  Read 'input', apply quoted-printable encoding, and write to 'output'.
    'input' and 'output' are binary file objects. The 'quotetabs' flag
    indicates whether embedded tabs and spaces should be quoted. Note that
    line-ending tabs and spaces are always encoded, as per RFC 1521.
    The 'header' flag indicates whether we are encoding spaces as _ as per RFC
    1522.N�r   r   �   
c                 S   sj   | r<| dd � dv r<|� | d d� t| dd � � | � n*| dkrX|� t| �| � n|� | | � d S )N���r   �   .)�writer   )�s�output�lineEndr   r   r   r    ;   s
    (zencode.<locals>.writer   r   r
   r   �   s   =
)r#   )r
   �readr    �readliner   r   r   �append�EMPTYSTRING�join�len�MAXLINESIZE)
�inputr"