
    NgL              	          d dl Z d dlZd dlmZ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 ddlmZ  e j        e          Z G d de          Z G d d	e          Z G d
 de          Z G d de          Z G d de          Z G d d          Z G d de          Z G d de          Z edee          Z G d dee                   Z ee          Z  ee          Z!e j"        Z#e!j"        Z$ e$d          Z% e$d          Z& e$d          Z' e$d          Z( e$d          Z) e$d          Z*de+d efd!Z,de+d efd"Z- ej.        d#          Z/ ej.        d$          Z0 ej.        d%          Z1 ej.        d&          Z2 ej.        d'          Z3 ej.        d(          Z4 ej.        d)          Z5 ej.        d*          Z6 ej.        d'          Z7 ej.        d+          Z8 ej.        d,          Z9d-d.d/d0d1d2d3d4d5Z:ee;e<eee=f         Z> G d6 d7          Z? ed8          Z@ee;e<ee=eee@f         ZAe
eBeAe@         f         ZC G d9 d:e?ee@                   ZDdS );    N)AnyBinaryIODictGenericIteratorListOptionalTupleTypeTypeVarUnion   )settings)choplistc                       e Zd ZdS )PSExceptionN__name__
__module____qualname__     M/var/www/html/ai-engine/env/lib/python3.11/site-packages/pdfminer/psparser.pyr   r              Dr   r   c                       e Zd ZdS )PSEOFNr   r   r   r   r   r      r   r   r   c                       e Zd ZdS )PSSyntaxErrorNr   r   r   r   r   r   #   r   r   r   c                       e Zd ZdS )PSTypeErrorNr   r   r   r   r    r    '   r   r   r    c                       e Zd ZdS )PSValueErrorNr   r   r   r   r"   r"   +   r   r   r"   c                       e Zd ZdZdS )PSObjectz0Base class for all PS or PDF-related data types.N)r   r   r   __doc__r   r   r   r$   r$   /   s        ::Dr   r$   c                   B    e Zd ZdZeeef         ZdeddfdZdefdZ	dS )	PSLiteralaa  A class that represents a PostScript literal.

    Postscript literals are used as identifiers, such as
    variable names, property names and dictionary keys.
    Literals are case sensitive and denoted by a preceding
    slash sign (e.g. "/Name")

    Note: Do not create an instance of PSLiteral directly.
    Always use PSLiteralTable.intern().
    namereturnNc                     || _         d S Nr(   selfr(   s     r   __init__zPSLiteral.__init__D       			r   c                     | j         }d|z  S Nz/%rr,   r-   s     r   __repr__zPSLiteral.__repr__G       yt|r   )
r   r   r   r%   r   strbytesNameTyper/   r3   r   r   r   r'   r'   5   sk        	 	 S%Z HX $    #      r   r'   c                   .    e Zd ZdZdeddfdZdefdZdS )	PSKeywordaN  A class that represents a PostScript keyword.

    PostScript keywords are a dozen of predefined words.
    Commands and directives in PostScript are expressed by keywords.
    They are also used to denote the content boundaries.

    Note: Do not create an instance of PSKeyword directly.
    Always use PSKeywordTable.intern().
    r(   r)   Nc                     || _         d S r+   r,   r-   s     r   r/   zPSKeyword.__init__X   r0   r   c                     | j         }d|z  S r2   r,   r-   s     r   r3   zPSKeyword.__repr__[   r4   r   )r   r   r   r%   r6   r/   r5   r3   r   r   r   r9   r9   L   s[         U t    #      r   r9   _SymbolTc                   H    e Zd ZdZdee         ddfdZdej        defdZ	dS )PSSymbolTablezA utility class for storing PSLiteral/PSKeyword objects.

    Interned objects can be checked its identity with "is" operator.
    klassr)   Nc                 "    i | _         || _        d S r+   dictr?   )r.   r?   s     r   r/   zPSSymbolTable.__init__i   s    8:	%*


