
    Ph|                        d dl Z d dlZd dlZd dlZd dlZd dl mZ d dlmZ d dlm	Z	 d dl
mZ d dlmZmZmZmZmZmZ ej&                  dd dk\  rd d	lmZ nd d	lmZ dd
lmZ ddlmZmZ ddlmZmZmZmZm Z m!Z!m"Z" ddl#m$Z$m%Z%m&Z& dZ'dZ( G d de      Z) G d de)      Z* G d de)      Z+ G d de)      Z,dZ- G d de.e)      Z/ G d de0e)      Z1 G d de2e)      Z3 G d d e4e)      Z5 G d! d"e4e)      Z6d#e4d$e2fd%Z7d&ed$eede*e,f      fd'Z8y)(    N)	unhexlify)Sequence)log10)iter_unpack)AnyCallableClassVarOptionalUnioncast   )   
   )	TypeGuard)_pdfdoc_encoding_rev)PdfObjectProtocolPdfWriterProtocol)
StreamTypeclasspropertydeprecation_no_replacementdeprecation_with_replacementlogger_warningread_non_whitespaceread_until_regex)STREAM_TRUNCATED_PREMATURELYPdfReadErrorPdfStreamErrorzMathieu Fenniakzbiziqe@mathieu.fenniak.netc                       e Zd ZU ej                  Zed   ed<   ed   ed<   de	fdZ
defdZdefdZd	edd fd
Z	 	 dd	ededeeeee	f         dd fdZ	 dded	ededefdZded    fdZ	 ddededeef   ddfdZy)	PdfObject).zhashlib._Hash	hash_funcIndirectObjectindirect_referencereturnc                 F    t        | j                  j                   d      )q
        Used to detect modified object.

        Returns:
            Hash considering type and value.

        z& does not implement .hash_bin() so farNotImplementedError	__class____name__selfs    M/var/www/html/saasai/venv/lib/python3.12/site-packages/pypdf/generic/_base.pyhash_binzPdfObject.hash_binA   s'     "~~&&''MN
 	
    c                 $    |  j                         S N)encoder*   s    r,   hash_value_datazPdfObject.hash_value_dataM   s    !!r.   c                     | j                   j                   d| j                  | j                               j	                          j                         S )N:)r(   r)   r    r2   	hexdigestr1   r*   s    r,   
hash_valuezPdfObject.hash_valueP   sG    ~~&&'q~~d2245??ABD
&(	r.   pdf_destc                 $    | j                  |      S )a/  
        Clone object into pdf_dest (PdfWriterProtocol which is an interface for PdfWriter)
        without ensuring links. This is used in clone_document_from_root with incremental = True.

        Args:
          pdf_dest: Target to clone to.

        Returns:
          The cloned PdfObject

        )cloner+   r7   s     r,   	replicatezPdfObject.replicateV   s     zz(##r.   force_duplicateignore_fieldsc                 F    t        | j                  j                   d      )a  
        Clone object into pdf_dest (PdfWriterProtocol which is an interface for PdfWriter).

        By default, this method will call ``_reference_clone`` (see ``_reference``).


        Args:
          pdf_dest: Target to clone to.
          force_duplicate: By default, if the object has already been cloned and referenced,
            the copy will be returned; when ``True``, a new copy will be created.
            (Default value = ``False``)
          ignore_fields: List/tuple of field names (for dictionaries) that will be ignored
            during cloning (applies to children duplication as well). If fields are to be
            considered for a limited number of levels, you have to add it as integer, for
            example ``[1,"/B","/TOTO"]`` means that ``"/B"`` will be ignored at the first
            level only but ``"/TOTO"`` on all levels.

        Returns:
          The cloned PdfObject

        z! does not implement .clone so farr&   r+   r7   r<   r=   s       r,   r9   zPdfObject.cloneg   s'    6 "~~&&''HI
 	
r.   r9   c                 r   	 |s|j                   j                  |k(  r|S 	 | j                   }|j                  rJ|H|j                  |j
                  k(  r/|j                  t        |j                        k  r|j                  }nt        |j                        dz   }|t        |j                        |j                  vrQi |j                  t        |j                        <   |j                  |j                  t        |j                           d<   |sr|j                  |j                  t        |j                           v rD|j                  |j                  t        |j                           |j                           }|J |S ||j                  t        |j                           |j                  <   	 ||j                  |dz
  <   t        |d|      |_         |S # t        $ r Y w xY w# t        $ r |cY S w xY w# t        $ r3 |j                  j                  |       t        |j                        }Y pw xY w)aX  
        Reference the object within the _objects of pdf_dest only if
        indirect_reference attribute exists (which means the objects was
        already identified in xref/xobjstm) if object has been already
        referenced do nothing.

        Args:
          clone:
          pdf_dest:

        Returns:
          The clone

           	PreventGCr   )r"   pdf	ExceptionAttributeErrorincremental_readeridnumlen_objectsid_id_translated
