
    BhZ                         S r SSKrSSKrSSKrSSKJr  SSKJr  SSKJ	r	J
r
  SSKJr  S=rrS r " S	 S
5      r " S S\\5      r " S S\5      r " S S\5      r " S S\\5      r " S S5      rg)z
A low-level PDF generator.

    N)BOM_UTF16_BE)md5)ceillog)warnz0.11.0c                    [        U [        5      (       a  U $ [        U [        5      (       aZ  U R                  5       (       a#  [	        [        U 5      5      R                  S5      $ U S R                  S5      R                  S5      $ [        U [        5      (       a  U R                  $ [	        U 5      R                  S5      $ )zConvert item to bytes.asciif0)

isinstancebytesfloat
is_integerstrintencoderstripObjectdata)items    @/var/www/html/env/lib/python3.13/site-packages/pydyf/__init__.py	_to_bytesr      s    $	D%	 	 ??s4y>((111X%%c*11'::	D&	!	!yyt9G$$    c                   ^    \ rS rSrSrS r\S 5       r\S 5       r\S 5       r	\S 5       r
Srg	)
r      zBase class for PDF objects.c                 <    S U l         SU l        SU l        SU l        g )Nr   n)numberoffset
generationfreeselfs    r   __init__Object.__init__!   s      	r   c                 x    U R                    SU R                   S3R                  5       nXR                  -   S-   $ )z%Indirect representation of an object. z obj
s   
endobj)r   r    r   r   )r#   headers     r   indirectObject.indirect,   s:     KK=$//!2&9@@B		!K//r   c                 V    U R                    SU R                   S3R                  5       $ )zObject identifier.r'   z R)r   r    r   r"   s    r   	referenceObject.reference2   s)     ++a03::<<r   c                     [        5       e)z@Data contained in the object. Shall be defined in each subclass.)NotImplementedErrorr"   s    r   r   Object.data7   s     "##r   c                 \    U R                   (       + =(       a    [        U [        5      (       + $ )z7Whether the object can be included in an object stream.)r    r   Streamr"   s    r   compressibleObject.compressible<   s      ??"C:dF+C'CCr   )r!   r    r   r   N)__name__
__module____qualname____firstlineno____doc__r$   propertyr)   r,   r   r3   __static_attributes__ r   r   r   r      s\    %	 0 0
 = = $ $ D Dr   r   c                   2    \ rS rSrSrSS jr\S 5       rSrg)
DictionaryB   zPDF Dictionary object.Nc                 j    [         R                  U 5        [        R                  X=(       d    0 5        g N)r   r$   dict)r#   valuess     r   r$   Dictionary.__init__D   s    dLb)r   c                     U R                  5        VVs/ s H"  u  pS[        U5      -   S-   [        U5      -   PM$     nnnSSR                  U5      -   S-   $ s  snnf )N   /       <<r      >>)itemsr   join)r#   keyvalueresults       r   r   Dictionary.dataH   sd     #jjl,*
 9S>!D(9U+;;* 	 , sxx''%//,s   )Ar<   rA   	r5   r6   r7   r8   r9   r$   r:   r   r;   r<   r   r   r>   r>   B   s     * 0 0r   r>   c                   l  ^  \ rS rSrSrS2U 4S jjrS3S jrS rS4S jrS r	S4S jr
S	 rS
 rS rS rS rS rS rS4S jrS4S jrS4S jrS rS rS rS rS rS rS rS rS rS4S jrS4S jrS4S jr S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S* r,S+ r-S, r.S- r/S. r0S/ r1\2S0 5       r3S1r4U =r5$ )5r2   P   zPDF Stream object.c                 n   > [         TU ]  5         U=(       d    / U l        U=(       d    0 U l        X0l        g rA   )superr$   streamextracompress)r#   rU   rV   rW   	__class__s       r   r$   Stream.__init__R   s)    l[b
 r   c                     U R                   R                  SU 35        Uc  U R                   R                  S5        gU R                   R                  U5        U R                   R                  S5        g)zBegin marked-content sequence./Ns   BMCs   BDCrU   append)r#   tagproperty_lists      r   begin_marked_contentStream.begin_marked_content[   sV    Qse9% KKv&KK}-KKv&r   c                 :    U R                   R                  S5        g)zBegin a text object.s   BTNr\   r"   s    r   