r   r(   c                 r    || j         v r| j         |         }n|                     |          }|| j         |<   |S r+   rA   )r.   r(   lits      r   internzPSSymbolTable.internm   s?    49)D/CC **T""C!DIdO
r   )
r   r   r   r%   r   r<   r/   r'   r7   rE   r   r   r   r>   r>   c   si         
+d8n + + + + +9- (      r   r>      {   }   [   ]s   <<s   >>xr)   c                    t          | t                    s1t          j        r"t	          d                    |                     | }n>| j        }t          |t                    s"	 t          |d          }n# t          $ r Y nw xY w|S )NzLiteral required: {!r}utf-8)	
isinstancer'   r   STRICTr    formatr(   r5   	ExceptionrJ   r(   s     r   literal_namerR      s    a## ? 	6==a@@AAADDv$$$ 	4))   Ks   $A5 5
BBc                     t          | t                    s!t          j        rt	          d| z            | }nt          | j        dd          }|S )NzKeyword required: %rrL   ignore)rM   r9   r   rN   r    r5   r(   rQ   s     r   keyword_namerU      sQ    a## .? 	4q8999DD167H--Kr   s   [\r\n]s   \ss   \Ss   [0-9a-fA-F]s   [#/%\[\]()<>{}\s]s   [^\s0-9a-fA-F]s   [0-9a-fA-F]{2}|.s   [^0-9]s   [()\134]s   [0-7]   	   
         (   )   \   )   b   t   n   f   r   (   )   \c                      e Zd ZdZdZdeddfdZdefdZd$dZ	d$d	Z
defd
Zd%dee         deddfdZdeddfdZd$dZdeeef         fdZdee         fdZdededefdZdeddfdZdededefdZdededefdZdededefdZdededefdZdededefdZdededefdZdededefdZdededefdZ dededefd Z!dededefd!Z"dededefd"Z#deeef         fd#Z$dS )&PSBaseParserz=Most basic PostScript parser that performs only tokenization.i   fpr)   Nc                 >    || _         |                     d           d S Nr   )rh   seekr.   rh   s     r   r/   zPSBaseParser.__init__   s    		!r   c                 :    d| j         j        | j        | j        fz  S )Nz<%s: %r, bufpos=%d>)	__class__r   rh   bufposr.   s    r   r3   zPSBaseParser.__repr__   s    $(?$+'VVVr   c                     d S r+   r   rp   s    r   flushzPSBaseParser.flush       r   c                 .    |                                   d S r+   )rr   rp   s    r   closezPSBaseParser.close   s    

r   c                      | j         | j        z   S r+   )ro   charposrp   s    r   tellzPSBaseParser.tell   s    {T\))r   P   posnc                 *   | j                                         }|s| j        | j        z   }| j                             |           t
                              d|| j                             |                     | j                             |           d S )Nzpoll(%d): %r)rh   rx   ro   rw   rk   logdebugread)r.   rz   r{   pos0s       r   pollzPSBaseParser.poll   sv    w||~~ 	-+,CS		.#tw||A777Tr   c                     t                               d|           | j                            |           || _        d| _        d| _        | j        | _        d| _	        d| _
        g | _        dS )z'Seeks the parser to the given position.zseek: %rr   r   N)r}   r~   rh   rk   ro   bufrw   _parse_main_parse1	_curtoken_curtokenpos_tokensr.   rz   s     r   rk   zPSBaseParser.seek   sd    		*c"""S'<>r   c                    | j         t          | j                  k     rd S | j                                        | _        | j                            | j                  | _        | j        st          d          d| _         d S )NzUnexpected EOFr   )	rw   lenr   rh   rx   ro   r   BUFSIZr   rp   s    r   fillbufzPSBaseParser.fillbuf   si    <#dh--''Fgllnn7<<,,x 	*()))r   c                 b   d}| j         | j        z   }d}	 |                                  |r8| j        | j        | j        dz            }|dk    r||z  }| xj        dz  c_        nt                              | j        | j                  }|rV|| j        | j        |                    d                   z  }|                    d          | _        |dd         dk    rd	}n1n1|| j        | j        d         z  }t          | j                  | _        t          	                    d
