
    ;3h3-                     |   d dl Z d dlZd dlmZmZ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 g dZdZdZdZd	Zd
ZdZdZdZdZdZdZ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&ee$eeef   f   Z'ee$eee
e   e
e   f   f   Z(ee$eeee%e'e(f   f   Z) G d d      Z* G d  d!      Z+y)"    N)calcsizepackunpack)BinaryIODictIterableListOptionalTupleUnioncast)PDFValueError))>Lnumber)>Bflags)r   retention_flags)r   
page_assoc)r   data_length   @   ?      i   l    &   1   3   s   JB2

   bit_posvaluereturnc                 $    t        || z	  dz        S )Nr   bool)r   r    s     N/var/www/html/audio-gradio/venv/lib/python3.12/site-packages/pdfminer/jbig2.pybit_setr&   '   s    '!Q&''    flagc                     t        | |z        S Nr#   )r(   r    s     r%   
check_flagr+   +   s    ur'   maskc                 d    t        d      D ]  }t        ||       s|| z  |z	  c S  t        d      N   zInvalid mask or valueranger&   r   r,   r    r   s      r%   masked_valuer3   /   s<    9 -7D!DLW,,- /
00r'   c                 j    t        d      D ]  }t        ||       s|| |z	  z  |z  c S  t        d      r.   r0   r2   s      r%   
mask_valuer5   7   sA    9 :7D!TW_-'99: /
00r'   formatbufferc                 X    | dv sJ t        t        t           t        | |            \  }|S )N>   r   >Ir   )r   r   intr   )r6   r7   results      r%   
unpack_intr<   ?   s/    ''''E#Jvv 67HVMr'   c                       e Zd ZdZdeddfdZdee   fdZde	fdZ
ded	ed
edefdZded	ed
edefdZdeded
edefdZdeded
edefdZy)JBIG2StreamReaderz&Read segments from a JBIG2 byte streamstreamr!   Nc                     || _         y r*   r?   selfr?   s     r%   __init__zJBIG2StreamReader.__init__P   	    r'   c                    g }| j                         si }t        D ]v  \  }}t        |      }| j                  j	                  |      }t        |      |k  rd|d<    n8t        ||      }t        | d|z  d       }t        |      r
 ||||      }|||<   x |j                  d      s|j                  |       | j                         s|S )NT_errorzparse_%s)is_eof
SEG_STRUCTr   r?   readlenr<   getattrcallablegetappend)	rC   segmentssegmentfield_formatname	field_lenfieldr    parsers	            r%   get_segmentszJBIG2StreamReader.get_segmentsS   s    ')++-$&G&0 
&"d$\2	((3u:	)(,GH%"<7 zD'8$?F#"7E59E %
& ;;x(( ++-  r'   c                     | j                   j                  d      dk(  ry| j                   j                  dt        j                         y)Nr   r'   TF)r?   rJ   seekosSEEK_CUR)rC   s    r%   rH   zJBIG2StreamReader.is_eofg   s7    ;;A#%KKR-r'   rQ   r   rU   c                 b    t        t        |      t        t        |      t        t        |      dS )N)deferredpage_assoc_longtype)r+   HEADER_FLAG_DEFERREDHEADER_FLAG_PAGE_ASSOC_LONGr3   SEG_TYPE_MASK)rC   rQ   r   rU   s       r%   parse_flagszJBIG2StreamReader.parse_flagsn   s.     ##7?)*EuM 6
 	
r'   c                    t        t        |      }g }g }|t        k  r,t        d      D ]  }|j	                  t        ||              n|| j                  j                  d      z  }t        d|      }t        t        |      }t        t        j                  |dz   dz              }t        |      D ]R  }	t        d| j                  j                  d            }
t        d      D ]  }|j	                  t        ||
              T |d   }t        |t              sJ |d	k  rd}n
|d
k  rd}nd}t        |      }t        |      D ]:  }| j                  j                  |      }t        ||      }|j	                  |       < |||dS )N      r   r      r   r   r         r9   )	ref_countretain_segmentsref_segments)r3   REF_COUNT_SHORT_MASKREF_COUNT_LONGr1   rO   r&   r?   rJ   r<   REF_COUNT_LONG_MASKr:   mathceil
isinstancer   )rC   rQ   r   rU   rk   rl   rm   r   ret_bytes_countret_byte_indexret_byteseg_num
ref_formatref_size	ref_indexref_datarefs                    r%   parse_retention_flagsz'JBIG2StreamReader.parse_retention_flagsz   s    !!5u=	~% 8 @&&ww'>?@ T[[%%a((E"4/I$%8)DI!$))Y]a,?"@AO"'"8 G%dDKK,<,<Q,?@$Qx GG#**77H+EFGG
 (#'3'''c>JJJJ'y) 	%I{{''1HZ2C$	% #.(
 	
