
    ,h                        d Z d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
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mZ dd	lmZm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' ddl(m)Z)m*Z*m+Z+ ddl,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 ddl5m6Z6 ddlm7Z7m8Z8  ejr                  e:      Z;dZ< ejz                  d      Z> G d de?e3      Z@ G d deAe3      ZB G d deB      ZCdeddfdZD G d d eB      ZE G d! d"eE      ZF G d# d$eE      ZG G d% d&eF      ZH	 d/d'ed(ed)edeIe
eI   eeJeIf   f   dee3eJeIeHf   fd*ZK G d+ d,eC      ZL G d- d.eC      ZMy)0zMathieu Fenniakzbiziqe@mathieu.fenniak.net    N)BytesIO)AnyDictIterableListOptionalTupleUnioncast   )PdfWriterProtocol)
WHITESPACES
StreamTypeb_deprecate_with_replacementdeprecation_with_replacementhex_strlogger_warningread_non_whitespaceread_until_regexskip_over_comment)CheckboxRadioButtonAttributesFieldDictionaryAttributes)FilterTypes)OutlineFontFlag)StreamAttributes)TypArguments)TypFitArguments)STREAM_TRUNCATED_PREMATURELYPdfReadErrorPdfStreamError   )BooleanObjectFloatObjectIndirectObject
NameObject
NullObjectNumberObject	PdfObjectTextStringObject)Fit)read_hex_string_from_streamread_string_from_streams   +-s   [+-]?(\d+)\s+(\d+)\s+R[^a-zA-Z]c                       e Zd Z	 	 ddededeeedf   ee   df   dd fdZ	de
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d	edededeee   eeef   f   dd fd       Zed	ededd fd       Zy)ArrayObjectpdf_destforce_duplicateignore_fields.Nreturnc                    	 | j                   j                  |k(  r|s| S t        d| j	                  t               |            }| D ]  }t        |t              r?|j	                  |j                  |||      |      }|j                  |j                          Rt        |d      r#|j                  |j                  |||             |j                  |        t        d|      S # t        $ r Y w xY w)clone object into pdf_destr/   clone)indirect_referencepdf	Exceptionr   _reference_cloner/   
isinstanceStreamObjectr6   appendhasattr)selfr0   r1   r2   arrdatadups          a/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/PyPDF2/generic/_data_structures.pyr6   zArrayObject.cloneO   s    	&&**h6 =$"7"7x"PQ 	!D$- ++JJx-H( 

3112w'

4::hOP

4 	! M3''  		s   C% %	C10C1c                     t        |       S )zS
        Emulate DictionaryObject.items for a list
        (index, object)
        )	enumerater?   s    rC   itemszArrayObject.itemsj   s    
     streamencryption_keyc                     |j                  d       | D ]%  }|j                  d       |j                  ||       ' |j                  d       y )N   [    s    ])writewrite_to_stream)r?   rI   rJ   rA   s       rC   rO   zArrayObject.write_to_streamq   sI     	T 	9DLL  8	9 	UrH   c                 B    t        ddd       | j                  ||       y NwriteToStreamrO   3.0.0r   rO   r?   rI   rJ   s      rC   rR   zArrayObject.writeToStreamz   !     	%_6GQV^4rH   r8   forced_encodingc                    t               }| j                  d      }|dk7  rt        d      	 | j                  d      }|j                         r"| j                  d      }|j                         r"| j	                  dd       | j                  d      }|dk(  r	 |S | j	                  dd       |j                  t        | ||             )Nr"   rL   zCould not read array   ])r/   readr    isspaceseekr=   read_object)rI   r8   rW   r@   tmptok	peekaheads          rC   read_from_streamzArrayObject.read_from_stream   s     mkk!n$;566++a.C++-kk!n ++-KKAAID  
 KKAJJ{63@A rH   c                 H    t        ddd       t        j                  | |      S NreadFromStreamrb   rS   )r   r/   rb   rI   r8   s     rC   re   zArrayObject.readFromStream   s%     	%%57I7S++FC88rH   F N)__name__
__module____qualname__r   boolr
   r	   strr   r6   r   r   rG   r   bytesrO   rR   staticmethodr   intrb   re   rh   rH   rC   r/   r/   N   s4    !&AC	(#( ( U38_d3i=>	(
 
(6x}  27c58H2I	5 527c58H2I5	5  HL tS$s)T#s(^CD 
	 0 99!$9	9 9rH   r/   c                      e Zd Z	 	 ddededeeedf   ee   df   dd fdZ	dd dededeeedf   ee   f   ddf
d	Z
d
edefdZd
ededefdZdd
edee   defdZd
edefdZedee   fd       Zdee   fdZede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dedededeee   eeef   f   dd fd       Zedededd fd       Zy)DictionaryObjectr0   r1   r2   .Nr3   c                    	 | j                   j                  |k(  r|s| S t        d| j	                  | j                         |            }|g }t        |j                               dk(  r|j                  | |||       |S # t        $ r Y kw xY w)r5   rs   r   )	r7   r8   r9   r   r:   	__class__lenkeys_cloner?   r0   r1   r2   d__s        rC   r6   zDictionaryObject.clone   s    	&&**h6  5 5dnn6F Q
  Msxxz?aJJtXF
  		s   A? ?	B
Bsrcc           
         d|vrd|v sd|vrd|v sd|vrd|v sd|vrd|v rt        |      }dD ]  }|D ]  }g }||v s
