+
    ŠvjB)  ã                   óf   € R t ^ RIt^ RIHtHt ^ RIHt ^ RIHt  ! R R]4      t	 ! R R]	4      t
R# )	z™
This module is for codecs only.

While the codec implementation can contain details of the PDF specification,
the module should not do any PDF parsing.
N)ÚABCÚabstractmethod)Úlogger_warning)ÚLimitReachedErrorc                   ó\   a € ] tR t^t o Rt]V 3R lR l4       t]V 3R lR l4       tRtV t	R# )ÚCodecz#Abstract base class for all codecs.c                ó&   <€ V ^8„  d   QhRS[ RS[ /# ©é   ÚdataÚreturn©Úbytes)ÚformatÚ__classdict__s   "€ÚY/var/www/html/daimler-pipeline/venv/lib/python3.14/site-packages/pypdf/_codecs/_codecs.pyÚ__annotate__ÚCodec.__annotate__   ó   ø€ ÷ 
ñ 
™5ð 
¡Uñ 
ó    c                ó   € R# )zV
Encode the input data.

Args:
    data: Data to encode.

Returns:
    Encoded data.

N© ©Úselfr   s   &&r   ÚencodeÚCodec.encode   ó   ‚ r   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# r	   r   )r   r   s   "€r   r   r       r   r   c                ó   € R# )zV
Decode the input data.

Args:
    data: Data to decode.

Returns:
    Decoded data.

Nr   r   s   &&r   ÚdecodeÚCodec.decode   r   r   r   N)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   Ú__static_attributes__Ú__classdictcell__©r   s   @r   r   r      s.   ø‡ € Ù-à÷
ó ð
ð ÷
ó ö
r   r   c                   óÚ   a € ] tR t^-t o RtRtRt^	t^tRV 3R lR llt	V 3R lR lt
V 3R lR	 ltV 3R
 lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltRtV tR# )ÚLzwCodecz2Lempel-Ziv-Welch (LZW) adaptive compression codec.é   i  c                ó$   <€ V ^8„  d   QhRS[ RR/# )r
   Úmax_output_lengthr   N)Úint)r   r   s   "€r   r   ÚLzwCodec.__annotate__5   s   ø€ ÷ 3ñ 3©#ð 3¸tñ 3r   c                ó   € Wn         R # )N)r-   )r   r-   s   &&r   Ú__init__ÚLzwCodec.__init__5   s   € Ø!2Ör   c                ó   <€ V ^8„  d   QhRR/# ©r
   r   Nr   )r   r   s   "€r   r   r/   8   s   ø€ ÷ <ñ <¨Dñ <r   c                óö   € \        R4       Uu/ uF  p\        V.4      VbK  	  upV n        V P                  ^,           V n        V P
                  V n        ^V P                  ,          ^,
          V n        R# u upi )z>Initialize the encoding table and state to initial conditions.r+   N)Úranger   Úencoding_tableÚ