r'   pagec                     t        t        |d         d   r*|| j                  j                  d      z  }t	        d|      }|S )Nr   r_   rg   r   )r   JBIG2SegmentFlagsr?   rJ   r<   )rC   rQ   r~   rU   s       r%   parse_page_assocz"JBIG2StreamReader.parse_page_assoc   sB    !77#345FGT[[%%a((EdE*Dr'   lengthc                     |rOt        t        |d         d   t        k(  r|t        k(  rt	        d      | j
                  j                  |      |d<   |S )Nr   r`   z:Working with unknown segment length is not implemented yetraw_data)r   r   SEG_TYPE_IMMEDIATE_GEN_REGIONDATA_LEN_UNKNOWNNotImplementedErrorr?   rJ   )rC   rQ   r   rU   s       r%   parse_data_lengthz#JBIG2StreamReader.parse_data_length   s]     &(89&A01--)P  '+kk&6&6v&>
#r'   )__name__
__module____qualname____doc__r   rD   r	   JBIG2SegmentrW   r$   rH   r:   bytesr   rd   JBIG2RetentionFlagsr}   r   r    r'   r%   r>   r>   M   s    0x D d<0 ( 



 

 	


 


+
+
 +
 	+

 
+
Z C  RU   	
 
r'   r>   c                      e Zd ZU dZd eee   g        eee   g       dZe	e
d<   deddfdZ	 dd	ee   d
edefdZ	 dd	ee   d
edefdZ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fdZy)JBIG2StreamWriterz.Write JBIG2 segments to a file in JBIG2 formatr   )rk   rm   rl   EMPTY_RETENTION_FLAGSr?   r!   Nc                     || _         y r*   rA   rB   s     r%   rD   zJBIG2StreamWriter.__init__   rE   r'   rP   fix_last_pagec                     d}d }d }|D ]  }| j                  |      }| j                  j                  |       |t        |      z  }t	        t
        t           |d         }|sZt	        t        |j                  d            }t	        t        |d         d   t        k(  rd }|s|} |rS|rQ|O| j                  |dz   |      }| j                  |      }| j                  j                  |       |t        |      z  }|S )Nr   r   r   r   r`   r   )encode_segmentr?   writerK   r   r
   r:   rN   r   SEG_TYPE_END_OF_PAGEget_eop_segment)	rC   rP   r   data_lencurrent_pagerw   rQ   dataseg_pages	            r%   write_segmentsz JBIG2StreamWriter.write_segments   s   
 &*!% 	,G&&w/DKKd#D	!H8C='(*;<GW[[%>? *GG,<=fE+, $(L#+L!	,$ \w/B**7Q;EG&&w/DKKd#D	!Hr'   c                    t         }t        }|t        d|      z  }t        dd      }||z  }| j                  j	                  |       t        |      }|| j                  ||      z  }d}|D ]  }t        t        |d         } |rd}	nd}	| j                  ||	z         }
| j                  |
      }| j                  j	                  |       |t        |      z  }|S )Nr   r   r   r   r      )FILE_HEADER_IDFILE_HEAD_FLAG_SEQUENTIALr   r?   r   rK   r   r   r:   get_eof_segmentr   )rC   rP   r   headerheader_flagsnumber_of_pagesr   rw   rQ   seg_num_offseteof_segmentr   s               r%   
