o
    ë6Wj€  ã                   @   sD  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 d	ed
eeeef fdd„Z	dde	dedeee eeef f d
ed fdd„Z	dde	dedeee eeef f d
ed fdd„Z	ddeeef dedeee eeef f d
eeef fdd„Zded
ef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   s0   � | ]}t ˆ  d ¡||d … dƒd V  qdS )ú#r   é   g     ào@N)ÚintÚlstrip)Ú.0Úi©r   © úd/home/esfera/Documents/content_generation/venv/lib/python3.10/site-packages/PyPDF2/generic/_utils.pyÚ	<genexpr>   s   €. zhex_to_rgb.<locals>.<genexpr>)r   r   é   )Útupler   r   r   r   Ú
hex_to_rgb
   s   r   ÚstreamÚforced_encoding)r   r   c                 C   s¢   |   d¡ d}d}	 t| ƒ}|sttƒ‚|dkrn||7 }t|ƒdkr/|tt|dd�ƒ7 }d}q
t|ƒdkr:|d	7 }t|ƒdkrJ|tt|dd�ƒ7 }tt|ƒ|ƒS )
Nr   Ú ó    Tó   >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r+n°n©|dkrÕ|   d¡}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“dd“dd“ddddœ¥}z|| }W n^ tyÔ   d|kr¯|d kr¯td!ƒD ]}|   d¡}d|kr�|d kr�||7 }q‰|  d"d¡  ttt|d#d$�ƒƒ}n#|d%v rÅ|   d¡}|d%vrÂ|  d"d¡ d&}nd'| 	d(¡› �}t
|tƒ Y nw | |¡ q
td& |¡|ƒS ))Nr   Tó   (ó   )r   ó   \ó   nó   
ó   ró   ó   tó   	ó   bó   ó   fó   ó   cs   \có   /ó    ó   %ó   <r$   ó   [ó   ]ó   #ó   _ó   &ó   $)rE   rF   rG   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,   Úescape_dictÚ_ÚntokÚmsgr   r   r   Úread_string_from_stream&   sœ   


ÿ
ÿþýüûúùø	÷
öõôóòñðïì



€å
ÀArX   Ústringc              	   C   s   t | tƒr	t| ƒS t | tƒr|t |ttfƒr;d}| D ]}z||| 7 }W q ty6   |t|fƒ d¡7 }Y qw t|ƒS t |tƒrO|dkrHt| ƒS t|  |¡ƒS z|  	t
j¡rct|  d¡ƒ}d|_|W S tt| ƒƒ}d|_|W S  ty{   t| ƒ Y S w tdƒ‚)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 arg)Ú
isinstanceÚstrr   r[   ÚlistÚdictÚ	ExceptionrO   r   Ú
startswithÚcodecsÚBOM_UTF16_BEÚautodetect_utf16Údecode_pdfdocencodingÚautodetect_pdfdocencodingÚUnicodeDecodeErrorÚ	TypeError)rY   r!   Úoutr-   Úretvalr   r   r   r+   q   s8   

ÿ
ÿr+   Ú
byte_arrayc                 C   s>   d}| D ]}t | }|dkrtdt|ƒdddƒ‚||7 }q|S )Nr"   ú ÚpdfdocencodingrI   z#does not exist in translation table)r   rg   Ú	bytearray)rk   rj   ÚbÚcr   r   r   re   Ÿ   s   û
re   )N)rb   Útypingr   r   r   r   Ú_codecsr   Ú_utilsr   r	   r
   r   Úerrorsr   r   Ú_baser   r   r]   Úfloatr   r   r/   rX   r[   r+   re   r   r   r   r   Ú<module>   s@    þÿþ
ýþÿþ
ýMþ
ÿþ

ý.