EOD_MARKERÚ	next_codeÚINITIAL_BITS_PER_CODEÚbits_per_codeÚmax_code_value©r   Úis   & r   Ú_initialize_encoding_tableÚ#LzwCodec._initialize_encoding_table8   sc   € äHMÈcÌ
Ó0SÉ
À1´¸°s³¸Q²É
Ñ0SˆÔØŸ™¨1Õ,ˆŒØ!×7Ñ7ˆÔØ  D×$6Ñ$6Õ6¸!Õ;ˆÖùò 1Ts   ŽA6c                ó   <€ V ^8„  d   QhRR/# r4   r   )r   r   s   "€r   r   r/   ?   s   ø€ ÷ @ñ @ Tñ @r   c                ó  € V ;P                   ^,          un         V P                   V P                  8”  dX   V P                  V P                  8  d;   V ;P                  ^,          un        ^V P                  ,          ^,
          V n        R# R# R# )z5Update bits_per_code and max_code_value if necessary.N)r9   r<   r;   ÚMAX_BITS_PER_CODE)r   s   &r   Ú_increase_next_codeÚLzwCodec._increase_next_code?   si   € à�Š˜!Õ�à�N‰N˜T×0Ñ0Ô0Ø×"Ñ" T×%;Ñ%;Ô;à×Ò !Õ#ÕØ#$¨×(:Ñ(:Õ#:¸aÕ"?ˆDÖñ <ñ 1r   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# r	   r   )r   r   s   "€r   r   r/   I   s   ø€ ÷ (9ñ (9™5ð (9¡Uñ (9r   c                óÄ  € . pVP                  V P                  4       V P                  4        RpV FÖ  pV\        V.4      ,           pWPP                  9   d   TpK*  VP                  V P                  V,          4       V P
                  ^V P                  ,          ^,
          8:  d+   V P
                  V P                  V&   V P                  4        M+VP                  V P                  4       V P                  4        \        V.4      pKØ  	  V'       d#   VP                  V P                  V,          4       VP                  V P                  4       V P                  V4      # )zp
Encode data using the LZW compression algorithm.

Taken from PDF 1.7 specs, "7.4.4.2 Details of LZW Encoding".
r   )
ÚappendÚCLEAR_TABLE_MARKERr?   r   r7   r9   rC   rD   r8   Ú_pack_codes_into_bytes)r   r   Úresult_codesÚcurrent_sequenceÚbyteÚnext_sequences   &&    r   r   ÚLzwCodec.encodeI   s)  € ð #%ˆð 	×Ñ˜D×3Ñ3Ô4Ø×'Ñ'Ô)àÐÛˆDØ,¬u°d°V«}Õ<ˆMà× 3Ñ 3Ô3à#0Ò ð ×#Ñ# D×$7Ñ$7Ð8HÕ$IÔJð —>‘> a¨4×+AÑ+AÕ&AÀQÕ%FÔFØ9=¿¹�D×'Ñ'¨Ñ6Ø×,Ñ,Õ.ð !×'Ñ'¨×(?Ñ(?Ô@Ø×3Ñ3Ô5ô $)¨$¨£=Ò ñ) ÷. Ø×Ñ × 3Ñ 3Ð4DÕ EÔFØ×Ñ˜DŸO™OÔ,à×*Ñ*¨<Ó8Ð8r   c                ó6   <€ V ^8„  d   QhRS[ S[,          RS[/# )r
   Úcodesr   )Úlistr.   r   )r   r   s   "€r   r   r/   s   s   ø€ ÷  ñ  ©D±­Ið  ¹%ñ  r   c                óþ  € V P                  4        ^ p^ p\        4       pV F¢  pW P                  ,          V,          pW0P                  ,          pV^8¼  d*   V^,          pVP                  W#,	          ^ÿ,          4       K0  WPP                  8X  d   V P                  4        K€  WPP
                  8X  d   K’  V P                  4        K¤  	  V^ 8”  d'   VP                  V^V,
          ,          ^ÿ,          4       \        V4      # )z¤