get_object
IndexErrorappendr!   )r+   r9   r7   r<   indiobjs          r,   _reference_clonezPdfObject._reference_clone   s   "	"u'?'?'C'Cx'O	))C   8+++		S!2!233		AH%%&*A?#''{("9"9979''3774DGGG''3774[A#II!8!8CGG!EE))++BswwK8C &
>?H##BswwK0;	'',Ha!e$ $2!Q#A I  		
  	L	6  	'$$U+H%%&A	's4   G G) 3G: 	G&%G&)G76G7:9H65H6c                     | S )zResolve indirect references. r*   s    r,   rM   zPdfObject.get_object       r.   Nstreamencryption_keyc                     t         r0   )r'   r+   rW   rX   s      r,   write_to_streamzPdfObject.write_to_stream   s
     "!r.   FrU   )Fr0   )r)   
__module____qualname__hashlibsha1r    r   __annotations__r
   intr-   bytesr2   r6   r   r;   boolr   r   strr9   r   r   rS   rM   r   r[   rU   r.   r,   r   r   <   s   07Ix,-< !122

# 

" "E $#$ 
$( !&=?	
#
 
  sCx 9:	

 

@ PU88$58HL8	8tH[1 
 MQ" "27c58H2I"	"r.   r   c                       e Zd Z	 	 ddededeeeee	f         dd fdZ
de	fdZ	 dded	edeef   ddfd
Zededd fd       ZdefdZdedefdZde	fdZy)
NullObjectr7   r<   r=   r#   c                 L    t        d| j                  t               ||            S )Clone object into pdf_dest.rg   )r   rS   rg   r?   s       r,   r9   zNullObject.clone   s'     $//
hX
 	
r.   c                 .    t        | j                  f      S r%   hashr(   r*   s    r,   r-   zNullObject.hash_bin   s     T^^%&&r.   NrW   rX   c                 B    |t        dd       |j                  d       y )N/the encryption_key parameter of write_to_stream5.0.0   null)r   writerZ   s      r,   r[   zNullObject.write_to_stream   s%     %&A7 	Wr.   c                 X    | j                  d      }|dk7  rt        d      t               S )N   rq   zCould not read Null object)readr   rg   )rW   nulltxts     r,   read_from_streamzNullObject.read_from_stream   s+    ++a.g;<<|r.   c                      y)Nrg   rU   r*   s    r,   __repr__zNullObject.__repr__   s    r.   otherc                 "    t        |t              S r0   )
isinstancerg   r+   rz   s     r,   __eq__zNullObject.__eq__   s    %,,r.   c                 "    | j                         S r0   r-   r*   s    r,   __hash__zNullObject.__hash__       }}r.   r\   r0   )r)   r]   r^   r   rd   r
   r   r   re   rb   r9   r-   r   rc   r[   staticmethodrw   ry   objectr~   r   rU   r.   r,   rg   rg      s     !&=?		
#	
 	
  sCx 9:		

 
	
'# ' MQ 27c58H2I	    # -F -t -# r.   rg   c                       e Zd ZdeddfdZ	 	 ddededeee	e
ef         dd fdZdefd	Zd
edefdZdefdZde
fdZ	 ddede	de
ef   ddfdZededd fd       Zy)BooleanObjectvaluer#   Nc                     || _         y r0   r   )r+   r   s     r,   __init__zBooleanObject.__init__   s	    
r.   r7   r<   r=   c                 b    t        d| j                  t        | j                        ||            S )ri   r   )r   rS   r   r   r?   s       r,   r9   zBooleanObject.clone   s/     !!-

