§
    ¡”j/2  ã                   óø   — d dl Z d dlmZ d dlmZ ddlmZmZmZm	Z	m
Z
mZ ddlmZ  e j        e¦  «        ZdZde	d	efd
„Zde	d	efd„Zde	d	efd„Zde	d	efd„Zded	efd„Zde	d	efd„Zddee         ded	efd„ZdS )é    N)ÚBytesIO)ÚIOé   )ÚWHITESPACESÚWHITESPACES_AS_BYTESÚBinaryStreamTypeÚ
StreamTypeÚlogger_warningÚread_non_whitespace)ÚPdfReadErrori    ÚstreamÚreturnc                 óÖ   — t          | ¦  «        }||                      d¦  «        z  }|                      dd¦  «         |d d…         dk    o|dd…         dk    p|dd…         t          v S )Nr   éýÿÿÿé   ó   EIé   ó    )r   ÚreadÚseekr   )r   Úei_toks     új/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/pypdf/generic/_image_inline.pyÚ_check_end_image_markerr   1   sn   € Ý  Ñ(Ô(€FØ
ˆf�kŠk˜!‰nŒnÑ€FØ
‡K‚K��AÑÔÐØ�"�1�"Œ:˜ÒÐU F¨1¨Q¨3¤K°3Ò$6Ð$T¸&ÀÀ1À¼+ÍÐ:TÐUr   c                 óˆ  — t          ¦   «         }	 t          | ¦  «        |                      t          ¦  «        z   }|st	          d¦  «        ‚|                     d¦  «        }|dk    r;||d|dz   …         z  }|                      t          |¦  «         |z   dz   d¦  «         nö|                     d¦  «        }|dk    r�|                      t          |¦  «         |z   dz
  d¦  «         |                      d¦  «        }|t          v r9|                      dd¦  «         |                      d¦  «        }|dz  }|t          v °9||d|…         z  }nLt          |¦  «        d	k    r||z  }t	          d¦  «        ‚||dd…         z  }|                      dd¦  «         �Œ‡t          | ¦  «        st	          d