Convert the list of result codes into a continuous byte stream, with codes packed as per the code bit-width.
The bit-width starts at 9 bits and expands as needed.
)r?   Ú	bytearrayr;   rH   rI   r8   rD   r   )r   rQ   ÚbufferÚbits_in_bufferÚoutputÚcodes   &&    r   rJ   ÚLzwCodec._pack_codes_into_bytess   sÔ   € ð
 	×'Ñ'Ô)ØˆØˆÜ“ˆãˆDØ× 2Ñ 2Õ2°dÕ:ˆFØ×0Ñ0Õ0ˆNð
 ! AÔ%Ø !Õ#�Ø—‘˜vÕ7¸4Õ?Ö@à×.Ñ.Ô.Ø×/Ñ/Ö1ØŸ™Ô(Ùà×(Ñ(Ö*ñ! ð& ˜AÔØ�M‰M˜6 a¨.Õ&8Õ9¸TÕAÔBä�V‹}Ðr   c                ó   <€ V ^8„  d   QhRR/# r4   r   )r   r   s   "€r   r   r/   •   s   ø€ ÷ ñ ¨Dñ r   c                óV  € ^V P                   ,          ^,
          V n        \        V P                  4       Uu. uF  p\	        V.4      NK  	  upR.V P                  V P                  ,
          ^,           ,          ,           V n        V P                  ^,           V n        ^	V n        R# u upi )é   r   N)	rC   r<   r6   rI   r   Údecoding_tabler8   Ú_table_indexÚ_bits_to_getr=   s   & r   Ú_initialize_decoding_tableÚ#LzwCodec._initialize_decoding_table•   s”   € Ø  D×$:Ñ$:Õ:¸aÕ?ˆÔÜ38¸×9PÑ9PÔ3QÓRÑ3Q¨aœu a SžzÑ3QÑRØðV
à× Ñ  4×#:Ñ#:Õ:¸QÕ>õV@õ @ˆÔð !ŸO™O¨aÕ/ˆÔØˆÖùò	 Ss   ·B&c                ó&   <€ V ^8„  d   QhRS[ RS[/# r	   ©r   r.   )r   r   s   "€r   r   r/   �   s   ø€ ÷ #ñ #¡eð #±ñ #r   c                óf  € V   V P                   V P                  8  dd   V P                  ^,          WP                  ,          ,          V n        V ;P                  ^,          un        V ;P                   ^,          un         K~  V P                  V P                   V P                  ,
          ,	          V P                  V P                  ^	,
          ,          ,          pV ;P                   V P                  ,          un         V P                  R,          V n        V#   \
         d    T P                  u # i ; i)é   iÿÿ )Ú
_next_bitsr_   Ú
_next_dataÚ_byte_pointerÚ
_and_tableÚ
IndexErrorr8   )r   r   rX   s   && r   Ú_next_code_decodeÚLzwCodec._next_code_decode�   sß   € Ùð	#Ø—/‘/ D×$5Ñ$5Ô5Ø#'§?¡?°aÕ#7Ø×+Ñ+Õ,õ#�”ð ×"Ò" aÕ'Õ"Ø—’ 1Õ$—ð —‘ D§O¡O°d×6GÑ6GÕ$GÕHØ—‘ × 1Ñ 1°AÕ 5Õ6õ7ˆDð �OŠO˜t×0Ñ0Õ0�Oð #Ÿo™o°Õ7ˆDŒOàˆKøÜô 	#Ø—?‘?Ò"ð	#ús   „DD ÄD0Ä/D0c                ó&   <€ V ^8„  d   QhRS[ RS[ /# r	   r   )r   r   s   "€r   r   r/   Ó   s   ø€ ÷ 6(ñ 6(™5ð 6(¡Uñ 6(r   c                ó‚  € . ROV n         ^ V n        ^	V n        ^ V n        ^ V n        ^ V n        \        P                  ! 4       p^ pV P                  4        ^ V n        ^ V n        ^ V n        V P                  p V P                  V4      pWPP                  8X  d    VP%                  4       # WPP                  8X  dj   V P                  4        V P                  V4      pWPP                  8X  d    VP%                  4       # VP                  V P                  V,          ;p4       TpMàWPP                  8  db   V P                  V,          pVP                  V4       W@P                  8w  d+   V P                  V P                  V,          V^ ,          4       TpMoV P                  V,          V P                  V,          R,          ,           pVP                  V4       V P                  V P                  V,          V^ ,          4       TpV\        V4      ,          pW0P                   8”  g   EK±  \#        RV RV P                    24      h)z¶
The following code was converted to Python from the following code:
https://github.com/empira/PDFsharp/blob/master/src/foundation/src/PDFsharp/src/PdfSharp/Pdf.Filters/LzwDecode.cs
:Nr\   Nz#Limit reached while decompressing: z > )éÿ  éÿ  éÿ  iÿ  )ri   r^   r_   rh   rg   rf   ÚioÚBytesIOr`   rI   rk   r8   Úwriter]   Ú_add_entry_decodeÚlenr-   r   Úgetvalue)r   r   Úoutput_streamÚoutput_lengthÚold_coderX   Údecodeds   &&     r   r   ÚLzwCodec.decodeÓ   s  € ò
 2ˆŒØˆÔØˆÔØˆÔØˆŒØˆŒäŸ
