U
    
3g                  	   @   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    9/tmp/pip-unpacked-wheel-ifm06wwb/PyPDF2/generic/_utils.py	<genexpr>   s     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   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 }nB|dkr\|d8 }|dkrXqn"|dkr~|  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k
r|   d|kr.|dkr.tdD ]>}|  d}d|kr|dkr||7 }q| dd  qqttt|dd}nJ|dkr^|  d}|dkrX| dd d}nd |	d! }t
|t Y nX || 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r|d}| D ]>}z||| 7 }W q4 tk
rp   |t|fd7 }Y q4X q4t|S t |tr|dkrt| S t| |S zB| 	t
jrt| d}d|_|W S tt| }d|_|W S W n tk
r   t|  Y S X 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 

.