|| vst        |j                  |      t              s/t	        d||         }| }	|vt	        d|j                  |j                         |            }
|j                  ||
f       |	J |
j                  |	t        |      <   |
}		 ||k(  rd}nt	        d||         }|v|D ]  \  }}|j                  |||||gz             |j                         D ]  \  }}||vst        |t              rSt        |d      sd|_        |j                  |||      }|j                  J |j                  | |j                  |      <   n|| vsst        |d	      r|j                  |||      n|| t        |      <    y# t        $ r d}Y w xY w)
update the object from src/Next/Prev/N/V))r~   r   )r   r   rs   Nr7   r6   )listr;   raw_getr%   r   r:   ru   r=   r7   r&   r9   rx   rG   r<   r>   r6   )r?   r{   r0   r1   r2   lstkobjscur_objprev_objclonscvvvs                  rC   rx   zDictionaryObject._clone   s,    M)gn},C&43;M)dck /M9 X XADSTM&s{{1~~F@D.AA BF%1#' 2 ' 8 89J9J9Lh W$D !KK$8#+#776:6M6MHZ]3'+H/#*c>.2G.23Ewqz.RG &1  '+ XFQHHQ/=TUSVCVWX7XX> IIK 	DAq%a."1&:;/3,?MJB00<<.0.C.CD*+}  'q'2 GGHo}M!" Z]+	 $- /*./s   GGGkeyc                 .    t         j                  | |      S ri   )dict__getitem__r?   r   s     rC   r   zDictionaryObject.raw_get   s    c**rH   valuec                     t        |t              st        d      t        |t              st        d      t        j	                  | ||      S Nzkey must be PdfObjectzvalue must be PdfObject)r;   r)   
ValueErrorr   __setitem__r?   r   r   s      rC   r   zDictionaryObject.__setitem__   sC    #y)455%+677c511rH   c                     t        |t              st        d      t        |t              st        d      t        j	                  | ||      S r   )r;   r)   r   r   
setdefaultr   s      rC   r   zDictionaryObject.setdefault  sA    #y)455%+677tS%00rH   c                 J    t         j                  | |      j                         S ri   )r   r   
get_objectr   s     rC   r   zDictionaryObject.__getitem__	  s    c*5577rH   c                     ddl m} | j                  dd      }|y|j                         }t	        ||      s ||      }|| t        d      <   |S )a  
        Retrieve XMP (Extensible Metadata Platform) data relevant to the
        this object, if available.

        Stability: Added in v1.12, will exist for all future v1.x releases.
        @return Returns a {@link #xmp.XmpInformation XmlInformation} instance
        that can be used to access XMP metadata from the document.  Can also
        return None if no metadata was found on the document root.
        r   )XmpInformationz	/MetadataN)xmpr   getr   r;   r&   )r?   r   metadatas      rC   xmp_metadatazDictionaryObject.xmp_metadata  sV     	)88K.&&((N3%h/H,4DK()rH   c                 4    t        ddd       | j                  S )W
        .. deprecated:: 1.28.3

            Use :meth:`xmp_metadata` instead.
        getXmpMetadatar   rS   r   r   rF   s    rC   r   zDictionaryObject.getXmpMetadata#  s     	%%5~wO   rH   c                 4    t        ddd       | j                  S )r   xmpMetadatar   rS   r   rF   s    rC   r   zDictionaryObject.xmpMetadata.       	%]NGL   rH   rI   rJ   c                    |j                  d       t        | j                               D ]K  \  }}|j                  ||       |j                  d       |j                  ||       |j                  d       M |j                  d       y )N   <<
rM      
   >>)rN   r   rG   rO   )r?   rI   rJ   r   r   s        rC   rO   z DictionaryObject.write_to_stream8  st     	Wtzz|, 	 JC7LL!!&.9LL		 
 	UrH   c                 B    t        ddd       | j                  ||       y rQ   rT   rU   s      rC   rR   zDictionaryObject.writeToStreamC  rV   rH   r8   rW   c           
         dt         dt         dt        t            dt        dt         f