||           ||fS )z3Fetches a next line that ends either with \r or \n.r   Fr      
r   N   Tznextline: %r, %r)
ro   rw   r   r   EOLsearchendr   r}   r~   )r.   linebuflineposeolcms         r   nextlinezPSBaseParser.nextline   s1   +,	-LLNNN HT\DL1,<<=::qLGLLA%LL

48T\22A 	-48DL15588$;<< uuQxx233<5((CC48DLNN33"48}}'	-( 			$gw777!!r   c              #     K   | j                             dd           | j                                         }d}d|k     r|}t          d|| j        z
            }| j                             |           | j                             ||z
            }|sne	 t          |                    d          |                    d                    }|dk    r||z   }n||d         |z   V  |d|         }d}^d|k     dS )	ziFetches a next line backword.

        This is used to locate the trailers at the end of a file.
        r      r   r   r   r   r   N)rh   rk   rx   maxr   r   rfind)r.   rz   r   prevpossr{   s         r   revreadlineszPSBaseParser.revreadlines  s
     
 	Qgllnn#ggGat{*++CGLLWs]++A 7777c'Ceck!!!bqbE #gg 	r   r   ic                 N   t                               ||          }|st          |          S |                    d          }|||dz            }| j        |z   | _        |dk    rd| _        | j        | _        |dz   S |dk    rd| _        | j	        | _        |dz   S |dv s|
                                r|| _        | j        | _        |dz   S |dk    r|| _        | j        | _        |dz   S |                                r|| _        | j        | _        |dz   S |dk    rd| _        d| _        | j        | _        |dz   S |d	k    rd| _        | j        | _        |dz   S |d
k    rd| _        | j        | _        |dz   S |dk    r|dz   S |                     t)          |                     |dz   S )Nr   r      %   /r   s   -+   .rc      <   >    )NONSPCr   r   startro   r   r   _parse_commentr   _parse_literalisdigit_parse_number_parse_floatisalpha_parse_keywordparen_parse_string_parse_wopen_parse_wclose
_add_tokenKWDr.   r   r   r   jr   s         r   r   zPSBaseParser._parse_main)  s   MM!Q 	q66MGGAJJa!a%iL K!O99!DN.DLq5L$YY DN.DLq5L%ZZ199;;ZDN-DLq5L$YYDN,DLq5LYY[[ 	DN.DLq5L$YY DNDJ-DLq5L$YY DN,DLq5L$YY DN-DLq5L'\\q5LOOCFF###q5Lr   objc                 H    | j                             | j        |f           d S r+   )r   appendr   )r.   r   s     r   r   zPSBaseParser._add_tokenW  s%    T.4555r   c                     t                               ||          }|s'| xj        ||d          z  c_        t          |          S |                    d          }| xj        |||         z  c_        | j        | _        |S rj   )r   r   r   r   r   r   r   r.   r   r   r   r   s        r   r   zPSBaseParser._parse_comment[  sx    JJq! 	NNae#NNq66MGGAJJ!AaC& ' r   c                    t                               ||          }|s'| xj        ||d          z  c_        t          |          S |                    d          }| xj        |||         z  c_        |||dz            }|dk    rd| _        | j        | _        |dz   S 	 t          | j        d          }n# t          $ r
 | j        }Y nw xY w| 
                    t          |                     | j        | _        |S )Nr   r      #r   rL   )END_LITERALr   r   r   r   hex_parse_literal_hexr   r5   rP   r   LITr   )r.   r   r   r   r   r   r(   s          r   r   zPSBaseParser._parse_literalg  s   q!$$ 	NNae#NNq66MGGAJJ!AaC& a!a%iL99DH2DLq5L	"&)$.'&B&BDD 	" 	" 	">DDD	"D		"""'s   B4 4CCc                 6   |||dz            }t                               |          r-t          | j                  dk     r| xj        |z  c_        |dz   S | j        r1| xj        t          t          | j        d          f          z  c_        | j        | _        |S )Nr   r      )	HEXmatchr   r   r   r6   intr   r   r.   r   r   r   s       r   r   zPSBaseParser._parse_literal_hex{  s    a!a%iL99Q<< 	CMMA--HHMHHq5L8 	:NNeS2%6%6$8999NN*r   c                    t                               ||          }|s'| xj        ||d          z  c_        t          |          S |                    d          }| xj        |||         z  c_        |||dz            }|dk    r!| xj        |z  c_        | j        | _        |dz   S 	 |                     t          | j                             n# t          $ r Y nw xY w| j
        | _        |S )Nr   r   r   )
