
    :QgF                        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mZm	Z	m
Z
 ddlmZ ddlmZmZ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      Z G d de      Z G d de      Z G d de      Z  G d dejB                  e      Z" G d de#e      Z$ G d de%e      Z& G d de'e      Z( G d de'e      Z)de'de%fdZ*y)    N)	unhexlify)AnyCallableOptionalUnion   )_pdfdoc_encoding_rev)	
StreamTypeb_deprecate_with_replacementhex_str	hexencodelogger_warningread_non_whitespaceread_until_regexstr_)STREAM_TRUNCATED_PREMATURELYPdfReadErrorPdfStreamErrorzMathieu Fenniakzbiziqe@mathieu.fenniak.netc                       e Zd ZU ej                  Zed   ed<   defdZ	defdZ
ded    fdZded    fdZded	ed
eef   dd
fdZy
)	PdfObject).zhashlib._Hash	hash_funcreturnc                 (    d| z  j                         S )Nz%s)encodeselfs    Q/var/www/html/answerous/venv/lib/python3.12/site-packages/PyPDF2/generic/_base.pyhash_value_datazPdfObject.hash_value_data9   s    t##%%    c                     | j                   j                  d| j                  | j                               j	                         j                         S )N:)	__class____name__r   r   	hexdigestr   r   s    r   
hash_valuezPdfObject.hash_value<   sB     ''t3356@@B
 &(	r    c                     | S )zResolve indirect references. r   s    r   
get_objectzPdfObject.get_objectE   s    r    c                 :    t        dd       | j                         S )N	getObjectr)   )r   r)   r   s    r   r+   zPdfObject.getObjectI   s    ";=  r    streamencryption_keyNc                     t         N)NotImplementedErrorr   r,   r-   s      r   write_to_streamzPdfObject.write_to_streamM   s
     "!r    )r$   