fddt        dt        dt        ffd}| j                  d	      }|d
k7  r&t        dt        | j                                d      i }	 t        |       }|dk(  r|dk(  r| j                  dd       t        |        5|st        t              |dk(  r| j                  d       n| j                  dd       	 t        | |      }t        |       }| j                  dd       t        | ||      }|j-                  |      s|||<   nHdt        | j                                d| }||j                   rt        |      t%        |t&               | j                         }t        |       }|dk(  r| j                  d      dk(  r| j                  d      }|dk(  r| j                  d      }|dk(  r|dvrt        d      |dk(  r&| j                  d      dk7  r| j                  dd       t.        j0                  |vrt        d      |t.        j0                     }t3        |t4              r3| j                         }|j7                  |      }| j                  |d       | j                         }| j                  |      |d<   t        |       }| j                  d      }||z   d k7  r| j                         }| j                  d!d       | j                  d"      }|d k(  r|d   d d |d<   n|j                   s/| j                  |d        || |      |d<   | j                         }nP| j                  |d       t        d#t        | j                                d$|d%|d&      | j                  |d       d|v rt8        j;                  |      S t)               }
|
j+                  |       |
S # t        $ rl}	|%|j                   rt        |	j#                               t%        |	j#                         t&               t)               }
|
j+                  |       |
cY d }	~	S d }	~	ww xY w)'Npp1rem_gensr8   r3   c                     |j                   |d      }|D ]  }|||   kD  s| ||   k  s||   } t        |      dk(  r|S  | ||dd  |      S )Nr   r"   )xrefrv   )r   r   r   r8   loget_next_obj_poss         rC   r   z;DictionaryObject.read_from_stream.<locals>.get_next_obj_posO  sn     !%A !9QqT1B 8}!	'2x|SAArH   rI   c                 N    | j                         dt        |j                        |      dz
  }| j                         }| j                  || j                         z
        }|j	                  d      }|dk  rt        d| d      | j                  ||z   dz          |d |dz
   S )Nl        r"   	   endstreamr   z6Unable to find 'endstream' marker for obj starting at .	   )tellr   r   r[   findr    r]   )rI   r8   eoncurrrwr   r   s         rC   read_unsized_from_steamzBDictionaryObject.read_from_stream.<locals>.read_unsized_from_steam[  s    "6;;=%chhMPQQC;;=DS6;;=01B%A1u"LTFRST  KKq1%gA;rH   r      <<zDictionary read error at byte z: stream must begin with '<<'       %rY   r"      >z+Multiple definitions in dictionary at byte z	 for key    s   s   treamrM   )r      z)Stream data must be followed by a newliner   r   zStream length not definedr   __streamdata__   r   ir   z7Unable to find 'endstream' marker after stream at byte z (nd='z', end='z').)rq   r   r   r   ro   r[   r    r   r   r   r]   r   r!   r   r^   r9   strict__repr__r   rj   rs   updater   SALENGTHr;   r%   r   r<   initialize_from_dictionary)rI   r8   rW   r   r_   rA   r`   r   r   excretvalmsgposr   eollengthtpstartendstreamendr   s                        @rC   rb   z!DictionaryObject.read_from_streamI  s$   
	B
	B
	B'+Cy
	B7:
	B
	B	J 	S 	U 	 kk!n%<01G0H I. .   "%f-Cg~B"!&)$%ABBd{AKKA!&#.)&1B"#FCA 88C=!S	 Bv{{}-.iu>  ?szz&s++sH-M P kkm'9Q83++a.C +kk!n +.($%PQQe|;;q>U*KKA&yy$$%@AA"))_F&.1KKM/Aq![[]F%+[[%8D!"#F+A{{1~HH- kkmC#kk!n,&-12B-CCR-HD)*KK*-DVS-QD)* ++-CKKQ'&Q"6;;=12&HSGSVX 
 KKQt#::4@@%'FMM$MY  ?szz&s||~66s||~x8)+d#s   36O' '	Q0A!QQQc                 H    t        ddd       t        j                  | |      S rd   )r   rs   rb   rf   s     rC   re   zDictionaryObject.readFromStream  s%     	%%57I7S00==rH   rg   ri   )rj   rk   rl   r   rm   r
   r	   rn   r   r6   rx   r   r   r   r   r   r)   r   propertyr   r   r   r   ro   rO   rR   rp   r   rq   rb   re   rh   rH   rC   rs   rs      s'    !&AC	#  U38_d3i=>	
 
,>> $> 	>
 U38_d3i78> 
>@+3 +3 +2s 23 23 21c 1(3- 13 18s 8y 8 hy1  ,	!	)		! !Xi0 ! !	 	27c58H2I			5 527c58H2I5	5  HLEEE tS$s)T#s(^CDE 
	E EN >>!$>	> >rH   rs   c            
           e Zd ZddZdefdZdefdZdefdZde	e   fdZ
ded	eddfd
Zded	eddfdZdeded	eddfdZdeddfdZdededededdf
dZdeddfdZddZddZddZy)
TreeObjectr3   Nc                 .    t         j                  |        y ri   )rs   __init__rF   s    rC   r   zTreeObject.__init__  s    !!$'rH   c                 <    t        ddd       | j                         S )NhasChildrenhas_children4.0.0)r   r   rF   s    rC   r   zTreeObject.hasChildren  s    "=.'J  ""rH   c                 
    d| v S )N/Firstrh   rF   s    rC   r   zTreeObject.has_children  s    4rH   c                 "    | j                         S ri   )childrenrF   s    rC   __iter__zTreeObject.__iter__  s    }}rH   c              #      K   | j                         sy | t        d         }|j                         }	 | || t        d         k(  ry |j                  t        d            }|y |j                         }Dw)Nr   /Lastr~   )r   r&   r   r   )r?   	child_refchilds      rC   r   zTreeObject.children  s~       "H-.	$$&KZ011		*W"56I ((*E s   A5A7r   r8   c                 B    t        ddd       | j                  ||       y )NaddChild	add_childrS   )r   r   r?   r   r8   s      rC   r   zTreeObject.addChild  s    $ZgFuc"rH   c                 *    | j                  |d |       y ri   )insert_childr   s      rC   r   zTreeObject.add_child  s    %s+rH   beforec                    dt         d t        t        f   dt        dd ffd|j	                         }|j
                  }d| vrs|| t        d      <   t        d      | t        d      <   || t        d      <   | j
                  |t        d	      <    | |j                  dd
             d|v r|d= d|v r|d= y t        d| d         }|j
                  |k7  rd|v rt        d|d         }nwt        d|      |t        d      <   |j
                  |t        d      <   | j
                  |t        d	      <   d|v r|d= || t        d      <    | |j                  dd
             y |j
                  |k7  r	 t        |d   t              sJ ||d   t        d      <   |d   |t        d      <   ||t        d      <   ||t        d      <   | j
                  |t        d	      <    | |j                  dd
             y # t        $ r |d= Y \w xY w)Nparentnr3   c           	          | y t        d| j                               } d| v rNt        t        t        | t	        d               |z         | t	        d      <    | j                  dd       |       y y )Nr   /Count/Parent)r   r   r(   rq   r&   r   )r   r   inc_parent_counters     rC   r   z3TreeObject.insert_child.<locals>.inc_parent_counter  ss     ~,(9(9(;<F6!/;fZ%9:;a?0z(+, #6::i#>B	 "rH   r   r   r   r   r   r"   r~   r   rs   r   )r
   r%   r   rq   r   r7   r&   r(   r   r   r;   rs   r9   )r?   r   r   r8   	child_objprevr   s         @rC   r   zTreeObject.insert_child  s0   
	C$
:;
	C@C
	C
	C $$&	(( 4).DH%&)5aDH%&(-DG$%/3/F/FIj+,tY]]8Q%?@)#g&)#g&*DM:D%%/$L$w-8,0u,EZ()151H1H	*W-.373J3J	*Y/0i'!'*,1Z()"4x)CD %%/	#d7m-=>>16DM*W-.-1']Ij)* *.	*W%&$)Z !+/+B+B	*Y'(4x!;<  	#'"	#s   17G6 6HHc                 @    t        ddd       | j                  |       y )NremoveChildremove_childrS   )r   r  )r?   r   s     rC   r   zTreeObject.removeChild4  s    $]NGL% rH   r   prev_refcurlastc                 \   |j                  t        d      d      }||rQ|j                         }|t        d      = || t        d      <   t        | t        d         dz
        | t        d      <   y| t        d         dk(  sJ | t        d      = | t        d      = t        d      | v r| t        d      = yy|r-|j                         }||t        d      <   ||t        d      <   n!||k(  sJ |t        d      = || t        d      <   t        | t        d         dz
        | t        d      <   y)z;Adjust the pointers of the linked list and tree node count.r~   Nr   r   r   r"   r   )r   r&   r   r(   )r?   r   r  r  r  next_refnext_objs          rC   _remove_node_from_treez!TreeObject._remove_node_from_tree8  s>    77:g.5<#..0Z01-5Z)*-9H-.2.Z)* Jx01Q66H-.H-.g&$.Z01 / #..008G,-,4Z() d{"G,-,4Z())5d:h;O6PST6T)UDH%&rH   c                    |j                         }|j                  }t        d      |vrt        d      |t        d         | k7  rt        d      d}d }d }| t        d         }|j                         }| t        d         }|j                         }	|S||k(  r| j	                  ||||	       d}n7|}|}t        d      |v r|t        d         }|j                         }nd }d }|S|st        d	      t        |       y )
Nr   /Removed child does not appear to be a tree itemz*Removed child is not a member of this treeFr   r   Tr~   z"Removal couldn't find item in tree)r   r7   r&   r   r  _reset_node_tree_relationship)
r?   r   r   foundr  r   cur_refr  last_refr  s
             rC   r  zTreeObject.remove_child[  s$   $$&	,,i 	1NOOz),-5IJJ!%j&:!;(/(:(:(<
7+,""$oi++D(CF HD'"c)j12((* o  ABB%i0rH   c                 p    t        d      | vrt        d      t        d| d         j                  |        y)z:
        remove the object from the tree it is in
        r   r
  r   N)r&   r   r   r  rF   s    rC   remove_from_treezTreeObject.remove_from_tree  s6     i ,NOOtI/<<TBrH   c                 >    t        ddd       | j                          y )N	emptyTree
empty_treer   )r   r  rF   s    rC   r  zTreeObject.emptyTree  s    ";gFrH   c                     | D ]  }|j                         }t        |        t        d      | v r| t        d      = t        d      | v r| t        d      = t        d      | v r| t        d      = y y )Nr   r   r   )r   r  r&   )r?   r   r   s      rC   r  zTreeObject.empty_tree  s|     	5E((*I))4	5 h4'Z)*h4'Z)*g$&Z() 'rH   r3   N)rj   rk   rl   r   rm   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  rh   rH   rC   r   r     s    (#T # d  # +(3- +#c # # #,s ,): ,t ,5=# 5=s 5=9J 5=t 5=n! ! !!V!V#&!V-0!V8;!V	!VF#1# #1$ #1JC
*rH   r   r   r3   c                     | t        d      = t        d      | v r| t        d      = t        d      | v r| t        d      = yy)z}
    Call this after a node has been removed from a tree.

    This resets the nodes attributes in respect to that tree.
    r   r~   r   N)r&   )r   s    rC   r  r    sJ     	*Y'('i'j)*'i'j)* (rH   c                   p    e Zd ZddZdedededeee	df   e
e	   f   ddf
 fd	Zdef fd
Zeded   fd       Zej"                  dd       Zedefd       Zej"                  deddfd       Zdedede	ef   ddfdZedee	ef   ded   fd       Zedee	ef   ded   fd       ZddZddZ xZS )r<   r3   Nc                      d | _         d | _        y ri   )_StreamObject__datadecoded_selfrF   s    rC   r   zStreamObject.__init__  s    %)=ArH   r{   r0   r1   r2   .c                     t        d|      j                  | _        	 t        d|      j                  }|d| _        n|j                  |d|      | _        t
        |   ||||       y# t        $ r Y w xY w)r}   r<   NT)r   _datar  r6   r9   superrx   )r?   r{   r0   r1   r2   r  ru   s         rC   rx   zStreamObject._clone  s     .#.44
	4AAL#$(!$0$6$6x}$U! 	sHo}E  		s   8A) )	A54A5c                 T    t         |          }|t        | j                        z  }|S ri   )r  hash_value_datar   r  )r?   rA   ru   s     rC   r  zStreamObject.hash_value_data  s'    w&(4::rH   DecodedStreamObjectc                 4    t        ddd       | j                  S NdecodedSelfr  rS   r   r  rF   s    rC   r#  zStreamObject.decodedSelf      $]NGL   rH   r   c                 ,    t        ddd       || _        y r"  r$  r?   r   s     rC   r#  zStreamObject.decodedSelf      $]NGL!rH   c                     | j                   S ri   r  rF   s    rC   r  zStreamObject._data  s    {{rH   c                     || _         y ri   r*  r'  s     rC   r  zStreamObject._data  s	    rH   rI   rJ   c                 d   t        t        | j                              | t        t        j
                        <   t        j                  | ||       | t        j
                  = |j                  d       | j                  }|rddl	m
}  |||      }|j                  |       |j                  d       y )Ns   
stream
r   )RC4_encrypts
   
endstream)r(   rv   r  r&   r   r   rs   rO   rN   	_securityr-  )r?   rI   rJ   rA   r-  s        rC   rO   zStreamObject.write_to_stream  s     '33tzz?&CZ		"#((v~FO]#zz/~t4DT^$rH   rA   )EncodedStreamObjectr   c                 ,    t         j                  |       S ri   )r<   r   )rA   s    rC   initializeFromDictionaryz%StreamObject.initializeFromDictionary  s     66t<<rH   c                     t         j                  | v rt               }n
t               }| d   |_        | d= | t         j
                  = |j                  |        |S )Nr   )r   FILTERr/  r   r  r   r   )rA   r   s     rC   r   z'StreamObject.initialize_from_dictionary  sR    
 99(*F(*F,-!"OdrH   c                 <    t        ddd       | j                         S )NflateEncodeflate_encoderS   )r   r6  rF   s    rC   r5  zStreamObject.flateEncode  s    $]NGL  ""rH   c                    ddl m} t        j                  | v r| t        j                     }t	        |t
              r*|j                  dt        t        j                               nCt               }|j                  t        d             |j                  |       |}nt        d      }t               }||t        t        j                        <   |j                  | j                        |_        |S )Nr   )FlateDecoder   z/FlateDecode)filtersr8  r   r3  r;   r/   insertr&   FTFLATE_DECODEr=   r/  encoder  )r?   r8  fnewfr   s        rC   r6  zStreamObject.flate_encode  s    )99RYYA![)Jr78"}J~67A>*A$&()z"))$%"))$**5rH   r  )r   r   r3   N)r3   r/  )rj   rk   rl   r   rs   r   rm   r
   r	   rn   r   rx   ro   r  r   r   r#  setterr   r  r   rO   rp   r   r1  r   r5  r6  __classcell__)ru   s   @rC   r<   r<     ss   B $ 	
 U38_d3i78 
( 
 !X&;< ! ! " " s   \\3 4  % %27c58H2I%	% =38n=	;	<= =
 38n	;	< #rH   r<   c                   D    e Zd ZdefdZdedefdZdefdZdeddfdZy)r   r3   c                     | j                   S ri   r  rF   s    rC   get_datazDecodedStreamObject.get_data  s    zzrH   rA   c                     || _         y ri   rD  r?   rA   s     rC   set_datazDecodedStreamObject.set_data  s	    
rH   c                 4    t        ddd       | j                  S NgetDatarE  rS   )r   r  rF   s    rC   rK  zDecodedStreamObject.getData  s    $Y
GDzzrH   Nc                 @    t        ddd       | j                  |       y NsetDatarH  rS   r   rH  rG  s     rC   rN  zDecodedStreamObject.setData  s    $Y
GDdrH   )rj   rk   rl   r   rE  rH  rK  rN  rh   rH   rC   r   r     s@    # S S  C D rH   r   c                       e Zd ZddZeded   fd       Zej                  deddfd       Zde	de
ef   fdZde	de
ef   fd	Zd
eddfdZd
eddfdZy)r/  r3   Nc                     d | _         y ri   )r  rF   s    rC   r   zEncodedStreamObject.__init__$  s
    =ArH   r   c                 4    t        ddd       | j                  S r"  r$  rF   s    rC   r#  zEncodedStreamObject.decodedSelf'  r%  rH   r   c                 ,    t        ddd       || _        y r"  r$  r'  s     rC   r#  zEncodedStreamObject.decodedSelf,  r(  rH   c                 ^   ddl m} | j                  | j                  j                         S t	               } ||       |_        t        | j                               D ]<  \  }}|t        j                  t        j                  t        j                  fvs8|||<   > || _        |j
                  S )Nr   )decode_stream_data)r9  rU  r  rE  r   r  r   rG   r   r   r3  DECODE_PARMS)r?   rU  decodedr   r   s        rC   rE  zEncodedStreamObject.get_data1  s    0($$--// *+G.t4GM"4::<0 )
Uryy"))R__EE#(GCL) !(D== rH   c                 <    t        ddd       | j                         S rJ  )r   rE  rF   s    rC   rK  zEncodedStreamObject.getDataB  s    $Y
GD}}rH   rA   c                     t        d      )Nz7Creating EncodedStreamObject is not currently supported)r    rG  s     rC   rH  zEncodedStreamObject.set_dataF  s    TUUrH   c                 >    t        ddd       | j                  |      S rM  rO  rG  s     rC   rN  zEncodedStreamObject.setDataI  s    $Y
GD}}T""rH   r  )rj   rk   rl   r   r   r   r#  r@  r   r
   rn   ro   rE  rK  r   rH  rN  rh   rH   rC   r/  r/  #  s    B !X&;< ! ! "!4 " " "!%c5 01 !"tS%/0 VS VT V#C #D #rH   r/  c                   .   e Zd Z	 ddedededeee   eeef   f   ddfdZ		 	 ddede
d	eeed
f   ee   df   dd fdZdedede
d	eeed
f   ee   f   ddf
dZdeddfdZdedeeef   fdZedefd       Zej,                  deeef   ddfd       Zy)ContentStreamNrI   r8   rW   r3   c                    || _         g | _        ||j                         }t        |t              r[d}|D ]H  }|t        |j                         j                               z  }t        |      dk(  s	|d   dk7  sD|dz  }J t        |      }n*|j                         }|J t        |      }t        |      }|| _	        | j                  |       y y )NrH   r   rY   r   )r8   
operationsr   r;   r/   r   rE  rv   r   rW   $_ContentStream__parse_content_stream)	r?   rI   r8   rW   rA   r   stream_bytesstream_datastream_data_bytess	            rC   r   zContentStream.__init__O  s     
 24 &&(F&+. &ABq||~66899D4yA~bU):&  't}$oo/"..$&{O!&'89#2D ''5 rH   r0   r1   r2   .c           	          	 | j                   j                  |k(  r|s| S t        d| j	                  | j                  dd      |            }|g }|j                  | |||       |S # t        $ r Y Qw xY w)r5   r\  N)r7   r8   r9   r   r:   ru   rx   ry   s        rC   r6   zContentStream.cloneo  s    	&&**h6 T224>>$3MxX
  M

4?MB
  		s   A% %	A10A1r{   c                     || _         t        t        d|      j                        | _        t        d|      j                  | _        y)r}   r\  N)r8   r   r   r^  rW   )r?   r{   r0   r1   r2   s        rC   rx   zContentStream._clone  s>     tOS9DDE#OS9II 	rH   c                    |j                  dd       g }	 t        |      }|dk(  s|dk(  ry |j                  dd       |j                         s|dv rvt        |t        j
                  d      }|dk(  r6|g k(  sJ | j                  |      }| j                  j                  |df       nf| j                  j                  ||f       g }nF|d	k(  r|d
vr=|j                  d      }|d
vrn&|j                  t        |d | j                               )Nr   TrH   rY   r"   )   '   "   BI   INLINE IMAGEr   r   r   )r]   r   isalphar   r&   delimiter_pattern_read_inline_imager^  r=   r[   r^   rW   )r?   rI   operandspeekoperatoriis         rC   __parse_content_streamz$ContentStream.__parse_content_stream  s   Aq57&v.Ds{daiKKA||~!5+FJ4P4PRVWu$ $r>)008BOO**B+@AOO**Hh+?@!H .0!;;q>D .0 FD$:N:N OP3 rH   c                    t               }	 t        |      }|j                  dd       |dk(  rnOt        || j                        }t        |      }|j                  dd       t        || j                        }|||<   r|j                  d      }|d d dk(  sJ t               }	 |j                  d      }|st        d	      |j                  d
      }	|	dk(  r|j                  |       n|j                  |d|	        |j                  |	t        |      z
  d       |j                  d      }|j                  d      }
|
dk(  r||	dz
  |	 t        v rz|j                  d      }||
z   }d}|t        v r!d}||z  }|j                  d      }|t        v r!|r|j                  dd       nI|j                  dd       |j                  |       n#|j                  dd       |j                  |       M||j                         dS )NTrY   r"      I   r   s   IDi    zUnexpected end of stream   Er   F)settingsrA   )rs   r   r]   r^   r8   r[   r   r    r   rN   rv   r   getvalue)r?   rI   rw  r`   r   r   r_   rA   bufloctok2tok3infohas_q_whitespaces                 rC   rm  z ContentStream._read_inline_image  s    $%%f-CKKAd{fdhh/C%f-CKKA1E!HSM  kk!n2Aw%y++d#C"#=>>((4.Cby

3 

3q:& C#c(NA.kk!n{{1~4<Ca#$6+$E!;;q>D:D',$+-+/(%{{1~ +- (B*B*

4(KKA&JJsOK L %dmmo>>rH   c                 $   t               }| j                  D ]  \  }}|dk(  r|j                  d       t               }|d   j                  |d        |j                  |j	                         dd        |j                  d       |j                  |d          |j                  d       nD|D ]%  }|j                  |d        |j                  d	       ' |j                  t        |             |j                  d
        |j	                         S )Nri  rh  rw  r   s   ID rA   s   EIrM   r   )r   r^  rN   rO   rx  r   )r?   newdatarn  rp  dicttextops         rC   r  zContentStream._data  s    )"&// 	!Hh?*e$"9$44XtDh//1!B78f%hv./e$" (B&&w5MM$'( bl+MM% 	! !!rH   r   c                 J    | j                  t        t        |                   y ri   )r_  r   r   r'  s     rC   r  zContentStream._data  s    ##GBuI$67rH   ri   rg   )rj   rk   rl   r   r
   rn   r   r   rq   r   rm   r	   r6   rs   r   rx   r   r_  rm  r   ro   r  r@  rh   rH   rC   r\  r\  N  sa   
 HL	66 6 tS$s)T#s(^CD	6
 