¦  «        ‚t          |¦  «        S )z`
    Extract HexEncoded stream from inline image.
    The stream will be moved onto the EI.
    TúUnexpected end of streamó   >r   Nr   r   éþÿÿÿr   úEI stream not found)Ú	bytearrayr   r   ÚBUFFER_SIZEr   Úfindr   Úlenr   r   Úbytes)r   Údata_outÚdata_bufferedÚpos_tokÚpos_eiÚcs         r   Ú extract_inline__ascii_hex_decoder)   8   sÛ  € õ
 ‰{Œ{€HðÝ+¨FÑ3Ô3°f·k²kÅ+Ñ6NÔ6NÑNˆØð 	;ÝÐ9Ñ:Ô:Ð:Ø×$Ò$ TÑ*Ô*ˆØ�aŠ<ˆ<Ø˜ m¨°!© mÔ4Ñ4ˆHØ�KŠK�˜]Ñ+Ô+Ð+¨gÑ5¸Ñ9¸1Ñ=Ô=Ð=ØØ×#Ò# EÑ*Ô*ˆØ�QŠ;ˆ;Ø�KŠK�˜]Ñ+Ô+Ð+¨fÑ4°qÑ8¸!Ñ<Ô<Ð<Ø—’˜A‘”ˆAØ•{Ð"Ð"Ø—’˜B Ñ"Ô"Ð"Ø—K’K ‘N”N�Ø˜!‘�ð •{Ð"Ð"ð ˜ g v gÔ.Ñ.ˆHØÝˆ}ÑÔ Ò"Ð"Ø˜Ñ%ˆHÝÐ9Ñ:Ô:Ð:à�M # 2 #Ô&Ñ&ˆØ�Š�B˜ÑÔÐñ1õ4 # 6Ñ*Ô*ð 2ÝÐ0Ñ1Ô1Ð1Ý�‰?Œ?Ðr   c                 ó2  — t          ¦   «         }	 t          | ¦  «        |                      t          ¦  «        z   }|st	          d¦  «        ‚|                     d¦  «        }|dk    r;||d|dz   …         z  }|                      t          |¦  «         |z   dz   d¦  «         nKt          |¦  «        dk    r||z  }t	          d¦  «        ‚||dd…         z  }|                      dd¦  «         ŒÜt          | ¦  «        st	          d	¦  «        ‚t          |¦  «        S )
zY
    Extract A85 stream from inline image.
    The stream will be moved onto the EI.
    Tr   s   ~>r   Nr   r   r   r   )
r   r   r   r    r   r!   r   r"   r   r#   )r   r$   r%   r&   s       r   Úextract_inline__ascii85_decoder+   ^   s2  € õ
 ‰{Œ{€HðÝ+¨FÑ3Ô3°f·k²kÅ+Ñ6NÔ6NÑNˆØð 	;ÝÐ9Ñ:Ô:Ð:Ø×$Ò$ UÑ+Ô+ˆØ�aŠ<ˆ<Ø˜ m¨°!© mÔ4Ñ4ˆHØ�KŠK�˜]Ñ+Ô+Ð+¨gÑ5¸Ñ9¸1Ñ=Ô=Ð=ØÝˆ}ÑÔ Ò"Ð"Ø˜Ñ%ˆHÝÐ9Ñ:Ô:Ð:Ø�MØˆRˆCô
ñ 	
ˆð 	�Š�B˜ÑÔÐðõ" # 6Ñ*Ô*ð 2ÝÐ0Ñ1Ô1Ð1Ý�‰?Œ?Ðr   c                 óÎ  — t          ¦   «         }	 |                      t          ¦  «        }|st          d¦  «        ‚|                     d¦  «        }|dk    rÝ||dz   |dz   …         }|                     d¦  «        s|                     d¦  «        r;||d|dz   …         z  }|                      t          |¦  «         |z   dz   d¦  «         ngt          d	t          ¦  «         |                     d¦  «        }|dk    r7||d|…         z  }|                      t          |¦  «         |z   dz
  d¦  «         n||z  }�Œ*t          | ¦  «        st          d
¦  «        ‚t          |¦  «        S )zj
    Extract RL (RunLengthDecode) stream from inline image.
    The stream will be moved onto the EI.
    Tr   ó   €r   r   é   r   Nz=Early EOD in RunLengthDecode of inline image, using fallback.r   )r   r   r    r   r!   Ú
startswithÚendswithr   r"   r
   Ú__name__r   r#   )r   r$   r%   r&   Úafter_tokenÚ	ei_markers         r   Ú!extract_inline__run_length_decoder4   {   sˆ  € õ
 ‰{Œ{€Hð"ØŸš¥KÑ0Ô0ˆØð 	;ÝÐ9Ñ:Ô:Ð:Ø×$Ò$ WÑ-Ô-ˆØ�aŠ<ˆ<ð (¨°!©°gÀ±kÐ(AÔBˆKØ×%Ò% eÑ,Ô,ð H°×0DÒ0DÀUÑ0KÔ0Kð HØ˜M¨-¨G°a©K¨-Ô8Ñ8�Ø—’�S Ñ/Ô/Ð/°'Ñ9¸AÑ=¸qÑAÔAÐAÐAåÐ^Õ`hÑiÔiÐiØ)×.Ò.¨uÑ5Ô5�	Ø˜q’=�=Ø ¨k°	¨kÔ :Ñ:�HØ—K’K¥ ]Ñ!3Ô!3Ð 3°iÑ ?À!Ñ CÀQÑGÔGÐGØØ�MÑ!ˆñ3"õ6 # 6Ñ*Ô*ð 2ÝÐ0Ñ1Ô1Ð1Ý�‰?Œ?Ðr   c                 óÔ  ‡ — dt           dt          fˆ fd„}t          ¦   «         }d}	  |d¦  «        }|s|dk    r||z  }|dk    rŒ d} |d¦  «        }||z  }|dk    r‰                      dd¦  «         nG|d	k    rn@|d