__module____qualname__hashlibsha1r   r   __annotations__bytesr   r&   r   r)   r+   r
   r   strr2   r(   r    r   r   r   5   sy    07Ix,-<& &E H[1 !8K0 !" "27c58H2I"	"r    r   c                       e Zd Zdededeef   ddfdZededd fd       Z	dededeef   ddfdZ
defdZededd fd	       Zy)

NullObjectr,   r-   Nr   c                 &    |j                  d       y )N   null)writer1   s      r   r2   zNullObject.write_to_streamT   s     	Wr    c                 X    | j                  d      }|dk7  rt        d      t               S )N   r=   zCould not read Null object)readr   r;   )r,   nulltxts     r   read_from_streamzNullObject.read_from_streamY   s+    ++a.g;<<|r    c                 @    t        dd       | j                  ||       y NwriteToStreamr2   r   r2   r1   s      r   rF   zNullObject.writeToStream`        	#?4EFV^4r    c                      y)Nr;   r(   r   s    r   __repr__zNullObject.__repr__f   s    r    c                 D    t        dd       t        j                  |       S NreadFromStreamrC   )r   r;   rC   r,   s    r   rM   zNullObject.readFromStreami   s    "#35GH**622r    )r$   r3   r4   r
   r   r9   r8   r2   staticmethodrC   rF   rJ   rM   r(   r    r   r;   r;   S   s     27c58H2I	
    5 527c58H2I5	5#  3z 3l 3 3r    r;   c                       e Zd ZdeddfdZdedefdZdefdZ	de
d	edeef   ddfd
Zde
d	edeef   ddfdZede
dd fd       Zede
dd fd       Zy)BooleanObjectvaluer   Nc                     || _         y r/   rR   )r   rR   s     r   __init__zBooleanObject.__init__p   s	    
r    _BooleanObject__oc                     t        |t              r| j                  |j                  k(  S t        |t              r| j                  |k(  S y)NF)
isinstancerQ   rR   bool)r   rV   s     r   __eq__zBooleanObject.__eq__s   s;    c=)::**T"::$$r    c                 "    | j                   rdS dS )NTrueFalserT   r   s    r   rJ   zBooleanObject.__repr__{   s    v00r    r,   r-   c                 b    | j                   r|j                  d       y |j                  d       y )N   trues   false)rR   r>   r1   s      r   r2   zBooleanObject.write_to_stream~   s#     ::LL!LL"r    c                 @    t        dd       | j                  ||       y rE   rG   r1   s      r   rF   zBooleanObject.writeToStream   rH   r    c                     | j                  d      }|dk(  rt        d      S |dk(  r| j                  d       t        d      S t        d      )Nr@   r_   Ts   fals   FzCould not read Boolean object)rA   rQ   r   )r,   words     r   rC   zBooleanObject.read_from_stream   sJ    {{1~7? &&W_KKN ''>??r    c                 D    t        dd       t        j                  |       S rL   )r   rQ   rC   rN   s    r   rM   zBooleanObject.readFromStream   s    "#35GH--f55r    )r$   r3   r4   r   rU   objectrY   rZ   r9   rJ   r
   r   r8   r2   rF   rO   rC   rM   r(   r    r   rQ   rQ   o   s    c d & T 1# 1# #27c58H2I#	#5 527c58H2I5	5 @ @ @ @ 6z 6o 6 6r    rQ   c                       e Zd ZdedededdfdZdee   fdZde	fdZ
d	edefd
Zd	edefdZdedede	ef   ddfdZdedede	ef   ddfdZedededd fd       Zedededd fd       Zy)IndirectObjectidnum
generationpdfr   Nc                 .    || _         || _        || _        y r/   )rh   ri   rj   )r   rh   ri   rj   s       r   rU   zIndirectObject.__init__   s    
$r    c                 ^    | j                   j                  |       }|y |j                         S r/   )rj   r)   )r   objs     r   r)   zIndirectObject.get_object   s+    hh!!$';~~r    c                 h    d| j                   d| j                  dt        | j                         dS )NzIndirectObject(z, ))rh   ri   idrj   r   s    r   rJ   zIndirectObject.__repr__   s/     b0C2bl^STUUr    otherc                     |d uxr` t        |t              xrN | j                  |j                  k(  xr3 | j                  |j                  k(  xr | j                  |j                  u S r/   )rX   rg   rh   ri   rj   r   rq   s     r   rZ   zIndirectObject.__eq__   sc     &5.1&

ekk)& 5#3#33& EII%	
r    c                 &    | j                  |       S r/   )rZ   rs   s     r   __ne__zIndirectObject.__ne__   s    ;;u%%%r    r,   r-   c                 l    |j                  t        | j                   d| j                   d             y )N z R)r>   r   rh   ri   r1   s      r   r2   zIndirectObject.write_to_stream   s+     	R4::,a'8;<=r    c                 @    t        dd       | j                  ||       y rE   rG   r1   s      r   rF   zIndirectObject.writeToStream   rH   r    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    rb      Rz0Error reading indirect object reference at byte )
rA   r   r   isspacer   r   r   tellrg   int)r,   rj   rh   tokri   rs         r   rC   zIndirectObject.read_from_stream   s    ++a.C$%ABB{{}SLE  
++a.C$%ABB{{}!#J   '9B76;;=CYBZ[  c%j#j/3??r    c                 F    t        dd       t        j                  | |      S rL   )r   rg   rC   r,   rj   s     r   rM   zIndirectObject.readFromStream   s#     	##35GH..vs;;r    )r$   r3   r4   r}   r   rU   r   r   r)   r9   rJ   rY   rZ   ru   r
   r   r8   r2   rF   rO   rC   rM   r(   r    r   rg   rg      s   c s   
 HY/  V# V
C 
D 
&C &D &> >27c58H2I>	>
5 527c58H2I5	5 @ @# @:J @ @4 <<!$<	< <r    rg   c                       e Zd Z	 ddeeef   dee   dd fdZdefdZde	fdZ
ded	edeef   ddfd
Zded	edeef   ddfdZy)FloatObjectNrR   contextr   c                     	 t         j                  j                  | t        |      |      S # t        $ r7 t        d| dt               t         j                  j                  | d      cY S w xY w)NzFloatObject (z) invalid; use 0.0 insteadz0.0)decimalDecimal__new__r   	Exceptionr   r$   )clsrR   r   s      r   r   zFloatObject.__new__   s`    	7??**3UWEE 	7 ]5'1KLhW??**366		7s   ), =A,+A,c                     | | j                         k(  r-t        | j                  t        j                  d                  S | dj                  d      S )Nrb   f0)to_integralr9   quantizer   r   rstripr   s    r   rJ   zFloatObject.__repr__   sG    4##%%t}}W__Q%7899 1X%%c**r    c                 H    t        t        |       j                  d            S Nutf8)floatreprr   r   s    r   
as_numericzFloatObject.as_numeric   s    T$Z&&v.//r    r,   r-   c                 V    |j                  t        |       j                  d             y r   r>   r   r   r1   s      r   r2   zFloatObject.write_to_stream        	T$Z&&v./r    c                 @    t        dd       | j                  ||       y rE   rG   r1   s      r   rF   zFloatObject.writeToStream  rH   r    )r   N)r$   r3   r4   r   r9   r   r   r   rJ   r   r   r
   r8   r2   rF   r(   r    r   r   r      s    DH	7#s(O	74<SM	7		7+# +0E 00 027c58H2I0	0
5 527c58H2I5	5r    r   c                       e Zd Z ej                  d      Zdedd fdZdefdZ	de
dedeef   ddfd	Zde
dedeef   ddfd
Zede
ded ef   fd       Zede
ded ef   fd       Zy)NumberObjects	   [^+-.0-9]rR   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   )r}   r   
ValueErrorr   r$   )r   rR   s     r   r   zNumberObject.__new__  sP    	';;sCJ// 	']5'1IJHU;;sA&&	's   ! 3AAc                 H    t        t        |       j                  d            S r   )r}   r   r   r   s    r   r   zNumberObject.as_numeric  s    4:$$V,--r    r,   r-   Nc                 V    |j                  t        |       j                  d             y r   r   r1   s      r   r2   zNumberObject.write_to_stream  r   r    c                 @    t        dd       | j                  ||       y rE   rG   r1   s      r   rF   zNumberObject.writeToStream  rH   r    c                     t        | t        j                        }|j                  d      dk7  rt	        |      S t        |      S )N   .)r   r   NumberPatternfindr   )r,   nums     r   rC   zNumberObject.read_from_stream"  s:    v|'A'AB88D>Rs##C  r    c                 D    t        dd       t        j                  |       S rL   )r   r   rC   rN   s    r   rM   zNumberObject.readFromStream)  s!     	##35GH,,V44r    )r$   r3   r4   recompiler   r   r   r}   r   r
   r   r9   r8   r2   rF   rO   r   rC   rM   r(   r    r   r   r   
  s    BJJ|,M'C 'N '.C .0 027c58H2I0	0
5 527c58H2I5	5 ! !nk6Q0R ! ! 55	~{*	+5 5r    r   c                   f    e Zd ZdZedefd       Zdedede	ef   ddfdZ
dedede	ef   dd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.
    r   c                     | S )z7For compatibility with TextStringObject.original_bytes.r(   r   s    r   original_byteszByteStringObject.original_bytes9  s	     r    r,   r-   Nc                     | }|rddl m}  |||      }|j                  d       |j                  t        |             |j                  d       y )Nr   RC4_encrypt   <   >)	_securityr   r>   r   )r   r,   r-   bytearrr   s        r   r2   z ByteStringObject.write_to_stream>  sD     /!.':GTYw'(Tr    c                 @    t        dd       | j                  ||       y rE   rG   r1   s      r   rF   zByteStringObject.writeToStreamJ  rH   r    )r$   r3   r4   __doc__propertyr8   r   r
   r   r9   r2   rF   r(   r    r   r   r   1  st       
 
27c58H2I
	
5 527c58H2I5	5r    r   c                   z    e Zd ZdZdZdZedefd       ZdefdZ	de
dedeef   ddfd	Zde
dedeef   ddfd
Zy)TextStringObjectz
    Represents 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.
    Fr   c                 "    | 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.
        )get_original_bytesr   s    r   r   zTextStringObject.original_bytes\  s     &&((r    c                     | j                   r"t        j                  | j                  d      z   S | j                  rt        |       S t        d      )Nutf-16bez#no information about original bytes)autodetect_utf16codecsBOM_UTF16_BEr   autodetect_pdfdocencodingencode_pdfdocencodingr   r   s    r   r   z#TextStringObject.get_original_bytesf  sG       &&Z)@@@++(..ABBr    r,   r-   Nc                    	 t        |       }|r-ddlm}  |||      }t        |      }|j                  |d        y |j                  d       |D ]a  }t        |      j                         s#|dk7  r|j                  t        d|z               ?|j                  t        t        |                   c |j                  d       y # t        $ r% t        j                  | j	                  d      z   }Y w xY w)Nr   r   r      (    z\%03o   ))r   UnicodeEncodeErrorr   r   r   r   r   r   r2   r>   chrisalnumr   )r   r,   r-   r   r   rm   cs          r   r2   z TextStringObject.write_to_streams  s    	D+D1G /!.':G"7+C-LL -1v~~'AI
 LLHqL!12LLCF,- LL' " 	D))DKK
,CCG	Ds   C +C32C3c                 @    t        dd       | j                  ||       y rE   rG   r1   s      r   rF   zTextStringObject.writeToStream  rH   r    )r$   r3   r4   r   r   r   r   r8   r   r   r
   r   r9   r2   rF   r(   r    r   r   r   Q  s     !&) ) )CE C 27c58H2I	:5 527c58H2I5	5r    r   c            
       ^   e Zd Z ej                  d      ZdZddddd ed      D  ci c]   }t        |      d	|d