6F !&AC	  U38_d3i=>	
 
* $ 	
 U38_d3i78 
QZ QD Q<:? :?S#X :?x "u " "& \\85e, 8 8 8rH   r\  rI   r8   rW   c           
         | j                  d      }| j                  dd       |dk(  rt        j                  | |      S |dk(  rK| j                  d      }| j                  dd       |dk(  rt        j                  | ||      S t        | |      S |dk(  rt        j                  | ||      S |d	k(  s|d
k(  rt        j                  |       S |dk(  rt        | |      S |dk(  r0| j                  d      dk(  r| j                  dd       t               S |dk(  rt        j                  |       S |dk(  r]|dvr/| j                  d      }t        |      dk  rt        d      |dvr/t        |       }| j                  dd       t        | ||      S |dv rm| j                  d      }| j                  t        |       d       t        j                  |      t!        j                  | |      S t#        j                  |       S | j                  dd       t%        d|d| j'                          d| j                  d      j)                                )Nr"   rY      /   <r   r  r   rL      t   f   (   e   s   endobji   nr   rj  r   zFile ended unexpectedly.s   0123456789+-.   iz(Invalid Elementary Object starting with z @z: P   )r[   r]   r&   rb   rs   r,   r/   r#   r-   r'   rv   r!   r   r^   IndirectPatternmatchr%   r(   r    r   r   )rI   r8   rW   r`   ro  s        rC   r^   r^     s+   
 ++a.C
KKA
d{**6377	{{1~B5=#44VS/RR.vGG	++FCII	t--f55	&v??	Q94B|	**622	'++a.C 3x1}$%?@@ ' "&)B6388	 	 {{2SYJ"  &2!2263??0088C6sgRbQWQ\Q\]_Q`QiQiQkPlm
 	
rH   c                      e Zd ZdZdeeef   ddfdZede	e
   fd       Zede	e
   fd       Zede	e   fd       Zede	d	   fd
       Zede	e   fd       Zede	e   fd       Zede	e   fd       Zede	e   fd       Zede	e   fd       Zede	e   fd       Zede	e   fd       Zede	e   fd       Zede	e   fd       Zede	e   fd       Zede	e   fd       Zy)Fieldz
    A class representing a field dictionary.

    This class is accessed through
    :meth:`get_fields()<PyPDF2.PdfReader.get_fields>`
    rA   r3   Nc                     t         j                  |        t        j                         t	        j                         z   }|D ]  }	 ||   | t        |      <    y # t        $ r Y #w xY wri   )rs   r   r   
attributesr   r&   KeyError)r?   rA   field_attributesattrs       rC   r   zField.__init__E  so    !!$'%002+6689 	 % 	D)-dZ%&	  s   A	A%$A%c                 @    | j                  t        j                        S )z4Read-only property accessing the type of this field.)r   r   r;  rF   s    rC   
field_typezField.field_typeR       xx14455rH   c                 4    t        ddd       | j                  S )zX
        .. deprecated:: 1.28.3

            Use :py:attr:`field_type` instead.
        	fieldTyper  rS   )r   r  rF   s    rC   r  zField.fieldTypeW  s     	%[,HrH   c                 @    | j                  t        j                        S )z6Read-only property accessing the parent of this field.)r   r   ParentrF   s    rC   r   zField.parenta  s     xx18899rH   r/   c                 @    | j                  t        j                        S )z4Read-only property accessing the kids of this field.)r   r   KidsrF   s    rC   kidsz