š
›ˆØˆà×'Ñ'Ô)ØˆÔØˆŒØˆŒØ×*Ñ*ˆàØ×)Ñ)¨$Ó/ˆDØ—‘Ô&Øð< ×%Ñ%Ó'Ð'ð9 ×.Ñ.Ô.Ø×/Ñ/Ô1Ø×-Ñ-¨dÓ3�ØŸ?™?Ô*Øð0 ×%Ñ%Ó'Ð'ð/ ×#Ñ#¨t×/BÑ/BÀ4Õ/HÐ$H GÔIØ‘Ø×)Ñ)Ô)Ø×-Ñ-¨dÕ3�Ø×#Ñ# GÔ,Ø×6Ñ6Ô6Ø×*Ñ*¨4×+>Ñ+>¸xÕ+HÈ'ÐRSÍ*ÔUØ‘ð ×'Ñ'¨Õ1°D×4GÑ4GÈÕ4QÐRTÕ4UÕUð ð ×#Ñ# GÔ,Ø×&Ñ& t×':Ñ':¸8Õ'DÀgÈaÅjÔQØ�àœS ›\Õ)ˆMØ×5Ñ5×5Ü'Ø9¸-¸ÈÈD×LbÑLbÐKcÐdóð r   c                ó*   <€ V ^8„  d   QhRS[ RS[RR/# )r
   Ú
old_stringÚnew_charr   Nrc   )r   r   s   "€r   r   r/     s"   ø€ ÷ #ñ #©Eð #¹Sð #ÀTñ #r   c                ó†  € V\        V.4      ,           pV P                  V P                  8”  d   \        R \        R7       R# W0P
                  V P                  &   V ;P                  ^,          un        V P                  R8X  d
   ^
V n        R# V P                  R8X  d
   ^V n        R# V P                  R8X  d
   ^V n        R# R# )z#Ignoring too large LZW table index.)ÚsourceNro   rp   rq   )r   r^   r<   r   r!   r]   r_   )r   r~   r   Ú
new_strings   &&& r   ru   ÚLzwCodec._add_entry_decode  s£   € Ø¤%¨¨
Ó"3Õ3ˆ
Ø×Ñ˜t×2Ñ2Ô2ÜÐ@ÌÕRÙØ1;×Ñ˜D×-Ñ-Ñ.Ø×Ò˜QÕÕð ×Ñ Ô#Ø "ˆDÖØ×Ñ $Ô&Ø "ˆDÖØ×Ñ $Ô&Ø "ˆDÖñ 'r   )ri   r_   rh   rf   rg   r^   r;   r]   r7   r<   r-   r9   N)iÀhx)r!   r"   r#   r$   r%   rI   r8   r:   rC   r1   r?   rD   r   rJ   r`   rk   r   ru   r&   r'   r(   s   @r   r*   r*   -   s   ø‡ € Ù<àÐØ€JØÐØÐ÷3ò 3÷<ð <÷@ð @÷(9ð (9÷T ð  ÷Dð ÷#ð #÷l6(ð 6(÷p#ö #r   r*   )r%   rr   Úabcr   r   Úpypdf._utilsr   Úpypdf.errorsr   r   r*   r   r   r   Ú<module>r‡      s2   ðñó 
ß #å 'Ý *ôˆCô ô<l#ˆuö l#r   