begin_textStream.begin_textd       5!r   c                 V    U R                   R                  U(       a  S5        gS5        g)zModify current clipping path by intersecting it with current path.

Use the nonzero winding number rule to determine which regions lie
inside the clipping path by default.

Use the even-odd rule if ``even_odd`` set to ``True``.

s   W*   WNr\   r#   even_odds     r   clipStream.cliph   s     	H57$7r   c                 :    U R                   R                  S5        g)zuClose current subpath.

Append a straight line segment from the current point to the starting
point of the subpath.

   hNr\   r"   s    r   closeStream.closes   s     	4 r   c                 v    [        [        R                  R                  [        5        U R                  X5        g)z7color_space is deprecated, use set_color_space instead.N)r   r2   color_spacer9   DeprecationWarningset_color_spacer#   spacestrokes      r   rq   Stream.color_space|   s'    V'');<U+r   c                     U R                   R                  SR                  [        U5      [        U5      [        U5      [        U5      [        U5      [        U5      S45      5        g)u   Add cubic Bézier curve to current path.

The curve shall extend from ``(x3, y3)`` using ``(x1, y1)`` and ``(x2,
y2)`` as the Bézier control points.

rG      cNrU   r]   rK   r   )r#   x1y1x2y2x3y3s          r   curve_toStream.curve_to   sO     	499bM9R=bM9R=bM9R=$&0 1 	2r   c           
          U R                   R                  SR                  [        U5      [        U5      [        U5      [        U5      S45      5        g)u   Add cubic Bézier curve to current path

The curve shall extend to ``(x3, y3)`` using the current point and
``(x2, y2)`` as the Bézier control points.

rG      vNrz   )r#   r}   r~   r   r   s        r   curve_start_toStream.curve_start_to   B     	499bM9R=bM9R=$&0 1 	2r   c           
          U R                   R                  SR                  [        U5      [        U5      [        U5      [        U5      S45      5        g)u   Add cubic Bézier curve to current path

The curve shall extend to ``(x3, y3)`` using `(x1, y1)`` and ``(x3,
y3)`` as the Bézier control points.

rG      yNrz   )r#   r{   r|   r   r   s        r   curve_end_toStream.curve_end_to   r   r   c                 X    U R                   R                  S[        U5      -   S-   5        g)zDraw object given by reference.rF   s    DoNrU   r]   r   )r#   r,   s     r   draw_x_objectStream.draw_x_object   s#    4)I"66?@r   c                 :    U R                   R                  S5        g)z%End path without filling or stroking.   nNr\   r"   s    r   end
Stream.end       4 r   c                 :    U R                   R                  S5        g)zEnd marked-content sequence.s   EMCNr\   r"   s    r   end_marked_contentStream.end_marked_content   s    6"r   c                 :    U R                   R                  S5        g)zEnd text object.s   ETNr\   r"   s    r   end_textStream.end_text   re   r   c                 V    U R                   R                  U(       a  S5        gS5        g)z^Fill path using nonzero winding rule.

Use even-odd rule if ``even_odd`` is set to ``True``.

s   f*   fNr\   rh   s     r   fillStream.fill        	H57$7r   c                 V    U R                   R                  U(       a  S5        gS5        g)ziFill and stroke path usign nonzero winding rule.

Use even-odd rule if ``even_odd`` is set to ``True``.

s   B*   BNr\   rh   s     r   fill_and_strokeStream.fill_and_stroke   r   r   c                 V    U R                   R                  U(       a  S5        gS5        g)zpFill, stroke and close path using nonzero winding rule.

Use even-odd rule if ``even_odd`` is set to ``True``.

s   b*   bNr\   rh   s     r   fill_stroke_and_closeStream.fill_stroke_and_close   r   r   c                    U R                   (       a  [        R                   " U5      OUn[        R                  " U5      S-   nU R                  R                  SR                  SS[        U5      S[        U5      S[        U5      SS[        U5      -   S	U R                   (       a  S
OSS[        [        U5      5      SUS45      5        g)an  Add an inline image.

:param width: The width of the image.
:type width: :obj:`int`
:param height: The height of the image.
:type height: :obj:`int`
:param colorspace: The color space of the image, f.e. RGB, Gray.
:type colorspace: :obj:`str`
:param bpc: The bits per component. 1 for BW, 8 for grayscale.
:type bpc: :obj:`int`
:param raw_data: The raw pixel data.

s   ~>rG   s   BIs   /Ws   /Hs   /BPCs   /CSs   /Devices   /Fs
   [/A85 /Fl]s   /A85s   /Ls   IDs   EIN)	rW   zlibbase64	a85encoderU   r]   rK   r   len)r#   widthheightrq   bpcraw_datar   a85_datas           r   inline_imageStream.inline_image   s     +/--t}}X&X##D)E14999U#9V$Ys^;//!]]M9S]+&
  	r   c                     U R                   R                  SR                  [        U5      [        U5      S45      5        g)z0Add line from current point to point ``(x, y)``.rG      lNrz   r#   xys      r   line_toStream.line_to   ,    499ilIaL$%GHIr   c                     U R                   R                  SR                  [        U5      [        U5      S45      5        g)z8Begin new subpath by moving current point to ``(x, y)``.rG      mNrz   r   s      r   move_toStream.move_to   r   r   c                     U R                   R                  SR                  [        U5      [        U5      S45      5        g)zAMove text to next line at ``(x, y)`` distance from previous line.rG   s   TdNrz   r   s      r   move_text_toStream.move_text_to   s,    499ilIaL%%HIJr   c                 v    [        [        R                  R                  [        5        U R                  U5        g)z1shading is deprecated, use paint_shading instead.N)r   r2   shadingr9   rr   paint_shadingr#   names     r   r   Stream.shading   s%    V^^##%784 r   c                 X    U R                   R                  S[        U5      -   S-   5        g)z@Paint shape and color shading using shading dictionary ``name``.rF   s    shNr   r   s     r   r   Stream.paint_shading   s"    4)D/1F:;r   c                 :    U R                   R                  S5        g)zRestore graphic state.   QNr\   r"   s    r   	pop_stateStream.pop_state   r   r   c                 :    U R                   R                  S5        g)zSave graphic state.   qNr\   r"   s    r   
push_stateStream.push_state  r   r   c           
          U R                   R                  SR                  [        U5      [        U5      [        U5      [        U5      S45      5        g)z~Add rectangle to current path as complete subpath.

``(x, y)`` is the lower-left corner and width and height the
dimensions.

rG   s   reNrz   )r#   r   r   r   r   s        r   	rectangleStream.rectangle  sD     	499aL)A,ei/&8 9 	:r   c           	          U R                   R                  SR                  [        U5      [        U5      [        U5      U(       a  SOS45      5        g)z|Set RGB color for nonstroking operations.

Set RGB color for stroking operations instead if ``stroke`` is set to
``True``.

rG   s   RGs   rgNrz   )r#   rgbrv   s        r   set_color_rgbStream.set_color_rgb  s@     	499aL)A,	!U%&* + 	,r   c                 p    U R                   R                  S[        U5      -   S-   U(       a  SOS-   5        g)zgSet the nonstroking color space.

If stroke is set to ``True``, set the stroking color space instead.

rF   rG   s   CSs   csNr   rt   s      r   rs   Stream.set_color_space  s2     	9U##d*ve5I	Kr   c                     U(       a  / UQS[        U5      -   P7nU R                  R                  SR                  S U 5       5      S-   U(       a  SOS-   5        g)z{Set special color for nonstroking operations.

Set special color for stroking operation if ``stroke`` is set to ``True``.

rF   rG   c              3   8   #    U  H  n[        U5      v   M     g 7frA   r   ).0operands     r   	<genexpr>+Stream.set_color_special.<locals>.<genexpr>/  s     AWi((   s   SCNs   scnN)r   rU   r]   rK   )r#   r   rv   operandss       r   set_color_specialStream.set_color_special&  sT     ::4)D/#9:HIIAAADHV6+	,r   c                     U R                   R                  SR                  [        U5      R                  [        U5      S45      5        g)zSet dash line pattern.

:param dash_array: Dash pattern.
:type dash_array: :term:`iterable`
:param dash_phase: Start of dash phase.
:type dash_phase: :obj:`int`

rG      dN)rU   r]   rK   Arrayr   r   )r#   
dash_array
dash_phases      r   set_dashStream.set_dash2  s@     	499*""Ij$94&A B 	Cr   c                 v    U R                   R                  S[        U5      -   S-   [        U5      -   S-   5        g)zSet font name and size.rF   rG   s    TfNr   )r#   fontsizes      r   set_font_sizeStream.set_font_size>  s4    9T?"T)IdO;fD	Fr   c                 R    U R                   R                  [        U5      S-   5        g)zSet text rendering mode.s    TrNr   )r#   modes     r   set_text_renderingStream.set_text_renderingC  s    9T?V34r   c                 R    U R                   R                  [        U5      S-   5        g)zSet text rise.s    TsNr   )r#   r   s     r   set_text_riseStream.set_text_riseG  s    9V,v56r   c                 R    U R                   R                  [        U5      S-   5        g)zSet line cap style.s    JNr   )r#   line_caps     r   set_line_capStream.set_line_capK  s    9X.67r   c                 R    U R                   R                  [        U5      S-   5        g)zSet line join style.s    jNr   )r#   	line_joins     r   set_line_joinStream.set_line_joinO  s    9Y/%78r   c                 R    U R                   R                  [        U5      S-   5        g)zSet line width.s    wNr   )r#   r   s     r   set_line_widthStream.set_line_widthS  s    9U+e34r   c                     U R                   R                  SR                  [        U5      [        U5      [        U5      [        U5      [        U5      [        U5      S45      5        g)a  Set current transformation matrix.

:param a: Top left number in the matrix.
:type a: :obj:`int` or :obj:`float`
:param b: Top middle number in the matrix.
:type b: :obj:`int` or :obj:`float`
:param c: Middle left number in the matrix.
:type c: :obj:`int` or :obj:`float`
:param d: Middle middle number in the matrix.
:type d: :obj:`int` or :obj:`float`
:param e: Bottom left number in the matrix.
:type e: :obj:`int` or :obj:`float`
:param f: Bottom middle number in the matrix.
:type f: :obj:`int` or :obj:`float`

rG   s   cmNrz   r#   ar   cder
   s          r   
set_matrixStream.set_matrixW  N    " 	499aL)A,	!aL)A,	!e&= > 	?r   c                 R    U R                   R                  [        U5      S-   5        g)zSet miter limit.s    MNr   )r#   miter_limits     r   set_miter_limitStream.set_miter_limitl  s    9[1E9:r   c                 X    U R                   R                  S[        U5      -   S-   5        g)z[Set specified parameters in graphic state.

:param state_name: Name of the graphic state.

rF   s    gsNr   )r#   
state_names     r   	set_stateStream.set_statep  s%     	4)J"77&@Ar   c                     U R                   R                  SR                  [        U5      [        U5      [        U5      [        U5      [        U5      [        U5      S45      5        g)a  Set current text and text line transformation matrix.

:param a: Top left number in the matrix.
:type a: :obj:`int` or :obj:`float`
:param b: Top middle number in the matrix.
:type b: :obj:`int` or :obj:`float`
:param c: Middle left number in the matrix.
:type c: :obj:`int` or :obj:`float`
:param d: Middle middle number in the matrix.
:type d: :obj:`int` or :obj:`float`
:param e: Bottom left number in the matrix.
:type e: :obj:`int` or :obj:`float`
:param f: Bottom middle number in the matrix.
:type f: :obj:`int` or :obj:`float`

rG   s   TmNrz   r  s          r   set_text_matrixStream.set_text_matrixx  r  r   c                 z    [        [        R                  R                  [        5        U R                  XX4XV5        g)z7text_matrix is deprecated, use set_text_matrix instead.N)r   r2   text_matrixr9   rr   r  r  s          r   r  Stream.text_matrix  s+    V'');<Q1.r   c                 z    [        [        R                  R                  [        5        U R                  XX4XV5        g)z0transform is deprecated, use set_matrix instead.N)r   r2   	transformr9   rr   r  r  s          r   r  Stream.transform  s)    V%%'9:aA)r   c                 X    U R                   R                  S[        U5      -   S-   5        g)z4Show text strings with individual glyph positioning.   [s   ] TJNr   r#   texts     r   	show_textStream.show_text  s"    4)D/1G;<r   c                 f    U R                   R                  [        U5      R                  S-   5        g)zShow single text string.s    TjN)rU   r]   Stringr   r#  s     r   show_text_stringStream.show_text_string  s#    6$<,,v56r   c                 :    U R                   R                  S5        g)zStroke path.   SNr\   r"   s    r   rv   Stream.stroke  r   r   c                 :    U R                   R                  S5        g)zStroke and close path.   sNr\   r"   s    r   stroke_and_closeStream.stroke_and_close  r   r   c                    SR                  S U R                   5       5      n[        U R                  R	                  5       5      nU R
                  (       a<  SUS'   [        R                  " SS9nUR                  U5      nXR                  5       -  n[        U5      US'   SR                  UR                  SUS	45      $ )
N   
c              3   8   #    U  H  n[        U5      v   M     g 7frA   r   )r   r   s     r   r   Stream.data.<locals>.<genexpr>  s     DIdOOr   z/FlateDecodeFilter	   )levelLengths   streams	   endstream)rK   rU   r>   rV   copyrW   r   compressobjflushr   r   )r#   rU   rV   r;  s       r   r   Stream.data  s    DDD4::??,-==,E(O**3K ))&1F''))Ff+hzz5::y&,GHHr   )rW   rV   rU   )NNFrA   )F)6r5   r6   r7   r8   r9   r$   r`   rc   rj   rn   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rs   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r%  r)  rv   r0  r:   r   r;   __classcell__rX   s   @r   r2   r2   P   s   !'"	8!,

2	2	2A!#"888>JJK!
<!!	:	,K
,
CF
57895?*;B?*/
*
=7!! 	I 	Ir   r2   c                   @   ^  \ rS rSrSrSU 4S jjr\S 5       rSrU =r	$ )r(  i  zPDF String object.c                 .   > [         TU ]  5         Xl        g rA   )rT   r$   string)r#   rB  rX   s     r   r$   String.__init__  s    r   c                 (    [         R                  " SS[        U R                  5      5      nSU-   S-   $ ! [         aR    [
        [        U R                  5      R                  S5      -   nSUR                  5       R                  5       -   S-   s $ f = f)Ns
   ([\\\(\)])s   \\\1   (   )z	utf-16-be   <   >)	resubr   rB  UnicodeEncodeErrorr   r   r   hex)r#   escapedencodeds      r   r   String.data  s    		8
 ff^Xy7MNG'>D((! 	8"S%5%<%<[%IIG'++-..00477	8s   25 ABB)rB  ) )