Field.kidsf  s     xx16677rH   c                 @    | j                  t        j                        S )z4Read-only property accessing the name of this field.)r   r   TrF   s    rC   namez
Field.namek  s     xx13344rH   c                 @    | j                  t        j                        S )z>Read-only property accessing the alternate name of this field.)r   r   TUrF   s    rC   alternate_namezField.alternate_namep  r  rH   c                 4    t        ddd       | j                  S )z\
        .. deprecated:: 1.28.3

            Use :py:attr:`alternate_name` instead.
        altNamer  rS   )r   r  rF   s    rC   r  zField.altNameu  s     	%Y0@'J"""rH   c                 @    | j                  t        j                        S )z
        Read-only property accessing the mapping name of this field. This
        name is used by PyPDF2 as a key in the dictionary returned by
        :meth:`get_fields()<PyPDF2.PdfReader.get_fields>`
        )r   r   TMrF   s    rC   mapping_namezField.mapping_name       xx14455rH   c                 4    t        ddd       | j                  S )zZ
        .. deprecated:: 1.28.3

            Use :py:attr:`mapping_name` instead.
        mappingNamer  rS   )r   r  rF   s    rC   r  zField.mappingName  r   rH   c                 @    | j                  t        j                        S )z
        Read-only property accessing the field flags, specifying various
        characteristics of the field (see Table 8.70 of the PDF 1.7 reference).
        )r   r   FfrF   s    rC   flagszField.flags  s     xx14455rH   c                 @    | j                  t        j                        S )zr
        Read-only property accessing the value of this field. Format
        varies based on field type.
        )r   r   VrF   s    rC   r   zField.value  s     xx13344rH   c                 @    | j                  t        j                        S )z=Read-only property accessing the default value of this field.)r   r   DVrF   s    rC   default_valuezField.default_value  r  rH   c                 4    t        ddd       | j                  S )z[
        .. deprecated:: 1.28.3

            Use :py:attr:`default_value` instead.
        defaultValuer  rS   )r   r  rF   s    rC   r  zField.defaultValue  s     	%^_gN!!!rH   c                 @    | j                  t        j                        S )z
        Read-only property accessing the additional actions dictionary.
        This dictionary defines the field's behavior in response to trigger events.
        See Section 8.5.2 of the PDF 1.7 reference.
        )r   r   AArF   s    rC   additional_actionszField.additional_actions  r  rH   c                 4    t        ddd       | j                  S )z`
        .. deprecated:: 1.28.3

            Use :py:attr:`additional_actions` instead.
        additionalActionsr  rS   )r   r  rF   s    rC   r  zField.additionalActions  s     	%%8:NPWX&&&rH   )rj   rk   rl   __doc__r   rn   r   r   r   r   r&   r  r  rs   r   r  r  r  r  r  r  rq   r  r   r  r  r  r  rh   rH   rC   r  r  =  s   
T#s(^ 
 
 6HZ0 6 6 8J/   :!12 : : 8h}- 8 8 5hsm 5 5 6 6 6 ## # # 6hsm 6 6 !Xc] ! ! 6x} 6 6 5x} 5 5 6x} 6 6 "hsm " " 6H-=$> 6 6 '8,<#= ' 'rH   r  c                      e Zd ZU dZdZee   ed<   g Ze	e
   ed<   dedeeeeef   deddfd	Zedd       ZddZdededeef   ddfdZedee   fd       Zedee   fd       Zedee   fd       Zedee   fd       Zedee   fd       Zedee   fd       Zedee   fd       Z edee   fd       Z!eded
   fd       Z"edee#   fd       Z$edee   fd       Z%y)Destinationa  
    A class representing a destination within a PDF file.
    See section 8.2.1 of the PDF 1.6 reference.

    :param str title: Title of this destination.
    :param IndirectObject page: Reference to the page of this destination. Should
        be an instance of :class:`IndirectObject<PyPDF2.generic.IndirectObject>`.
    :param Fit fit: How the destination is displayed.
    :raises PdfReadError: If destination type is invalid.


    Nnodechildstitlepagefitr3   c                    |j                   }|j                  }t        j                  |        t	        |      | t        d      <   || t        d      <   || t        d      <   |dk(  rG|\  | t        t        j                        <   | t        t        j                        <   | t        d      <   y |t        j                  k(  rp|\  | t        t        j                        <   | t        t        j                        <   | t        t        j                        <   | t        t        j                        <   y |t        j                  t        j                  fv r 	 |\  | t        t        j                        <   y |t        j"                  t        j$                  fv r 	 |\  | t        t        j                        <   y |t        j&                  t        j(                  fv ry t+        d|      # t        $ r' t!               | t        t        j                        <   Y y w xY w# t        $ r' t!               | t        t        j                        <   Y y w xY w)N/Title/Page/Typez/XYZ/ZoomzUnknown Destination Type: )fit_typefit_argsrs   r   r*   r&   TALEFTTOPTFFIT_RBOTTOMRIGHTFIT_HFIT_BHr9   r'   FIT_VFIT_BVFITFIT_Br    )r?   r  r  r  typargss         rC   r   zDestination.__init__  s    ll||!!$'%5e%<Z!"$(Z !$'Z ! &=
 	Z()Z'(Z()BHH_ Z()Z		*+Z)*Z'(RXXryy))>.2+j() RXXryy))?/3,j)* RVVRXX&&!;C7CDD  >/9|j()>
  ?0:j)*?s$   G% H %-HH-IIr/   c                 z    t        | j                  d      | d   gdD cg c]  }|| v r| |    c}z         S c c}w )Nr  r  )/Left/Bottom/Right/Topr  )r/   r   )r?   xs     rC   
dest_arrayzDestination.dest_array  sR    \\'"DM2 I9 Q
 	
s   8
c                 4    t        ddd       | j                  S )zX
        .. deprecated:: 1.28.3

            Use :py:attr:`dest_array` instead.
        getDestArrayr  rS   )r   r  rF   s    rC   r  zDestination.getDestArray  s     	%^\7KrH   rI   rJ   c                    |j                  d       t        d      }|j                  ||       |j                  d       | j                  }|j                  ||       t        d      }|j                  ||       |j                  d       t        d      }|j                  ||       |j                  d       |j                  d       y )Nr   z/DrM   z/Sz/GoTor   r   )rN   r&   rO   r  )r?   rI   rJ   r   r   value_ss         rC   rO   zDestination.write_to_stream  s     	WFN3Tfn5FN3TW%7UUrH   c                 $    | j                  d      S )z3Read-only property accessing the destination title.r  r   rF   s    rC   r  zDestination.title*  s     xx!!rH   c                 $    | j                  d      S )z9Read-only property accessing the destination page number.r  r  rF   s    rC   r  zDestination.page/       xx  rH   c                 $    | j                  d      S )z2Read-only property accessing the destination type.r  r  rF   s    rC   r  zDestination.typ4  r  rH   c                 &    | j                  dd      S )z-Read-only property accessing the zoom factor.r  Nr  rF   s    rC   zoomzDestination.zoom9       xx&&rH   c                 &    | j                  dd      S )z<Read-only property accessing the left horizontal coordinate.r  Nr  rF   s    rC   leftzDestination.left>  r  rH   c                 &    | j                  dd      S )z=Read-only property accessing the right horizontal coordinate.r  Nr  rF   s    rC   rightzDestination.rightC  s     xx$''rH   c                 &    | j                  dd      S )z9Read-only property accessing the top vertical coordinate.r  Nr  rF   s    rC   topzDestination.topH  s     xx%%rH   c                 &    | j                  dd      S )z<Read-only property accessing the bottom vertical coordinate.r  Nr  rF   s    rC   bottomzDestination.bottomM  s     xx	4((rH   c           
      t    | j                  dt        t        d      t        d      t        d      g            S )zGRead-only property accessing the color in (R, G, B) with values 0.0-1.0z/Cr   )r   r/   r$   rF   s    rC   colorzDestination.colorR  s2     xx+{1~{1~{1~NO
 	
rH   c                 &    | j                  dd      S )zDRead-only property accessing the font type. 1=italic, 2=bold, 3=bothz/Fr   r  rF   s    rC   font_formatzDestination.font_formatY  s     xxa  rH   c                 &    | j                  dd      S )z
        Read-only property accessing the outline count.
        positive = expanded
        negative = collapsed
        absolute value = number of visible descendents at all levels
        r   Nr  rF   s    rC   outline_countzDestination.outline_count^  s     xx$''rH   )r3   r/   )&rj   rk   rl   r  r  r   rs   __annotations__r  r   r   rn   r
   r(   r%   r'   r+   r   r   r  r  r   ro   rO   r  rq   r  r  r  r$   r  r  r  r  r  r   r  r  rh   rH   rC   r  r    s    	 	(  FDI)E)E L.*>NNO)E 	)E
 
)EV 
 
 27c58H2I	& "x} " " !hsm ! ! !Xc] ! ! 'hsm ' ' 'h{+ ' ' (x, ( ( &Xk* & & )- ) ) 
x. 
 
 !Xo6 ! ! (x} ( (rH   r  ri   )N
__author____author_email__loggingreior   typingr   r   r   r   r   r	   r
   r   
_protocolsr   _utilsr   r   r   r   r   r   r   r   r   r   	constantsr   r   r   r;  r   r   r   r   r  r   r  errorsr   r    r!   _baser#   r$   r%   r&   r'   r(   r)   r*   _fitr+   r,   r-   	getLoggerrj   loggerNumberSignscompiler  r   r/   r   rs   r   r  r<   r   r/  r\  rn   rq   r^   r  r  rh   rH   rC   <module>r     s  : 
/   	  J J J *   * ' . * - O O	 	 	  H			8	$"**@AP9$	 P9fu>tY u>p	~*! ~*B
+S 
+T 
+i# iX,  (#, (#Vu8' u8v DH4
4
	4
 4d3ic3h?@4
 9c3-.	4
nE'J E'Pa(* a(rH   