k    rn:|dv r5 |d¦  «        }||z  }|d         dz  |d         z   }| ||dz
  ¦  «        z  }Œ–t	          ‰ ¦  «        st          d¦  «        ‚t          |¦  «        S )z`
    Extract DCT (JPEG) stream from inline image.
    The stream will be moved onto the EI.
    Úlengthr   c                 óz   •— ‰                      | ¦  «        }|�t          |¦  «        | k    rt          d¦  «        ‚|S )Nr   )r   r"   r   )r6   Ú_resultr   s     €r   r   z(extract_inline__dct_decode.<locals>.read§   s?   ø€ ð —+’+˜fÑ%Ô%ˆØˆ?�c '™lœl¨fÒ4Ð4ÝÐ9Ñ:Ô:Ð:Øˆr   FTr   ó   ÿéÿÿÿÿó    ó   Ùs&   ÀÁÂÃÄÅÆÇÉÊËÌÍÎÏÚÛÜÝÞßàáâãäåæçèéêëìíîïþr   r   é   r   )Úintr#   r   r   r   r   )r   r   r$   Ú	not_firstr(   Úszs   `     r   Úextract_inline__dct_decoderA   ¢   sT  ø€ ð
•Sð �Uð ð ð ð ð ð õ ‰{Œ{€Hð €Ið%ØˆD�‰GŒGˆØð 	˜˜gš˜Ø˜‰MˆHØ�Š<ˆ<ØØˆ	ØˆD�‰GŒGˆØ�A‰ˆØ�Š<ˆ<Ø�KŠK˜˜AÑÔÐÐØ�'Š\ˆ\ØØ�'Š\ˆ\ØØðTð
ð 
ð
 ��Q‘”ˆAØ˜‰MˆHØ�1”˜‘˜a œdÑ"ˆBØ˜˜˜R !™V™œÑ$ˆHð/%õ2 # 6Ñ*Ô*ð 2ÝÐ0Ñ1Ô1Ð1Ý�‰?Œ?Ðr   c                 ó  — t          ¦   «         }	 |                      t          ¦  «        }|st          d¦  «        ‚|                     d¦  «        }|dk    r|                     |¦  «         �nŠ|                     |d|dz   …         ¦  «         |                     ¦   «         dz
  }|                      |dz   t          |¦  «        z
  d¦  «         |                      ¦   «         }|                      d¦  «        }|dk    r|                      |d¦  «         �Œ|                      d¦  «        }|t          vr|                      |d¦  «         �Œ;|t          v r|                      d¦  «        }|t          v °||dz
  |…         t          vr|dvr|                      |d¦  «         �Œ’t          | ¦  «        r|                      |d¦  «         �Œ¹|                      |dz
  d¦  «         |                     |¦  «         n�Œé|                     ¦   «         S )	zLegacy method, used by defaultTr   ó   Er:   r   r   ó   I>   rC   ó   Q)r   r   r    r   r!   ÚwriteÚtellr   r"   r   Úis_followed_by_binary_dataÚtruncateÚgetvalue)r   Ú