END_NUMBERr   r   r   r   r   r   r   r   
ValueErrorr   r   s         r   r   zPSBaseParser._parse_number  s    a## 	NNae#NNq66MGGAJJ!AaC& a!a%iL99NNaNN,DLq5L	OOC//0000 	 	 	D	's   ''C 
CCc                 r   t                               ||          }|s'| xj        ||d          z  c_        t          |          S |                    d          }| xj        |||         z  c_        	 |                     t          | j                             n# t          $ r Y nw xY w| j        | _	        |S rj   )
r   r   r   r   r   r   floatr   r   r   r   s        r   r   zPSBaseParser._parse_float  s    a## 	NNae#NNq66MGGAJJ!AaC& 	OOE$.112222 	 	 	D	's   3'B 
B('B(c                    t                               ||          }|s'| xj        ||d          z  c_        t          |          S |                    d          }| xj        |||         z  c_        | j        dk    rd}n"| j        dk    rd}nt          | j                  }|                     |           | j        | _        |S )Nr   s   trueTs   falseF)	END_KEYWORDr   r   r   r   r   r   r   r   r.   r   r   r   r   tokens         r   r   zPSBaseParser._parse_keyword  s    q!$$ 	NNae#NNq66MGGAJJ!AaC& >W$$,0EE^x''EE''E'r   c                 J   t                               ||          }|s'| xj        ||d          z  c_        t          |          S |                    d          }| xj        |||         z  c_        |||dz            }|dk    rd| _        | j        | _        |dz   S |dk    r%| xj        dz  c_        | xj        |z  c_        |dz   S |dk    r,| xj        dz  c_        | j        r| xj        |z  c_        |dz   S | 	                    | j                   | j
        | _        |dz   S )Nr   r   re   r   rc   rd   )
END_STRINGr   r   r   r   oct_parse_string_1r   r   r   r   r   s         r   r   zPSBaseParser._parse_string  s0   a## 	NNae#NNq66MGGAJJ!AaC& a!a%iL::DH/DLq5L99JJ!OJJNNaNNq5L99JJ!OJJz !#1u''''1ur   c                 (   |||dz            }t                               |          r-t          | j                  dk     r| xj        |z  c_        |dz   S | j        r?| xj        t          t          | j        d          f          z  c_        | j        | _        |S |t          v r*| xj        t          t          |         f          z  c_        n5|dk    r/t          |          |dz   k    r||dz   |dz            dk    r|dz  }| j        | _        |dz   S )z;Parse literal strings

        PDF Reference 3.2.3
        r      rV   r   r   r   )

