
    =OgB              	          g d Z ddlmZ ddlZddlZddlmZ ddlmZ dZ	dZ
dZd	Zd
ZdZdZi de	e	dfde	e	dfde	e	dfde	e	dfde	e	dfde	e	dfde	e	dfde	e	dfde	e	dfde	e	dfde	e	dfde	e	dfd
dde
e
dfde
e
dfde
ddfde
ddfe
ddfe
e
dfee
dfd Zi d!dd"dd#dd$dd%dd&dd'dd(dd)dd*dd+dd,dd-dd.dd/dd0dd1ddddd2dd3d
d4Zd5d6dd7Zdd8Zd9 Zd: Zd; Z G d< d=          ZdS )>)Charset	add_aliasadd_charset	add_codec    )partialN)errors)encode_7or8bit            us-asciizunknown-8bit z
iso-8859-1z
iso-8859-2z
iso-8859-3z
iso-8859-4z
iso-8859-9ziso-8859-10ziso-8859-13ziso-8859-14ziso-8859-15ziso-8859-16zwindows-1252viscii)NNNbig5gb2312zeuc-jpiso-2022-jp	shift_jisutf-8)r   zkoi8-rr   latin_1zlatin-1latin_2zlatin-2latin_3zlatin-3latin_4zlatin-4latin_5zlatin-5latin_6zlatin-6latin_7zlatin-7latin_8zlatin-8latin_9zks_c_5601-1987zeuc-kr)zlatin-9latin_10zlatin-10cp949euc_jpeuc_krasciieucgb2312_cnbig5_tw)r   r   r   c                 V    	 |t           k    rt          d          |||ft          | <   d S )Nz!SHORTEST not allowed for body_enc)SHORTEST
ValueErrorCHARSETS)charset
header_encbody_encoutput_charsets       &/usr/lib64/python3.11/email/charset.pyr   r   j   s:    , 8<===#X~>HW    c                     	 |t           | <   d S N)ALIASES)alias	canonicals     r.   r   r      s    
 GENNNr/   c                     	 |t           | <   d S r1   )	CODEC_MAP)r*   	codecnames     r.   r   r      s     #Igr/   c                 n    |t           k    r|                     dd          S |                     |          S )Nr#   surrogateescape)UNKNOWN8BITencode)stringcodecs     r.   _encoder>      s4    }}W&7888}}U###r/   c                   J    e Zd Z	 efdZd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
S )r   c                    	 t          |t                    r|                    d           nt          |d          }n"# t          $ r t	          j        |          w xY w|                                }t                              ||          | _	        t                              | j	        t          t          d f          \  }}}|s| j	        }|| _        || _        t                              ||          | _        t                               | j	        | j	                  | _        t                               | j        | j                  | _        d S )Nr#   )
isinstancestrr;   UnicodeErrorr   CharsetErrorlowerr2   getinput_charsetr)   r'   BASE64header_encodingbody_encodingr-   r6   input_codecoutput_codec)selfrG   hencbencconvs        r.   __init__zCharset.__init__   s@   
	5--- <$$W---- #M7 ; ; 	5 	5 	5%m444	5%++--$[[FF $<<(:)164(@B BdD 	&%D#!%kk$55 %==);)-);= =%MM$*=*.*=? ?s	   ;> Ac                 4    | j                                         S r1   )rG   rE   rM   s    r.   __repr__zCharset.__repr__   s    !'')))r/   c                 f    t          |           t          |                                          k    S r1   )rB   rE   )rM   others     r.   __eq__zCharset.__eq__   s%    4yyCJJ,,....r/   c                 Z    	 | j         t          k    rdS | j         t          k    rdS t          S )Nzquoted-printablebase64)rJ   QPrH   r	   rS   s    r.   get_body_encodingzCharset.get_body_encoding   s6    	 ##%%6))8!!r/   c                      	 | j         p| j        S r1   )r-   rG   rS   s    r.   get_output_charsetzCharset.get_output_charset
  s    	
 "8d&88r/   c                     	 | j         pd}t          ||          }|                     |          }||S |                    ||          S )Nr   )rL   r>   _get_encoderheader_encode)rM   r<   r=   header_bytesencoder_modules        r.   r`   zCharset.header_encode  sY    		 !/Zvu--**<88!M++L%@@@r/   c                 ~   	 | j         pd}t          ||          }|                     |          }t          |j        |          }|                                 }t          |          t          z   }g }	g }
t          |          |z
  }|D ]}|
	                    |           t                              |
          }|                    t          ||                    }||k    r|
                                 |	s|
s|		                    d            nN|	rdnd}t                              |
          }t          ||          }|		                     ||                     |g}
t          |          |z
  }t                              |
          }t          ||          }|		                     ||                     |	S )Nr   )r*    r   )rL   r>   r_   r   r`   r]   lenRFC2047_CHROME_LENnextappendEMPTYSTRINGjoinheader_lengthpop)rM   r<   
maxlengthsr=   ra   rb   encoderr*   extralinescurrent_linemaxlen	character	this_linelength	separatorjoined_lines                    r.   header_encode_lineszCharset.header_encode_lines%  s   	" !/Zvu--**<88.6FFF ))++G11 j!!E) 	2 	2I	***#((66I#11')W2M2MNNF  """ 8\ 8LL&&&&(-!52I"-"2"2<"@"@K#*;#>#>LLL!6!6777 ){j))E1!&&|44{E22WW\**+++r/   c                 N   | j         t          k    rt          j        S | j         t          k    rt          j        S | j         t          k    r\t          j                            |          }t          j                            |          }||k     rt          j        S t          j        S d S r1   )rI   rH   email
base64mimerZ   
quoprimimer'   rk   )rM   ra   len64lenqps       r.   r_   zCharset._get_encoderc  s    6))##!R''##!X--$22<@@E$22<@@Eu}}''''4r/   c                 .   	 |s|S | j         t          u rNt          |t                    r|                    | j                  }t          j                            |          S | j         t          u rct          |t                    r|                    | j                  }|
                    d          }t          j                            |          S t          |t                    r-|                    | j                  
                    d          }|S )Nlatin1r#   )rJ   rH   rA   rB   r;   r-   rz   r{   body_encoderZ   decoder|   )rM   r<   s     r.   r   zCharset.body_encoder  s    	  	M''&#&& <t':;;#//7772%% &#&& <t':;;]]8,,F#//777&#&& Lt':;;BB7KKMr/   N)__name__
__module____qualname__DEFAULT_CHARSETrQ   rT   rW   r[   r]   r`   rx   r_   r    r/   r.   r   r      s        *V &5 ? ? ? ?B* * */ / /" " "*9 9 9A A A&< < <|      r/   r   )__all__	functoolsr   email.base64mimerz   email.quoprimimer   email.encodersr	   rZ   rH   r'   rf   r   r:   ri   r)   r2   r6   r   r   r   r>   r   r   r/   r.   <module>r      s  
                       ) ) ) ) ) )   Br- Br- Br-	
 Br- Br- Br- Br- Br- Br-  Br-!" Br-#$ Br-%& -'( Fv-)* Fv-+, Ft6-. Ft6/0 t-v-vw/5  >|| | |	
 | | | | | | } } } } }  }!" }#$ 1  < "  	? ? ? ?8  # # #$ $ $m m m m m m m m m mr/   