";XW
 	
r.   c                 D    t        | j                  | j                  f      S rk   )rm   r(   r   r*   s    r,   r-   zBooleanObject.hash_bin
  s     T^^TZZ011r.   oc                    t        |t              r| j                  |j                  k(  S t        |t              r| j                  |k(  S y)NF)r|   r   r   rd   r+   r   s     r,   r~   zBooleanObject.__eq__  s:    a'::((a::?"r.   c                 "    | j                         S r0   r   r*   s    r,   r   zBooleanObject.__hash__  r   r.   c                 "    | j                   rdS dS )NTrueFalser   r*   s    r,   ry   zBooleanObject.__repr__  s    v00r.   rW   rX   c                 ~    |t        dd       | j                  r|j                  d       y |j                  d       y )Nro   rp      trues   false)r   r   rr   rZ   s      r,   r[   zBooleanObject.write_to_stream!  s8     %&A7 ::LL!LL"r.   c                     | j                  d      }|dk(  rt        d      S |dk(  r| j                  d       t        d      S t        d      )Nrt   r   Ts   falsrA   FzCould not read Boolean object)ru   r   r   )rW   words     r,   rw   zBooleanObject.read_from_stream-  sJ    {{1~7? &&7?KKN '':;;r.   r\   r0   )r)   r]   r^   r   r   r   rd   r
   r   r   re   rb   r9   r-   r   r~   r   ry   r   rc   r[   r   rw   rU   r.   r,   r   r      s    c d  !&=?	

#

 

  sCx 9:	


 


2# 2 d # 1# 1 MQ
# 
#27c58H2I
#	
# < < < <r.   r   c                      e Zd ZdedededdfdZdefdZdefdZd	edd
fdZ		 	 d%d	ede
deeeeef         dd fdZed&d       Zded
   fdZdedd fdZded
   fdZdedefdZdedefdZdede
fdZdefdZdefdZdefdZdefdZdefdZdede
fdZdede
fd Z	 d'd!e d"edee!f   ddfd#Z"e#d!e dedd fd$       Z$y)(r!   rH   
generationrC   r#   Nc                 .    || _         || _        || _        y r0   )rH   r   rC   )r+   rH   r   rC   s       r,   r   zIndirectObject.__init__9  s    
$r.   c                 l    t        | j                  | j                  t        | j                        f      S r0   )rm   rH   r   rK   rC   r*   s    r,   r   zIndirectObject.__hash__>  s$    TZZ"TXX,?@@r.   c                     t        | j                  | j                  | j                  t	        | j
                        f      S rk   )rm   r(   rH   r   rK   rC   r*   s    r,   r-   zIndirectObject.hash_binA  s,     T^^TZZ"TXX,OPPr.   r7   r   c                 D    t        | j                  | j                  |      S r0   )r!   rH   r   r:   s     r,   r;   zIndirectObject.replicateK  s     djj$//8DDr.   r<   r=   c                    | j                   |k(  r|s| S t        | j                         |j                  vr"i |j                  t        | j                         <   | j                  |j                  t        | j                            v r|j	                  |j                  t        | j                            | j                           }|r|J |j
                  J |j
                  }t        |j                  |j                  |j                         S | j	                         }|$t               }t        | t        f      sJ | |_        |j                  |j                  |||            }|J d       |j
                  J d       |j
                  S )ri   mypy)rC   rK   rL   rH   rM   r"   r!   r   rg   r|   _add_objectr9   )r+   r7   r<   r=   dupidrefrR   s          r,   r9   zIndirectObject.cloneQ  s^    88xKdhh<x66646H##BtxxL1::00DHH>>%%h&=&=bl&KDJJ&WXC&--999..%ekk53C3CUYYOO//#C{ l!$(9:::)-&&&		(O]CC &&%%19691%%%r.   c                     | S r0   rU   r*   s    r,   r"   z!IndirectObject.indirect_referencet  rV   r.   c                 8    | j                   j                  |       S r0   )rC   rM   r*   s    r,   rM   zIndirectObject.get_objectx  s    xx""4((r.   memoc                 X    t        | j                  | j                  | j                        S r0   )r!   rH   r   rC   )r+   r   s     r,   __deepcopy__zIndirectObject.__deepcopy__{  s    djj$//488DDr.   c                     | j                         }t        |t              r,t        | j	                          d|j	                                |S )Nz references an IndirectObject )rM   r|   r!   r   ry   r   s     r,   _get_object_with_checkz%IndirectObject._get_object_with_check~  sH    OOa( ==?##A!**,P  r.   namec                 p    	 t        | j                         |      S # t        $ r t        d| d      w xY w)NzNo attribute z* found in IndirectObject or pointed object)getattrr   rE   r+   r   s     r,   __getattr__zIndirectObject.__getattr__  sF    	4668$?? 	 v%OP 	s    5keyc                 (    | j                         |   S r0   r   r+   r   s     r,   __getitem__zIndirectObject.__getitem__  s    **,S11r.   c                 &    || j                         v S r0   r   r   s     r,   __contains__zIndirectObject.__contains__  s    d11333r.   c                 >    | j                         j                         S r0   )r   __iter__r*   s    r,   r   zIndirectObject.__iter__  s    **,5577r.   c                 >    | j                         j                         S r0   )rM   	__float__r*   s    r,   r   zIndirectObject.__float__  s     **,,r.   c                 >    | j                         j                         S r0   )rM   __int__r*   s    r,   r   zIndirectObject.__int__       ((**r.   c                 >    | j                         j                         S r0   )rM   __str__r*   s    r,   r   zIndirectObject.__str__  r   r.   c                 h    d| j                   d| j                  dt        | j                         dS )NzIndirectObject(z, ))rH   r   rK   rC   r*   s    r,   ry   zIndirectObject.__repr__  s/     b0C2bl^STUUr.   rz   c                     |d uxr` t        |t              xrN | j                  |j                  k(  xr3 | j                  |j                  k(  xr | j                  |j                  u S r0   )r|   r!   rH   r   rC   r}   s     r,   r~   zIndirectObject.__eq__  sc     &5.1&

ekk)& 5#3#33& EII%	
r.   c                 &    | j                  |       S r0   )r~   r}   s     r,   __ne__zIndirectObject.__ne__  s    ;;u%%%r.   rW   rX   c                     |t        dd       |j                  | j                   d| j                   dj	                                y )Nro   rp    z R)r   rr   rH   r   r1   rZ   s      r,   r[   zIndirectObject.write_to_stream  sD     %&A7 	

|1T__$5R8??ABr.   c                    d}	 | j                  d      }|st        t              |j                         rn||z  }9d}	 | j                  d      }|st        t              |j                         r|s6n||z  }<t	        |       }|dk7  r%t        dt        | j                                      t        t        |      t        |      |      S )Nr.   rA      Rz0Error reading indirect object reference at byte )
ru   r   r   isspacer   r   hextellr!   rb   )rW   rC   rH   tokr   rs         r,   rw   zIndirectObject.read_from_stream  s    ++a.C$%ABB{{}SLE  
++a.C$%ABB{{}!#J   '9B3v{{}CUBVW  c%j#j/3??r.   r\   )r#   r!   r0   )%r)   r]   r^   rb   r   r   r   r-   r   r;   rd   r
   r   r   re   r9   propertyr"   rM   r   r   r   r   r   r   r   r   r   ry   r   r~   r   r   rc   r[   r   rw   rU   r.   r,   r!   r!   8  s   c s   
A# AQ# QE#E 
E !&=?	!&#!& !&  sCx 9:	!&
 
!&F  )H[1 )E E)9 E(=   2s 2s 24 4 48# 8-3 -+ ++ +V# V
F 
t 
&F &t & MQC C27c58H2IC	C @ @# @:J @ @r.   r!      c                       e Zd Z	 ddedee   dd fdZ	 	 ddededeeee	e
f         dd fd	Zde
fd
Zde	fdZde	fdZdefdZ	 ddedede	ef   ddfdZy)FloatObjectNr   contextr#   c                     	 t        |      }t         j                  | |      S # t        $ r6}t        | d| dt               t         j                  | d      cY d }~S d }~ww xY w)Nz : FloatObject (z) invalid; use 0.0 insteadg        )float__new__rD   r   r)   )clsr   r   es       r,   r   zFloatObject.__new__  sb    		+%LE==e,, 	+ #%eW,FG ==c**	+s    # 	A"+AA"A"r7   r<   r=   c                 N    t        d| j                  t        |       ||            S )ri   r   )r   rS   r   r?   s       r,   r9   zFloatObject.clone  s+     !!+d"3XO
 	