OCT_STRINGr   r   r   r   r6   r   r   r   
ESC_STRINGr   s       r   r   zPSBaseParser._parse_string_1  s   
 a!a%iLA 	3tx==1#4#4HHMHHq5LX 	NNeS1%5%5$7888NN-DLH*__NNeZ]$4555NNN%ZZCFFQUNNqQQ/?5/H/H FA )1ur   c                     |||dz            }|dk    r,|                      t                     | j        | _        |dz  }n| j        | _        |S )Nr   r   )r   KEYWORD_DICT_BEGINr   r   _parse_hexstringr   s       r   r   zPSBaseParser._parse_wopen  sS    a!a%iL99OO.///+DLFAA0DLr   c                     |||dz            }|dk    r|                      t                     |dz  }| j        | _        |S )Nr   r   )r   KEYWORD_DICT_ENDr   r   r   s       r   r   zPSBaseParser._parse_wclose  sG    a!a%iL99OO,---FA'r   c                    t                               ||          }|s'| xj        ||d          z  c_        t          |          S |                    d          }| xj        |||         z  c_        t
                              d t                              d| j                            }|                     |           | j	        | _
        |S )Nr   c                 d    t          t          |                     d          d          f          S )Nr   r   )r6   r   group)r   s    r   <lambda>z/PSBaseParser._parse_hexstring.<locals>.<lambda>  s%    eSR00233 r   r   )END_HEX_STRINGr   r   r   r   HEX_PAIRsubSPCr   r   r   r   s         r   r   zPSBaseParser._parse_hexstring  s    !!!Q'' 	NNae#NNq66MGGAJJ!AaC& 33SWWS$.5Q5Q
 
 	'r   c                     | j         s@|                                  |                     | j        | j                  | _        | j         @| j                             d          }t                              d|           |S )Nr   znexttoken: %r)r   r   r   r   rw   popr}   r~   )r.   r   s     r   	nexttokenzPSBaseParser.nexttoken  sp    , 	@LLNNN<<$,??DL , 	@   ##		/5)))r   r)   N)Nry   )%r   r   r   r%   r   r   r/   r5   r3   rr   ru   r   rx   r	   r   rk   r   r
   r6   r   r   r   r   PSBaseParserTokenr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rg   rg      s       GGF8     W# W W W W      *c * * * *   d         	 	 	 	"%U
+ " " " ":huo    2,U ,s ,s , , , ,\/ D    
 
# 
# 
 
 
 
 # #    (E c c    u      &e       # #    "u      4 3 3    6e      u      % C C    5&7!78      r   rg   ExtraTc                   2   e Zd ZdeddfdZddZdeddfdZdee	         ddfd	Z