j                         " c}}} Z
dededeef   ddfdZdededeef   ddfdZdefdZededefd       Zedededd fd       Zedededd fd       Zyc c}}} w )
NameObjects   \s+|[\(\)<>\[\]{}/%]   /s   #23s   #28s   #29s   #2F)#(ro   /!   r   02Xr,   r-   Nr   c                 B    |j                  | j                                y r/   )r>   renumberr1   s      r   r2   zNameObject.write_to_stream  s     	T]]_%r    c                 @    t        dd       | j                  ||       y rE   rG   r1   s      r   rF   zNameObject.writeToStream  rH   r    c                 F   | d   j                  d      }|dk7  rt        d|  dt               | 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-8r   z$Incorrect first char in NameObject:(ro   rb   ~r   r   )r   r   r$   renumber_tableKeyError)r   outr   xs       r   r   zNameObject.renumber  s    1gnnW%$;A$qI8Tab 	-A3w'* 0AQqg;--//C0-4..q11C	- 
   -188G,,C-s   *B  B B 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   rb      )r   r   r   )r   is     r   unnumberzNameObject.unnumber  s    HHT11f"1g	#a!ea!e*< ==AEGLHHT1q5) 1f 
	   Es   8A A*)A*rj   c                 @   | j                  d      }|t        j                  k7  rt        d      |t	        | t        j
                  d      z  }	 t        j                  |      }dD ]   }	 |j                  |      }t        |      c S  t        d|ddd      # t        $ r Y =w xY w# t        t        f$ rf}|j                  s<t        d	t        |       d