r.   c                 D    t        | j                  | j                  f      S rk   rm   r(   
as_numericr*   s    r,   r-   zFloatObject.hash_bin  s     T^^T__566r.   c                     | dk(  ryt         t        t        t        |                   z
  }| dt	        d|       dj                  d      j                  d      S )Nr   0.0.rA   f0)FLOAT_WRITE_PRECISIONrb   r   absmaxrstrip)r+   nbs     r,   myreprzFloatObject.myrepr  sS    19"Ss4y)9%::qQAo&..s3::3??r.   c                 "    | j                         S r0   )r   r*   s    r,   ry   zFloatObject.__repr__  s    {{}r.   c                     t        |       S r0   )r   r*   s    r,   r   zFloatObject.as_numeric  s    T{r.   rW   rX   c                 |    |t        dd       |j                  | j                         j                  d             y Nro   rp   utf8)r   rr   r   r1   rZ   s      r,   r[   zFloatObject.write_to_stream  s6     %&A7 	T[[]))&12r.   )r   Nr\   r0   )r)   r]   r^   r   r
   r   rd   r   r   re   rb   r9   r-   r   ry   r   r   r   rc   r[   rU   r.   r,   r   r     s    :>++*23-+	+" !&=?	



 

  sCx 9:	


 


7# 7@ @# E  MQ3 327c58H2I3	3r.   r   c                       e Zd Z ej                  d      Zdedd fdZ	 	 ddedede	e
eeef         dd fdZdefd	Zdefd
Z	 ddededeef   ddfdZededed   fd       Zy)NumberObjects	   [^+-.0-9]r   r#   c                     	 t         j                  | t        |            S # t        $ r- t        d| dt               t         j                  | d      cY S w xY w)NzNumberObject(z) invalid; use 0 insteadr   )rb   r   
ValueErrorr   r)   )r   r   s     r,   r   zNumberObject.__new__  sP    	';;sCJ// 	']5'1IJHU;;sA&&	's   ! 3AAr7   r<   r=   c                 N    t        d| j                  t        |       ||            S )ri   r   )r   rS   r   r?   s       r,   r9   zNumberObject.clone"  s+     !!,t"4hP
 	
