a
    ¢…¢f€  ã                	   @   s.  d dl Z d dlmZmZmZmZ ddlmZ ddlm	Z	m
Z
mZmZ ddlmZmZ ddlmZmZ eeeeef d	œd
d„Zde	edeee eeef f ed dœdd„Zde	edeee eeef f ed dœdd„Zdeeef edeee eeef f eeef dœdd„Zeedœdd„ZdS )é    N)ÚDictÚListÚTupleÚUnioné   )Ú_pdfdoc_encoding)Ú
StreamTypeÚb_Úlogger_warningÚread_non_whitespace)ÚSTREAM_TRUNCATED_PREMATURELYÚPdfStreamErroré   )ÚByteStringObjectÚTextStringObject)ÚvalueÚreturnc                    s   t ‡ fdd„dD ƒƒS )Nc                 3   s.   | ]&}t ˆ  d ¡||d … dƒd V  qdS )ú#r   é   g     ào@N)ÚintÚlstrip)Ú.0Úi©r   © úN/var/www/sistema_ama/venv/lib/python3.9/site-packages/PyPDF2/generic/_utils.pyÚ	<genexpr>   ó    zhex_to_rgb.<locals>.<genexpr>)r   r   é   )Útupler   r   r   r   Ú
hex_to_rgb
   s    r    )r   r   )ÚstreamÚforced_encodingr   c                 C   s    |   d¡ d}d}t| ƒ}|s&ttƒ‚|dkr0q^||7 }t|ƒdkr|tt|dd�ƒ7 }d}qt|ƒdkrr|d7 }t|ƒdkr’|tt|dd�ƒ7 }tt|ƒ|ƒS )	Nr   Ú r   ó   >r   r   ©Úbaseó   0)	Úreadr   r   r   ÚlenÚchrr   Úcreate_string_objectr	   )r!   r"   ÚtxtÚxÚtokr   r   r   Úread_hex_string_from_stream   s"    
r/   c           	      C   s”  |   d¡}d}g }|   d¡}|s(ttƒ‚|dkr<|d7 }�n<|dkr\|d8 }|dkrX�q„�n|dk�rx|   d¡}dddd	d
ddddddddddddddddœ}z|| }W nÌ t�yv   d|k�r(|dk�r(tdƒD ]:}|   d¡}d|krþ|dkrþ||7 }qÖ|  dd¡  �qqÖttt|dd�ƒƒ}nJ|dv �rX|   d¡}|dv�rR|  dd¡ d}nd | 	d!¡› �}t
|tƒ Y n0 | |¡ qtd |¡|ƒS )"Nr   ó   (ó   )r   ó   \ó   
ó   ó   	ó   ó   s   \có   /ó    ó   %ó   <r$   ó   [ó   ]ó   #ó   _ó   &ó   $)ó   nó   ró   tó   bó   fó   cr0   r1   r8   r2   r9   r:   r;   r$   r<   r=   r>   r?   r@   rA   r'   ó   7r   éÿÿÿÿé   r%   s   
r   zUnexpected escaped string: Úutf8)r(   r   r   ÚKeyErrorÚrangeÚseekr	   r*   r   Údecoder
   Ú__name__Úappendr+   Újoin)	r!   r"   r.   Úparensr,   Zescape_dictÚ_ZntokÚmsgr   r   r   Úread_string_from_stream&   sn    



ì




rV   )Ústringr"   r   c              	   C   s  t | tƒrt| ƒS t | tƒ�rt |ttfƒrzd}| D ]<}z||| 7 }W q4 tyn   |t|fƒ d¡7 }Y q40 q4t|ƒS t |tƒr¢|dkr”t| ƒS t|  |¡ƒS zB|  	t
j¡rÊt|  d¡ƒ}d|_|W S tt| ƒƒ}d|_|W S W n t�y    t| ƒ Y S 0 ntdƒ‚dS )zÎ
    Create a ByteStringObject or a TextStringObject from a string to represent the string.

    :param Union[str, bytes] string: A string

    :raises TypeError: If string is not of type str or bytes.
    r#   ÚcharmapÚbyteszutf-16Tz3create_string_object should have str or unicode argN)Ú
isinstanceÚstrr   rY   ÚlistÚdictÚ	ExceptionrO   r   Ú
startswithÚcodecsÚBOM_UTF16_BEZautodetect_utf16Údecode_pdfdocencodingZautodetect_pdfdocencodingÚUnicodeDecodeErrorÚ	TypeError)rW   r"   Úoutr-   Úretvalr   r   r   r+   q   s4    


r+   )Ú
byte_arrayr   c                 C   s>   d}| D ]0}t | }|dkr0tdt|ƒdddƒ‚||7 }q|S )Nr#   ú ZpdfdocencodingrI   z#does not exist in translation table)r   rc   Ú	bytearray)rg   rf   ÚbÚcr   r   r   rb   Ÿ   s    û
rb   )N)N)N)r`   Útypingr   r   r   r   Ú_codecsr   Ú_utilsr   r	   r
   r   Úerrorsr   r   Ú_baser   r   r[   Úfloatr    r   r/   rV   rY   r+   rb   r   r   r   r   Ú<module>   s2    þý þýM þ

ý.