write_filezJBIG2StreamWriter.write_file   s    
  0$t\** tQ-/!&!v;D''-@@ 	3G3 12G	3 NN**7^+CD"";/$CIr'   rQ   c                     d}t         D ]L  \  }}|j                  |      }t        | d|z  d       }t        |      r
 |||      }nt	        ||      }||z  }N |S )Nr'   z	encode_%s)rI   rN   rL   rM   r   )rC   rQ   r   rR   rS   r    encoderrU   s           r%   r   z JBIG2StreamWriter.encode_segment  sl    ", 	L$KK%EdK$$6=G w/\51EMD	 r'   r    c                    d}|j                  d      r	|t        z  }d|v r||d   rt        n|z  }n.|t        t        |j                  dd            dkD  rt        n|z  }|t        t        |d         z  }t        d|      S )Nr   r^   r_   r~      r`   r   )rN   ra   rb   r   r:   r5   rc   r   )rC   r    rQ   r   s       r%   encode_flagszJBIG2StreamWriter.encode_flags  s    99Z ))E%E:K4L0RWWEW[[34s: ,E 	M5=99D%  r'   c                 0   g }d}|d   }t        |t              sJ t        t        t           |j                  dg             }|dk  r@t        t        |      }t        |      D ]  \  }}	|	s	|d|z  z  } |j                  |       nt        j                  |dz   dz        }
dd|
z  z   }t        t        t              d	z  }|j                  |       t        |
      D ]B  }d
}||dz  |dz  dz    }t        |      D ]  \  }}||rd|z  n|z  } |j                  |       D t        t        t           |j                  dg             }t        t        |d         }|dk  rd}n
|dk  rd}nd}|D ]  }||z  }|j                  |        t        |g| S )Nr   rk   rl      r   rh   r   B   r   rm   r   ri   rj   IL)rs   r:   r   r	   r$   rN   r5   rn   	enumeraterO   rq   rr   ro   r1   r   )rC   r    rQ   r   flags_formatrk   rl   
flags_byterz   
ref_retainbytes_countflags_dword
byte_indexrv   ret_partr   ret_segrm   rw   rx   r|   s                        r%   encode_retention_flagsz(JBIG2StreamWriter.encode_retention_flags/  s   
 +&	)S)))tDz5995F+KL>#$8)DJ)2?)C 1%	:!y.0J1 LL$))Y]a$78K3#45L$%9>JbPKLL%#K0 '
*:>JNQ<NO(1((; F$GWWXEHF X&' DIuyy'DEsGH-.c>JJJ 	CJ&LLL	 L)5))r'   c                 J    t        d|      }|t        t        |d         z  }|S )Nr   r   )r   r   r   )rC   r    rQ   r   s       r%   encode_data_lengthz$JBIG2StreamWriter.encode_data_length^  s)    D% UGJ/00r'   
seg_numberpage_numberc                 >    ddt         d||dt        j                  dS Nr   F)r^   r`   r'   )r   r   r   r   r   r   )r   r   r   )rC   r   r   s      r%   r   z!JBIG2StreamWriter.get_eop_segmentc  s*    "'1EF %0FF
 	
r'   c                 >    ddt         d|ddt        j                  dS r   )SEG_TYPE_END_OF_FILEr   r   )rC   r   s     r%   r   z!JBIG2StreamWriter.get_eof_segmentm  s*    "'1EF 0FF
 	
r'   )T)r   r   r   r   r   r	   r:   r$   r   r   __annotations__r   rD   r   r   r   r   r   r   r   r   r   r   r   r   r   r'   r%   r   r      s8   8 T#Y+T
B/2. x D  #!<(! ! 
	!L #<(  
	B
l 
u 
!"3 !l !u !$-*"-* -* 
	-*^ l u 

# 
C 
L 

# 
, 
r'   r   ),rq   r[   structr   r   r   typingr   r   r   r	   r
   r   r   r   pdfminer.pdfexceptionsr   rI   ra   rb   rc   rn   rp   ro   r   r   r   r   r   r   r:   r$   r&   r+   r3   r5   strr   r<   r   r   r   r>   r   r   r'   r%   <module>r      sq    	 ) ) O O O 0
 " ( !     !#    5& (S ( ( (S   1s 13 13 11S 1 1 1s E c  eCI../ 3c49d4j&@ AAB 	$U-/B
BCEq qht
 t
r'   