stream_outr%   r'   Ú
sav_pos_eiÚ	saved_posÚtok2Útok3s           r   Úextract_inline_defaultrP   Ñ   s  € å‘”€Jð+ØŸš¥KÑ0Ô0ˆØð 	;ÝÐ9Ñ:Ô:Ð:Ø×#Ò#Øñ
ô 
ˆð �RŠ<ˆ<Ø×Ò˜]Ñ+Ô+Ð+Ñ+ð ×Ò˜]¨1¨v¸©z¨>Ô:Ñ;Ô;Ð;Ø#ŸšÑ*Ô*¨QÑ.ˆJà�KŠK˜ ™
¥S¨Ñ%7Ô%7Ñ7¸Ñ;Ô;Ð;ØŸš™œˆIà—;’;˜q‘>”>ˆDØ�tŠ|ˆ|Ø—’˜I qÑ)Ô)Ð)ÙØ—;’;˜q‘>”>ˆDØ�;Ð&Ð&Ø—’˜I qÑ)Ô)Ð)ÙØ�+Ð%Ð%Ø—{’{ 1‘~”~�ð �+Ð%Ð%à˜V a™Z¨&Ð0Ô1½ÐDÐDÈð Vð Jð Jð —’˜I qÑ)Ô)Ð)ÙÝ)¨&Ñ1Ô1ð ð —’˜I qÑ)Ô)Ð)Ùð �KŠK˜	 A™ qÑ)Ô)Ð)Ø×Ò 
Ñ+Ô+Ð+ØñW+ðZ ×ÒÑ Ô Ð r   é
   r6   c                 óÚ  — |                       ¦   «         }|                      |¦  «        }|                      |¦  «         |sdS d}d}t          |¦  «        D ].\  }}|dk     r|t          vr dS |t          v }|€|s|}|�|r|} nŒ/|€dS |€|}||z
  }	|||…         }
|
                     d¦  «        r|	dk    rdS |
                     dd¦  «                             ¦   «         rdS |	d	k    rdS dS )
a×  
    Check if the next bytes of the stream look like binary image data or regular page content.

    This is just some heuristics due to the PDF specification being too imprecise about
    inline images containing the `EI` marker which would end an image. Starting with PDF 2.0,
    we finally get a mandatory length field, but with (proper) PDF 2.0 support being very limited
    everywhere, we should not expect to be able to remove such hacks in the near future - especially
    considering legacy documents as well.

    The actual implementation draws some inspiration from
    https://github.com/itext/itext-java/blob/9.1.0/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/util/InlineImageParsingUtils.java
    FNé    Tó   /r   ó   .r   r   )rG   r   r   Ú	enumerater   r/   ÚreplaceÚisdigit)r   r6   ÚpositionÚdataÚoperator_startÚoperator_endÚindexÚbyteÚis_whitespaceÚoperator_lengthÚoperators              r   rH   rH     sH  € ð �{Š{‰}Œ}€HØ�;Š;�vÑÔ€DØ
‡K‚K�ÑÔÐØð ØˆuØ€NØ€Lå  ‘”ð ð ‰ˆˆtØ�"Š9ˆ9˜Õ%9Ð9Ð9ð �4�4ØÕ 4Ð4ˆØÐ!¨-Ð!à"ˆNØÐ%¨-Ð%ð !ˆLØˆEøàÐàˆuØÐàˆØ" ^Ñ3€OØ�N <Ð/Ô0€HØ×Ò˜4Ñ Ô ð  _°qÒ%8Ð%8àˆuØ×Ò˜˜cÑ"Ô"×*Ò*Ñ,Ô,ð àˆuØ˜ÒÐð ˆtØˆ5r   )rQ   )ÚloggingÚior   Útypingr   Ú_utilsr   r   r   r	   r
   r   Úerrorsr   Ú	getLoggerr1   Úloggerr    Úboolr   r#   r)   r+   r4   rA   rP   r>   rH   © r   r   ú<module>rk      sÄ  ðð8 €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð "Ð !Ð !Ð !Ð !Ð !à	ˆÔ	˜8Ñ	$Ô	$€ð €ðV Jð V°4ð Vð Vð Vð Vð#¨Zð #¸Eð #ð #ð #ð #ðL¨:ð ¸%ð ð ð ð ð:$¨jð $¸Uð $ð $ð $ð $ðN,Ð'7ð ,¸Eð ,ð ,ð ,ð ,ð^1! :ð 1!°%ð 1!ð 1!ð 1!ð 1!ðh6ð 6 r¨%¤yð 6¸#ð 6Àtð 6ð 6ð 6ð 6ð 6ð 6r   