t               t        |j                  d            cY d }~S t        d	t        |       d
      |d }~ww xY w)Nrb   zname read errorT)
ignore_eof)r   gbk r   zCode Not Foundz"Illegal character in Name Object (ro   charmap)rA   r   surfixr   r   delimiter_patternr   decoder   UnicodeDecodeErrorr   strictr   r   r$   )r,   rj   nameencretes         r   rC   zNameObject.read_from_stream  s   {{1~:$$$011 )E)ERVWW	 &&t,D' ++c*C%c?* %Rq!5EFF !  #$67 		::8dAF "$++i"899"8dAF		sO   B( +BB( 	B( 	B%"B( $B%%B( (D7AD9D?DDc                 F    t        dd       t        j                  | |      S rL   )r   r   rC   r   s     r   rM   zNameObject.readFromStream  s#     	##35GH**6377r    )r$   r3   r4   r   r   r   r   ranger   r   r   r
   r   r9   r8   r2   rF   r   rO   r   r   rC   rM   ).0r   r   s   000r   r   r     s=   "

#;<F	
 27r
;
;A3q6Qqg;%%''
;N& &27c58H2I&	&
5 527c58H2I5	5%  
e 
 
 
  # ,  6 88!$8	8 8O <s   %B(
r   unicode_stringr   c           	          d}| D ]!  }	 |t        t        t        |               z  }# |S # t        $ r t	        d|ddd      w xY w)Nr    pdfdocencodingr   z#does not exist in translation table)r   r   r	   r   r   )r   retvalr   s      r   r   r     sf    F 	b1!4566F M	  	$ !R-R 	s	   +A)+r   r   r5   r   binasciir   typingr   r   r   r   _codecsr	   _utilsr
   r   r   r   r   r   r   r   r   errorsr   r   r   
__author____author_email__r   r;   rQ   rg   r   r   r}   r   r8   r   r9   r   r   r   r(   r    r   <module>r     s   8    	  1 1 *
 
 
 P O
/ " "<3 38+6I +6\F<Y F<R!5'//9 !5H$53	 $5N5ui 5@C5sI C5LS8i S8l	# 	% 	r    