r5   r6   r7   r8   r9   r$   r:   r   r;   r>  r?  s   @r   r(  r(    s    
 
8 
8r   r(  c                   2    \ rS rSrSrSS jr\S 5       rSrg)r   i  zPDF Array object.Nc                 j    [         R                  U 5        [        R                  X=(       d    / 5        g rA   )r   r$   list)r#   arrays     r   r$   Array.__init__  s    dKR(r   c                 >    SSR                  S U  5       5      -   S-   $ )Nr"  rG   c              3   8   #    U  H  n[        U5      v   M     g 7frA   r   )r   childs     r   r   Array.data.<locals>.<genexpr>  s     CdU	% 0 0dr      ])rK   r"   s    r   r   
Array.data  s!    diiCdCCCdJJr   r<   rA   rP   r<   r   r   r   r     s     ) K Kr   r   c                   J    \ rS rSrSrS rS rS r\S 5       r	S r
SS jrS	rg
)PDFi  zPDF document.c                    / U l         [        5       nSUl        SUl        U R	                  U5        [        S[        / 5      SS.5      U l        U R	                  U R                  5        [        0 5      U l        U R	                  U R                  5        [        SU R                  R                  S.5      U l
        U R	                  U R                  5        SU l        SU l        g)	zCreate a PDF document.i  r
   z/Pagesr   )TypeKidsCountz/Catalog)r_  PagesN)objectsr   r    r!   
add_objectr>   r   pagesinfor,   catalogcurrent_positionxref_position)r#   zero_objects     r   r$   PDF.__init__  s     h!&$  "I!
 

 	

# rN			" "ZZ))#
  	% !"!r   c                     U R                   S==   S-  ss'   U R                  U5        U R                   S   R                  UR                  SS/5        g)zNAdd page to the PDF.

:param page: New page.
:type page: :class:`Dictionary`

ra     r`  r   RN)re  rd  extendr   )r#   pages     r   add_pagePDF.add_page  sF     	

7q 

6!!4;;3"78r   c                 n    [        U R                  5      Ul        U R                  R                  U5        g)zAdd object to the PDF.N)r   rc  r   r]   )r#   object_s     r   rd  PDF.add_object  s$    T\\*G$r   c                 L    [        S U R                  S   S S S2    5       5      $ )Nc              3   J   #    U  H  nU S 3R                  S5      v   M     g7f)z 0 Rr	   N)r   )r   object_numbers     r   r   &PDF.page_references.<locals>.<genexpr>  s,      :!8 oT"))'22!8s   !#r`     )tuplere  r"   s    r   page_referencesPDF.page_references	  s.     :!%F!3CaC!8: : 	:r   c                 n    U =R                   [        U5      S-   -  sl         UR                  US-   5        g)zWrite line to output.