r.   c                 L    t        | j                  | j                         f      S rk   r   r*   s    r,   r-   zNumberObject.hash_bin.  s     T^^T__%6788r.   c                 H    t        t        |       j                  d            S )Nr   )rb   reprr1   r*   s    r,   r   zNumberObject.as_numeric8  s    4:$$V,--r.   NrW   rX   c                 r    |t        dd       |j                  t        |       j                  d             y r   )r   rr   r   r1   rZ   s      r,   r[   zNumberObject.write_to_stream;  s4     %&A7 	T$Z&&v./r.   )r   r   c                 j    t        | t        j                        }d|v rt        |      S t        |      S )N   .)r   r   NumberPatternr   )rW   nums     r,   rw   zNumberObject.read_from_streamD  s1    v|'A'AB3;s##C  r.   r\   r0   )r)   r]   r^   recompiler   r   r   rd   r
   r   r   re   rb   r9   r-   r   r   rc   r[   r   rw   rU   r.   r,   r   r     s    BJJ|,M'C 'N ' !&=?	



 

  sCx 9:	


 


9# 9.C . MQ0 027c58H2I0	0 ! !6S0T ! !r.   r   c                       e Zd ZdZ	 	 ddededeeee	e
f         dd fdZde
fdZedefd       Z	 dd
eded	e	ef   dd	fdZde	fdZy	)ByteStringObjecta>  
    Represents a string object where the text encoding could not be determined.

    This occurs quite often, as the PDF spec doesn't provide an alternate way to
    represent strings -- for example, the encryption data stored in files (like
    /O) is clearly not text, but is still stored in a "String" object.
    r7   r<   r=   r#   c           
      `    t        d| j                  t        t        |             ||            S )ri   r   )r   rS   r   rc   r?   s       r,   r9   zByteStringObject.cloneU  s2     !! t-x
 	
r.   c                 B    t        | j                  t        |       f      S rk   )rm   r(   rc   r*   s    r,   r-   zByteStringObject.hash_binc  s     T^^U4[122r.   c                     | S )z7For compatibility with TextStringObject.original_bytes.rU   r*   s    r,   original_byteszByteStringObject.original_bytesm  s	     r.   NrW   rX   c                     |t        dd       |j                  d       |j                  t        j                  |              |j                  d       y )Nro   rp      <   >)r   rr   binasciihexlifyrZ   s      r,   r[   z ByteStringObject.write_to_streamr  sH     %&A7 	TX%%d+,Tr.   c                     dgt        t        j                        }|D ]  }	 | j                  |      c S  t        d      # t        $ r Y .w xY w)Nutf-16zCannot decode ByteStringObject.)list
NameObjectCHARSETSdecodeUnicodeDecodeErrorr   )r+   charset_to_tryencs      r,   r   zByteStringObject.__str__}  sZ    "?T**=*=%>?!C{{3'' "
 <== & s   A	AAr\   r0   )r)   r]   r^   __doc__r   rd   r
   r   r   re   rb   r9   r-   r   rc   r   r   r[   r   rU   r.   r,   r   r   L  s     !&=?	

 
  sCx 9:	

 

3# 3   
 MQ	 	27c58H2I			> >r.   r   c                       e Zd ZU dZeed<   eed<   eed<   dZee   ed<   de	dd fd	Z
	 	 dd
e	dedeeeeef         dd fdZdefdZedefd       ZdefdZdefdZ	 ddededeef   ddfdZy)TextStringObjectz
    A string object that has been decoded into a real unicode string.

    If read from a PDF document, this string appeared to match the
    PDFDocEncoding, or contained a UTF-16BE BOM mark to cause UTF-16 decoding
    to occur.
    autodetect_pdfdocencodingautodetect_utf16	utf16_bomN_original_bytesr   r#   c                    d }t        |t              r|}|j                  d      }t        j	                  | |      }||_        d|_        d|_        d|_        |j                  d      rI|J d       	 t        j	                  | |j                  d            }||_        d|_        |d d	 |_        |S 	 t        |       d|_        |S # t        $ re}t        |d|j                  t               t        j	                  | |j                  d |j                   j                  d            }Y d }~d }~ww xY w# t         $ r  d|_        t"        j$                  |_        Y |S w xY w)
NcharmapFr.   )u   þÿu   ÿþr   r  z
initial string:Tr   )r|   rc   r
  re   r   r  r  r  r  
startswithr  r   r   r)   startencode_pdfdocencodingUnicodeEncodeErrorcodecsBOM_UTF16_BE)r   r   orgr   excs        r,   r   zTextStringObject.__new__  sX   eU#CLL+EKKU#"&+#<<01?*F*?OKKSZZ%9: !$A!%Abq'AK 2%a(.2+ ! & Og.szzn= KKSZZ#))%<%C%CH%MNO & 2%)"$112s+   3%C 3D8 	D5AD00D58%E! E!r7   r<   r=   c                     t        |       }| j                  |_        | j                  |_        | j                  |_        | j                  |_        t        d| j                  |||            S )ri   r  )r  r  r  r  r  r   rS   )r+   r7   r<   r=   rR   s        r,   r9   zTextStringObject.clone  sd     t$"22(,(F(F%#44 5 5c8_ U
 	
r.   c                 D    t        | j                  | j                  f      S rk   )rm   r(   r   r*   s    r,   r-   zTextStringObject.hash_bin  s     T^^T%8%89::r.   c                 R    | j                   | j                   S | j                         S )a-  
        It is occasionally possible that a text string object gets created where
        a byte string object was expected due to the autodetection mechanism --
        if that occurs, this "original_bytes" property can be used to
        back-calculate what the original encoded bytes were.
        )r  get_original_bytesr*   s    r,   r   zTextStringObject.original_bytes  s+     +'''&&((r.   c                 |   | j                   r| j                  t        j                  k(  r"t        j                  | j	                  d      z   S | j                  t        j
                  k(  r"t        j
                  | j	                  d      z   S | j	                  d      S | j                  rt        |       S t        d      )Nutf-16leutf-16bez#no information about original bytes)	r  r  r  BOM_UTF16_LEr1   r  r  r  rD   r*   s    r,   r"  z#TextStringObject.get_original_bytes  s       ~~!4!44**T[[-DDD~~!4!44**T[[-DDD;;z**))(..=>>r.   c                    	 | j                   | j                   S | j                  rt        ddddd      t        |       }|S # t        $ r | j                  t
        j                  k(  r%t
        j                  | j                  d      z   }Y |S | j                  t
        j                  k(  r%t
        j                  | j                  d      z   }Y |S | j                  d      }Y |S w xY w)N forcedr$  r%  )	r  r  r  r  r  r  r&  r1   r  )r+   bytearrs     r,   get_encoded_bytesz"TextStringObject.get_encoded_bytes  s    	2##/+++$$(Xr2rBB+D1G  " 	2~~!4!44 --J0GG
 	 6#6#66 --J0GG  ++j1	2s#   A &A AC$?C$C$#C$rW   rX   c                 T   |t        dd       | j                         }|j                  d       t        d|      D ]Y  }t	        t
        |d         }|j                         s#|dk7  r|j                  dt        |      z         I|j                  |       [ |j                  d       y )	Nro   rp      (cr       s   \%03o   ))r   r,  rr   r   r   rc   isalnumord)r+   rW   rX   r+  c_r/  s         r,   r[   z TextStringObject.write_to_stream  s     %&A7 ((*Tc7+BUBqE"A99;19
 YQ/0Q , 	Tr.   r\   r0   )r)   r]   r^   r  rd   ra   rc   r  r
   r   r   r   r   re   rb   r9   r-   r   r   r"  r,  r   r[   rU   r.   r,   r  r    s      $#'+OXe_+C $6 F !&=?	

 
  sCx 9:	

 

 ;# ; 	) 	) 	)?E ? 5 ( MQ 27c58H2I	r.   r  c                      e Zd ZU  ej                  d      ZdZi dD  ci c]   }t        |      d|dj                         " c}}}  e	d      D  ci c]   }t        |      d|dj                         " c}}} Z
eeeef      ed<   	 	 dded	ed
eeeeef         dd fdZdefdZ	 ddededeef   ddfdZdefdZddZedefd       Zededefd       ZdZ edededd fd       Z!yc c}}} w c c}}} w )r  s   \s+|[\(\)<>\[\]{}/%]   /s   #()<>[]{}/%#02X!   renumber_tabler7   r<   r=   r#   c                 N    t        d| j                  t        |       ||            S )ri   r  )r   rS   r  r?   s       r,   r9   zNameObject.clone  s+     !!*T"2HoN
 	
r.   c                 0    t        | j                  | f      S rk   rl   r*   s    r,   r-   zNameObject.hash_bin(  s     T^^T*++r.   NrW   rX   c                 ^    |t        dd       |j                  | j                                y )Nro   rp   )r   rr   renumberrZ   s      r,   r[   zNameObject.write_to_stream2  s+     %&A7 	T]]_%r.   c                 >   | d   j                  d      }|dk7  rt        d|  dd       | dd  D ]H  }|dkD  r.|j                  d      D ]  }|d	|d
j                         z  } 6	 || j                  |   z  }J |S # t        $ r ||j                  d      z  }Y lw xY w)Nr   utf-8r6  z<Incorrect first char in NameObject, should start with '/': (r   rp   rA   ~r7  r8  )r1   r   r:  KeyError)r+   outr/  xs       r,   r>  zNameObject.renumber;  s    1gnnW%$;&NtfTUV abA3w'*AQqg;--//C +-4..q11C  
   -188G,,C-s   &A<<BBc                     t        |       j                  d      }t        j                  dd|      }t        j                  dd|      }t	        d|z         S )a0  
        Sanitize the NameObject's name to be a valid PDF name part
        (alphanumeric, underscore, hyphen). The _sanitize method replaces
        spaces and any non-alphanumeric/non-underscore/non-hyphen with
        underscores.

        Returns:
            NameObject with sanitized name.
        /z\ _z[^a-zA-Z0-9_-])re   removeprefixr   subr  r   s     r,   	_sanitizezNameObject._sanitizeM  sL     4y%%c*vveS$'vv'd3#*%%r.   c                     t        ddd       y)Nsurfixprefixrp   r6  )r   )r   s    r,   rL  zNameObject.surfix\  s    $XxAr.   sinc                     | j                  dd      }|dk\  r?	 | d | t        | |dz   |dz          z   | |dz   d  z   } | j                  d|dz         }|dk\  r?| S # t        $ r |dz   }Y w xY w)N   #r   rA   r   )findr   r   )rN  rQ   s     r,   unnumberzNameObject.unnumbera  s    HHT11f"1g	#a!ea!e*< ==AEGLHHT1q5) 1f 
	   Es   8A A*)A*)r@  gbklatin1rC   c                 4   | j                  d      }|t        j                  k7  rt        d      |t	        | t        j
                        z  }	 t        j                  |      }t        j                  D ]   }	 |j                  |      }t        |      c S  t        d|ddd      # t        $ r Y =w xY w# t        t        f$ rT}|j                  s3t        d|dt               t        |j                  d            cY d }~S t        d|d	      |d }~ww xY w)
NrA   zName read errorr(  r   zCode Not Foundz!Illegal character in NameObject (z-), you may need to adjust NameObject.CHARSETSr  z.). You may need to adjust NameObject.CHARSETS.)ru   r  rM  r   r   delimiter_patternrR  r	  r
  rD   r  r  strictr   r)   )rW   rC   r   r  retr   s         r,   rw   zNameObject.read_from_streamp  s%   {{1~:$$$011 )E)EFF	 &&t,D!**++c*C%c?* + %Rq!5EFF !  #$67 	::7x @A A
 "$++i"8993D8 <> > 	sN   (B4 7B%B4 B4 %	B1.B4 0B11B4 4D9D<DDDr\   r0   )r#   r  )"r)   r]   r^   r   r   rV  rM  chrr1   ranger:  r	   dictre   rc   ra   r   rd   r
   r   r   rb   r9   r-   r   r[   r>  rJ  r   rL  r   rR  r	  rw   ).0rQ   rY  s   000r,   r  r    s   "

#;<F21?
@A3q6Qqg;%%''
@216r
;A3q6Qqg;%%''
;2NHT#u*-.  !&=?	



 

  sCx 9:	


 


,# , MQ& &27c58H2I&	&% $& u   
e 
 
 
 *H # ,  s A
;s   %C5
%C<
r  unicode_stringr#   c                     	 t        | D cg c]  }t        |    c}      S c c}w # t        $ r t        d| ddd      w xY w)Npdfdocencodingr*  z#does not exist in translation table)rc   r   rB  r  )r]  ks     r,   r  r    sU    	
~F~!*1-~FGGF 
 1
 	

s   	' "' ' A rD  c                     | du xsD t        | t              xr2 | j                         du xs t        | j                         t              S )z<
    Returns:
        True if x is None or NullObject.

    N)r|   r   rM   rg   )rD  s    r,   is_null_or_nonerb    sE     9 1i  	O\\^t#Mz!,,.*'Mr.   )9r  r  r_   r   sysr   collections.abcr   mathr   structr   typingr   r   r	   r
   r   r   version_infor   typing_extensions_codecsr   
_protocolsr   r   _utilsr   r   r   r   r   r   r   errorsr   r   r   
__author____author_email__r   rg   r   r!   r   r   r   rb   r   rc   r   re   r  r  r  rb  rU   r.   r,   <module>rp     s5  6    	 
  $   A ABQ7" + * =   P O
/ K"! K"\- -`;<I ;<|_@Y _@D  83% 83v1!3	 1!h8>ui 8>vJsI JZxi xv

# 

% 

	s 	ytZ/O)PQ 	r.   