d
edeee	                  fdZdeee	                  fdZdee	         ddfdZdededdfdZdedeeeee	                  f         fdZdededdfdZdee	         fdZdS )PSStackParserrh   r)   Nc                 d    t                               | |           |                                  d S r+   )rg   r/   resetrl   s     r   r/   zPSStackParser.__init__   s*    dB'''

r   c                 >    g | _         d | _        g | _        g | _        d S r+   )contextcurtypecurstackresultsrp   s    r   r   zPSStackParser.reset%  s#    TV&*4635r   rz   c                 d    t                               | |           |                                  d S r+   )rg   rk   r   r   s     r   rk   zPSStackParser.seek,  s*    $$$$

r   objsc                 :    | j                             |           d S r+   )r   extendr.   r   s     r   pushzPSStackParser.push1  s    T"""r   r{   c                 @    | j         | d          }g | j         | d <   |S r+   r   )r.   r{   r   s      r   r   zPSStackParser.pop5  s+    }aRSS!qbccr   c                 "    | j         }g | _         |S r+   r   r   s     r   popallzPSStackParser.popall:  s    }r   c                     	 t                               d|           n*# t          $ r t                               d           Y nw xY w| j                            |           d S )Nzadd_results: %rz!add_results: (unprintable object))r}   r~   rP   r   r   r   s     r   add_resultszPSStackParser.add_results?  sn    	;II'.... 	; 	; 	;II9:::::	;D!!!s    $AAtypec                     | j                             || j        | j        f           |g c| _        | _        t                              d||           d S )Nzstart_type: pos=%r, type=%r)r   r   r   r   r}   r~   )r.   rz   r  s      r   
start_typezPSStackParser.start_typeG  sO    S$,>???)-r%t}		/d;;;r   c                    | j         |k    r(t          d                    | j         |                    d | j        D             }| j                                        \  }| _         | _        t                              d|||           ||fS )NzType mismatch: {!r} != {!r}c                     g | ]\  }}|S r   r   ).0_r   s      r   
<listcomp>z*PSStackParser.end_type.<locals>.<listcomp>P  s    222C222r   z"end_type: pos=%r, type=%r, objs=%r)r   r    rO   r   r   r   r}   r~   )r.   r  r   rz   s       r   end_typezPSStackParser.end_typeM  s    <4;BB4<QUVVWWW22DM222-1\-=-=-?-?*dlDM		6T4HHHT{r   r   c                     d S r+   r   )r.   rz   r   s      r   
do_keywordzPSStackParser.do_keywordU  rs   r   c           	      P   | j         s|                                 \  }}t          |t          t          t
          t          t          t          f          r| 	                    ||f           n3|t          k    r|                     |d           n|t          k    rI	 | 	                    |                     d                     n# t          $ r t          j        r Y nw xY w|t"          k    r|                     |d           n|t$          k    r	 |                     d          \  }}t'          |          dz  dk    rd|z  }t)          |          d t+          d|          D             }| 	                    ||f           n# t          $ r t          j        r Y nw xY w|t,          k    r|                     |d           n|t.          k    rG	 | 	                    |                     d                     n# t          $ r t          j        r Y nw xY wt          |t0                    r9t2                              d||| j                   |                     ||           n9t2                              d	||| j                   |                     ||            | j        r|                                  | j         | j                              d          }	 t2                              d
|           n*# tB          $ r t2                              d           Y nw xY w|S )zYields a list of objects.

        Arrays and dictionaries are represented as Python lists and
        dictionaries.

        :return: keywords, literals, strings, numbers, arrays and dictionaries.
        adr   r   z Invalid dictionary construct: %rc                 8    i | ]\  }}|t          |          |S r+   )rR   )r
  kvs      r   
<dictcomp>z,PSStackParser.nextobject.<locals>.<dictcomp>y  s1       "Q= %Q(==r   pz&do_keyword: pos=%r, token=%r, stack=%rz)unknown token: pos=%r, token=%r, stack=%rznextobject: %rz nextobject: (unprintable object))"r   r   rM   r   r   boolr5   r6   r'   r   KEYWORD_ARRAY_BEGINr  KEYWORD_ARRAY_ENDr  r    r   rN   r   r   r   r   r   KEYWORD_PROC_BEGINKEYWORD_PROC_ENDr9   r}   r~   r   r  errorr   rr   r   rP   )r.   rz   r   r   	error_msgr  r   s          r   
nextobjectzPSStackParser.nextobjectX  sv    , =	>>++LS%%#udC	!JKK 7		3,''''---S))))+++IIdmmC001111"      ,,,S))))***"&--"4"4KS$4yy1}))$F$M	+I666 &.q$&7&7  A
 IIsAh''''"      ,,,S))))***IIdmmC001111"      E9-- 		<c5$-   U++++		?M	   U+++| 

{ , =	| lq!!	:II&,,,, 	: 	: 	:II899999	:
sI   (C C! C!A3F F"!F"(G< <HH K< <$L#"L#r   )r   r   r   r   r/   r   r   rk   PSStackEntryr   r   r   r   r  r  r5   r  r
   PSStackTyper  r9   r  r  r   r   r   r   r     s       8     
        
,v. 4    S T,v"67    
\&12    
f!5 $    c      S U3[5H0I+I%J    c )     KL0 K K K K K Kr   r   )Eloggingretypingr   r   r   r   r   r   r	   r
   r   r   r    r   utilsr   	getLoggerr   r}   rP   r   r   r   r    r"   r$   r'   r9   r<   r>   PSLiteralTablePSKeywordTablerE   r   r   r  r  r  r  r   r   objectrR   rU   compiler   r   r   r   r   r   r   r   r   r   r   r   r   r  r6   r   rg   r   r!  r   r   r   r   r   r   <module>r,     s  
  				                                     g!!	 	 	 	 	) 	 	 		 	 	 	 	K 	 	 		 	 	 	 	K 	 	 		 	 	 	 	+ 	 	 		 	 	 	 	; 	 	 		 	 	 	 	 	 	 	       .       ( 7:y)44    GH%   * y))y))SYY 3t99 c$ii CII SZZ 3u:: F s     F s     bjbj	F		bj!!bj.//.//2:*++RZ
##
bj.//RZ%%
RZ	""







	 	
 %y)UBC Y Y Y Y Y Y Y YB 
		E4E4vEFS+f--.D D D D DL'&/ D D D D Dr   