:param content: Content to write.
:type content: :obj:`bytes`
:param output: Output stream.
:type output: binary :term:`file object`

rm  r3  N)rh  r   write)r#   contentoutputs      r   
write_linePDF.write_line  s.     	W!11Wu_%r   c           
      
  ^ [        U=(       d    S5      nUS;  a  [        U5      nU R                  SU-   U5        U R                  SU5        US:  Ga   U(       Ga  / nU R                   Hf  nUR                  S:X  a  M  UR                  (       a  UR                  U5        M9  U R                  Ul        U R                  UR                  U5        Mh     / /nSn[        U5       He  u  pUR                  n
UR                  U
5        US   R                  UR                  5        US   R                  U5        U[        U
5      S-   -  nMg     S	R                  S
 US    5       5      US'   S[        U5      [        US   5      S-   S.n[        X{U5      nU R                  Ul        U R                  U5        U R                  UR                  U5        / nSnU R                   Ht  nUR                  (       a%  UR                  SUR                  U45        US-  nM9  UR                  [!        UR                  5      UR                  UR"                  45        Mv     UR                  SU R                  S45        [%        ['        U R                  S-   S5      5      n[)        S U R                   5       5      n[%        ['        [)        U[        U5      5      S-   S5      5      nSUU4mSR                  U4S jU 5       5      nS[+        S[        U R                  5      S-   45      [+        T5      [        U R                  5      S-   U R,                  R.                  U R0                  R.                  S.nU(       a  SR                  S U R                   5       5      n
[3        U
5      R5                  5       R7                  5       nUSL a  Un[+        [9        U5      R                  [9        U5      R                  45      US'   [        U/X5      nU R                  =U l        Ul        U R                  U5        U R                  UR                  U5        GO`U R                   HB  nUR                  S:X  a  M  U R                  Ul        U R                  UR                  U5        MD     U R                  U l        U R                  SU5        U R                  S[        U R                  5       3R7                  5       U5        U R                   HL  nU R                  UR                  S S	UR"                  S S	UR                   S	3R7                  5       U5        MN     U R                  SU5        U R                  SU5        U R                  S[        U R                  5       3R7                  5       U5        U R                  SU R,                  R.                  -   U5        U R                  SU R0                  R.                  -   U5        U(       a  SR                  S  U R                   5       5      n
[3        U
5      R5                  5       R7                  5       nUSL a  UnU R                  S![9        U5      R                  -   S"-   [9        U5      R                  -   S#-   U5        U R                  S$U5        U R                  S%U5        U R                  U R:                   R7                  5       U5        U R                  S&U5        g')(a  Write PDF to output.

:param output: Output stream.
:type output: binary :term:`file object`
:param bytes version: PDF version.
:param identifier: PDF file identifier. Default is :obj:`False`
  to include no identifier, can be set to :obj:`True` to generate an
  automatic identifier.
:type identifier: :obj:`bytes` or :obj:`bool`
:param bool compress: whether the PDF uses a compressed object stream.

   1.7)FTNs   %PDF-s   %🖤s   1.5r
   r   rm  r'   c              3   8   #    U  H  n[        U5      v   M     g 7frA   )r   )r   is     r   r   PDF.write.<locals>.<genexpr>F  s      ;AQr   z/ObjStm)r_  NFirst      c              3   8   #    U  H  oR                   v   M     g 7frA   )r    )r   rt  s     r   r   r  _  s      !@2>w"",r   r   c              3   t   >#    U  H-  n[        TU5        H  u  p#UR                  US 5      v   M     M/     g7f)bigN)zipto_bytes)r   linelengthrM   xref_lengthss       r   r   r  d  s<      #O Dc,6M]V vu--6M . s   58z/XRef)r_  IndexWSizeRootInfoc              3   \   #    U  H"  oR                   S :w  d  M  UR                  v   M$     g7fr
   Nr!   r   r   objs     r   r   r  p  "       I(4CHCHH   ,,TIDs   xrefz0 01005s   trailerrH   z/Size s   /Root s   /Info c              3   \   #    U  H"  oR                   S :w  d  M  UR                  v   M$     g7fr  r  r  s     r   r   r    r  r  s   /ID [rG   rZ  rI   s	   startxrefs   %%EOFN)r   r  rc  r!   r3   r]   rh  r   r)   	enumerater   r   r   rK   r2   rd  boolr    r   r   maxr   rg  r,   rf  r   	hexdigestr   r(  ri  )r#   r  version
identifierrW   compressed_objectsrt  rU   positionr  r   rV   object_streamxref
dict_indexfield2_sizemax_generationfield3_sizexref_stream	data_hashdict_streamr  s                        @r   r  	PDF.write  s    G-v.00":.J 	7*F3,f5f!#<<<<3&''&--g6%)%:%:GNOOG$4$4f= ( TFH'(:;
||d#q	  0q	  *CIM) <  ; ;;F1I!+,VAY!+E
 #6(;M#'#8#8M OOM*OOM22F; DJ<<''KKM$8$8* EF!OJKKW^^,gnn**!, - ( KKD11156s4#8#81#<cBCK  !@26,,!@ @NsNC(:$;<q@# G HK{K8L(( #O #O OK  3t||#4q#89:<(DLL)A-..		++E xx  I(, I II//188:	%!*J#:&++VI->-C-C%E Fd +@K6:6K6KKD!3OOK(OOK00&9  <<<<3&!%!6!6 0 0&9	 ( "&!6!6DOOGV,OObT\\!2 34;;=vF<<s+1W-?-?,C1~Q()/6; ( OOJ/OOE6*OOfS%6$78??A6JOOI(>(>>GOOI		(;(;;VDxx  I(, I II//188:	%!*Jvj1666=9%**+-1239; OOE6*f-4--.668&A&)r   )rg  rh  rf  rc  re  ri  N)r  FF)r5   r6   r7   r8   r9   r$   rq  rd  r:   r|  r  r  r;   r<   r   r   r]  r]    s4    !"F	9%
 : :

&D*r   r]  )r9   r   rI  r   codecsr   hashlibr   mathr   r   warningsr   VERSION__version__r   r   rB   r>   r2   r(  rS  r   r]  r<   r   r   <module>r     s   
  	        +% D  DF0 0aIV aIH8V 8*KFD KK* K*r   