o
    Zhm                     @   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 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	d4de	dedeee eeef f d
ed fddZi deddeddeddeddeddeddeddeddedd ed d!ed!d"ed"d#ed#d$ed$d%ed%d&ed&d'ed'ed(ed)d*Zd+Z	d4de	dedeee eeef f d
ed fd,d-Z	d4d.eeef dedeee eeef f d
eeef fd/d0Zd1ed
efd2d3ZdS )5    N)DictListTupleUnion   )_pdfdoc_encoding)
StreamType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    K/var/www/html/lang_env/lib/python3.10/site-packages/pypdf/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 g }d}	 t| }|stt|dkrn||7 }t|dkr.|t|dd d}q
t|dkr9|d7 }|dkrF|t|dd tt||S )	Nr       T   >r   r   base   0)	readr
   r   r   lenappendr   create_string_objectbytes)r   r    Zarrxtokr   r   r   read_hex_string_from_stream   s&   

r-      n   
   r      t   	   b      f      (   )   /   \       %   <r"      [   ]   #   _   &   $)rC   rD   \   c           
      C   s  |  d}d}g }	 |  d}|stt|dkr|d7 }n|dkr,|d8 }|dkr+nn|dkr|  d}z	|t|  W q	 ty   d|  krOdkrn nE|  d }td	D ]}|  d}d|  krldkrsn n||7 }q[| d
d  t	|dd}|dkr|t
 | | n|| Y q	|dv r|  d}|dvr| d
d Y q	d|dd }	t|	t |t
 Y nw |t| q
tt||S )Nr   Tr8   r9   r   r;   r%      7r      r#      s   
zUnexpected escaped string: zutf-8ignore)r&   r   r   r(   __ESCAPE_DICT__KeyErrortellrangeseekr   __BACKSLASH_CODE__decoder	   __name__ordr)   r*   )
r   r    r,   ZparenstxtZsav_Zntokr   msgr   r   r   read_string_from_stream>   s\   









#3rW   stringc              	   C   s  t | tr	t| S t | trt |ttfr@d}| D ]}z||| 7 }W q ty6   |t|fd7 }Y qw t|}| |_|S t |trY|dkrMt	| S t| |}| |_|S zd| 
tjtjfrzt| d}| |_d|_| dd |_|W S | 
drt| d	}| |_d|_tj|_|W S | d
d dkrt| d}| |_d|_tj|_|W S tt| }| |_d|_|W S  ty   t	|  Y S w td)a?  
    Create a ByteStringObject or a TextStringObject from a string to represent the string.

    Args:
        string: The data being used
        forced_encoding: Typically None, or an encoding string

    Returns:
        A ByteStringObject

    Raises:
        TypeError: If string is not of type str or bytes.

     charmapr*   zutf-16TNr       zutf-16ber   zutf-16lez3create_string_object should have str or unicode arg)
isinstancestrr   r*   listdict	ExceptionrQ   Z_original_bytesr   
startswithcodecsBOM_UTF16_BEBOM_UTF16_LEZautodetect_utf16Z	utf16_bomdecode_pdfdocencodingZautodetect_pdfdocencodingUnicodeDecodeError	TypeError)rX   r    outr+   objretvalr   r   r   r)   {   s^   



r)   
byte_arrayc                 C   s>   d}| D ]}t | }|dkrtdt|ddd||7 }q|S )NrY    ZpdfdocencodingrG   z#does not exist in translation table)r   rf   	bytearray)rk   rj   bcr   r   r   re      s   
re   )N)rb   typingr   r   r   r   _codecsr   Z_utilsr   r	   r
   errorsr   r   Z_baser   r   r]   floatr   r   r-   rS   rK   rP   rW   r*   r)   re   r   r   r   r   <module>   s    
	

?


H