§
    dÒ³g_ˆ  ã                   ó¬  — 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mZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z  ddlm!Z! ddlm"Z" ddlm#Z# ddlm$Z$ ddlm%Z%  ej&        e'¦  «        Z( G d„ d¦  «        Z) G d„ d¦  «        Z* G d„ d¦  «        Z+ G d„ d¦  «        Z, G d„ de+¦  «        Z- G d„ d e-¦  «        Z. G d!„ d"e.¦  «        Z/ G d#„ d$e.¦  «        Z0 G d%„ d&e-¦  «        Z1 G d'„ d(e+e,¦  «        Z2 G d)„ d*e-e,¦  «        Z3 ed+e+¬,¦  «        Z4 G d-„ d.e-ee4         ¦  «        Z5 G d/„ d0e5e4         ¦  «        Z6 G d1„ d2e6e4         e,¦  «        Z7ee3e2f         Z8 G d3„ d4e7e8         ¦  «        Z9 G d5„ d6e9¦  «        Z: G d7„ d8e9¦  «        Z; G d9„ d:e7e9         ¦  «        Z< G d;„ d<e<¦  «        Z= G d=„ d>e<¦  «        Z>ee<d?f         Z? G d@„ d?e7e?         ¦  «        Z@ G dA„ dBe@¦  «        ZA G dC„ dDe@¦  «        ZB G dE„ dFe5e-         ¦  «        ZC G dG„ dHeC¦  «        ZD G dI„ dJeC¦  «        ZEdS )Ké    N)ÚDictÚGenericÚIterableÚIteratorÚListÚOptionalÚSequenceÚSetÚTupleÚTypeVarÚUnionÚcasté   )ÚPDFColorSpace)ÚPDFFont)ÚColor)ÚPDFGraphicState)Ú	PDFStream)ÚINFÚPathSegment)ÚLTComponentT)ÚMatrix)ÚPlane)ÚPoint)ÚRect©Úapply_matrix_pt)Úbbox2str)Úfsplit)Ú	get_bound)Ú
matrix2str)Úuniqc                   ó(   — e Zd Zd	deddfd„Zd
d„ZdS )ÚIndexAssignerr   ÚindexÚreturnNc                 ó   — || _         d S ©N©r%   )Úselfr%   s     úM/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/pdfminer/layout.pyÚ__init__zIndexAssigner.__init__(   s   € ØˆŒ
ˆ
ˆ
ó    ÚobjÚLTItemc                 óÎ   — t          |t          ¦  «        r| j        |_        | xj        dz  c_        d S t          |t          ¦  «        r|D ]}|                      |¦  «         Œd S d S ©Nr   )Ú
isinstanceÚ	LTTextBoxr%   ÚLTTextGroupÚrun)r*   r.   Úxs      r+   r5   zIndexAssigner.run+   sv   € Ý�c�9Ñ%Ô%ð 	Øœ
ˆCŒIØˆJŒJ˜!‰OˆJŒJˆJˆJÝ˜�[Ñ)Ô)ð 	Øð ð �Ø—’˜‘”��ð	ð 	ðð r-   ©r   )r.   r/   r&   N)Ú__name__Ú
__module__Ú__qualname__Úintr,   r5   © r-   r+   r$   r$   '   sO   € € € € € ðð ˜cð ¨$ð ð ð ð ðð ð ð ð ð r-   r$   c                   ój   — e Zd ZdZ	 	 	 	 	 	 	 ddededed	ed
ee         dededdfd„Zdd„Zde	fd„Z
dS )ÚLAParamsa  Parameters for layout analysis

    :param line_overlap: If two characters have more overlap than this they
        are considered to be on the same line. The overlap is specified
        relative to the minimum height of both characters.
    :param char_margin: If two characters are closer together than this
        margin they are considered part of the same line. The margin is
        specified relative to the width of the character.
    :param word_margin: If two characters on the same line are further apart
        than this margin then they are considered to be two separate words, and
        an intermediate space will be added for readability. The margin is
        specified relative to the width of the character.
    :param line_margin: If two lines are are close together they are
        considered to be part of the same paragraph. The margin is
        specified relative to the height of a line.
    :param boxes_flow: Specifies how much a horizontal and vertical position
        of a text matters when determining the order of text boxes. The value
        should be within the range of -1.0 (only horizontal position
        matters) to +1.0 (only vertical position matters). You can also pass
        `None` to disable advanced layout analysis, and instead return text
        based on the position of the bottom left corner of the text box.
    :param detect_vertical: If vertical text should be considered during
        layout analysis
    :param all_texts: If layout analysis should be performed on text in
        figures.
    ç      à?ç       @çš™™™™™¹?FÚline_overlapÚchar_marginÚline_marginÚword_marginÚ
boxes_flowÚdetect_verticalÚ	all_textsr&   Nc                 ó�   — || _         || _        || _        || _        || _        || _        || _        |                      ¦   «          d S r(   )rB   rC   rD   rE   rF   rG   rH   Ú	_validate)r*   rB   rC   rD   rE   rF   rG   rH   s           r+   r,   zLAParams.__init__P   sP   € ð )ˆÔØ&ˆÔØ&ˆÔØ&ˆÔØ$ˆŒØ.ˆÔØ"ˆŒà�ŠÑÔÐÐÐr-   c                 óè   — | j         �hd}t          | j         t          ¦  «        s)t          | j         t          ¦  «        st	          |¦  «        ‚d| j         cxk    rdk    sn t          |¦  «        ‚d S d S )Nz@LAParam boxes_flow should be None, or a number between -1 and +1éÿÿÿÿr   )rF   r2   r;   ÚfloatÚ	TypeErrorÚ
ValueError)r*   Úboxes_flow_err_msgs     r+   rJ   zLAParams._validated   sŽ   € ØŒ?Ð&àUð õ ˜4œ?­CÑ0Ô0ð4Ý4>¸t¼ÕPUÑ4VÔ4Vð4õ  Ð 2Ñ3Ô3Ð3Ø˜œÐ-Ð-Ò-Ð-¨AÒ-Ð-Ð-Ð-Ý Ð!3Ñ4Ô4Ð4ð 'Ð&ð .Ð-r-   c                 ó<   — d| j         | j        | j        | j        fz  S )NzM<LAParams: char_margin=%.1f, line_margin=%.1f, word_margin=%.1f all_texts=%r>)rC   rD   rE   rH   ©r*   s    r+   Ú__repr__zLAParams.__repr__p   s)   € ð-àÔ Ô!1°4Ô3CÀTÄ^ÐTñUð	
r-   )r?   r@   r?   rA   r?   FF©r&   N)r8   r9   r:   Ú__doc__rM   r   Úboolr,   rJ   ÚstrrS   r<   r-   r+   r>   r>   4   sÏ   € € € € € ðð ð: "Ø Ø Ø Ø&)Ø %Øðð àðð ðð ð	ð
 ðð ˜U”Oðð ðð ðð 
ðð ð ð ð(
5ð 
5ð 
5ð 
5ð
˜#ð 
ð 
ð 
ð 
ð 
ð 
r-   r>   c                   ó"   — e Zd ZdZdeddfd„ZdS )r/   z)Interface for things that can be analyzedÚlaparamsr&   Nc                 ó   — dS )zPerform the layout analysis.Nr<   ©r*   rY   s     r+   ÚanalyzezLTItem.analyze{   s   € àˆr-   )r8   r9   r:   rU   r>   r\   r<   r-   r+   r/   r/   x   s<   € € € € € Ø3Ð3ð ð ¨Tð ð ð ð ð ð r-   r/   c                   ó*   — e Zd ZdZdefd„Zdefd„ZdS )ÚLTTextz#Interface for things that have textr&   c                 óL   — d| j         j        ›d|                      ¦   «         ›d�S ©Nú<ú ú>)Ú	__class__r8   Úget_textrR   s    r+   rS   zLTText.__repr__ƒ   s&   € € Ø œNÔ3Ð3Ð3°T·]²]±_´_°_°_ÐEÐEr-   c                 ó   — t           ‚)zText contained in this object©ÚNotImplementedErrorrR   s    r+   re   zLTText.get_text†   s   € å!Ð!r-   N)r8   r9   r:   rU   rW   rS   re   r<   r-   r+   r^   r^   €   sU   € € € € € Ø-Ð-ðF˜#ð Fð Fð Fð Fð"˜#ð "ð "ð "ð "ð "ð "r-   r^   c                   óê   — e Zd ZdZdeddfd„Z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dfd„Zde	fd„Zdd de	fd„Zdd defd„Zdd defd„Zdd de	fd„Zdd defd„Zdd defd„ZdS )ÚLTComponentzObject with a bounding boxÚbboxr&   Nc                 ód   — t                                | ¦  «         |                      |¦  «         d S r(   )r/   r,   Úset_bbox©r*   rk   s     r+   r,   zLTComponent.__init__Ž   s,   € Ý�Š˜ÑÔÐØ�Š�dÑÔÐÐÐr-   c                 óL   — d| j         j        ›dt          | j        ¦  «        ›d�S r`   )rd   r8   r   rk   rR   s    r+   rS   zLTComponent.__repr__’   s*   € € Ø œNÔ3Ð3Ð3µX¸d¼iÑ5HÔ5HÐ5HÐ5HÐIÐIr-   Ú_c                 ó   — t           ‚r(   ©rO   ©r*   rp   s     r+   Ú__lt__zLTComponent.__lt__–   ó   € ÝÐr-   c                 ó   — t           ‚r(   rr   rs   s     r+   Ú__le__zLTComponent.__le__™   ru   r-   c                 ó   — t           ‚r(   rr   rs   s     r+   Ú__gt__zLTComponent.__gt__œ   ru   r-   c                 ó   — t           ‚r(   rr   rs   s     r+   Ú__ge__zLTComponent.__ge__Ÿ   ru   r-   c                 ó‚   — |\  }}}}|| _         || _        || _        || _        ||z
  | _        ||z
  | _        || _        d S r(   )Úx0Úy0Úx1Úy1ÚwidthÚheightrk   )r*   rk   r}   r~   r   r€   s         r+   rm   zLTComponent.set_bbox¢   sM   € ØÑˆˆR��RØˆŒØˆŒØˆŒØˆŒØ˜"‘WˆŒ
Ø˜2‘gˆŒØˆŒ	ˆ	ˆ	r-   c                 ó.   — | j         dk    p
| j        dk    S ©Nr   )r�   r‚   rR   s    r+   Úis_emptyzLTComponent.is_empty¬   s   € ØŒz˜QŠÐ2 $¤+°Ò"2Ð2r-   r.   c                 ó´   — t          |t          ¦  «        s$J t          t          |¦  «        ¦  «        ¦   «         ‚|j        | j        k    o| j        |j        k    S r(   )r2   rj   rW   Útyper}   r   ©r*   r.   s     r+   Úis_hoverlapzLTComponent.is_hoverlap¯   óI   € Ý˜#�{Ñ+Ô+Ð;Ð;­Sµ°c±´©^¬^Ñ;Ô;Ð;ØŒv˜œÒ Ð6 T¤W°´Ò%6Ð6r-   c                 ó*  — t          |t          ¦  «        s$J t          t          |¦  «        ¦  «        ¦   «         ‚|                      |¦  «        rdS t          t          | j        |j        z
  ¦  «        t          | j        |j        z
  ¦  «        ¦  «        S r„   ©	r2   rj   rW   r‡   r‰   ÚminÚabsr}   r   rˆ   s     r+   Ú	hdistancezLTComponent.hdistance³   óz   € Ý˜#�{Ñ+Ô+Ð;Ð;­Sµ°c±´©^¬^Ñ;Ô;Ð;Ø×Ò˜CÑ Ô ð 	EØ�1å•s˜4œ7 S¤VÑ+Ñ,Ô,­c°$´'¸C¼FÑ2BÑ.CÔ.CÑDÔDÐDr-   c                 ó*  — t          |t          ¦  «        s$J t          t          |¦  «        ¦  «        ¦   «         ‚|                      |¦  «        rDt          t          | j        |j        z
  ¦  «        t          | j        |j        z
  ¦  «        ¦  «        S dS r„   rŒ   rˆ   s     r+   ÚhoverlapzLTComponent.hoverlapº   óy   € Ý˜#�{Ñ+Ô+Ð;Ð;­Sµ°c±´©^¬^Ñ;Ô;Ð;Ø×Ò˜CÑ Ô ð 	Ý•s˜4œ7 S¤VÑ+Ñ,Ô,­c°$´'¸C¼FÑ2BÑ.CÔ.CÑDÔDÐDà�1r-   c                 ó´   — t          |t          ¦  «        s$J t          t          |¦  «        ¦  «        ¦   «         ‚|j        | j        k    o| j        |j        k    S r(   )r2   rj   rW   r‡   r~   r€   rˆ   s     r+   Úis_voverlapzLTComponent.is_voverlapÁ   rŠ   r-   c                 ó*  — t          |t          ¦  «        s$J t          t          |¦  «        ¦  «        ¦   «         ‚|                      |¦  «        rdS t          t          | j        |j        z
  ¦  «        t          | j        |j        z
  ¦  «        ¦  «        S r„   ©	r2   rj   rW   r‡   r•   r�   rŽ   r~   r€   rˆ   s     r+   Ú	vdistancezLTComponent.vdistanceÅ   r�   r-   c                 ó*  — t          |t          ¦  «        s$J t          t          |¦  «        ¦  «        ¦   «         ‚|                      |¦  «        rDt          t          | j        |j        z
  ¦  «        t          | j        |j        z
  ¦  «        ¦  «        S dS r„   r—   rˆ   s     r+   ÚvoverlapzLTComponent.voverlapÌ   r“   r-   )r8   r9   r:   rU   r   r,   rW   rS   ÚobjectrV   rt   rw   ry   r{   rm   r…   r‰   rM   r�   r’   r•   r˜   rš   r<   r-   r+   rj   rj   ‹   sù  € € € € € Ø$Ð$ð˜Tð  dð ð ð ð ðJ˜#ð Jð Jð Jð Jð˜ð  4ð ð ð ð ð˜ð  4ð ð ð ð ð˜ð  4ð ð ð ð ð˜ð  4ð ð ð ð ð˜Tð  dð ð ð ð ð3˜$ð 3ð 3ð 3ð 3ð7˜}ð 7°ð 7ð 7ð 7ð 7ðE˜]ð E¨uð Eð Eð Eð Eð˜Mð ¨eð ð ð ð ð7˜}ð 7°ð 7ð 7ð 7ð 7ðE˜]ð E¨uð Eð Eð Eð Eð˜Mð ¨eð ð ð ð ð ð r-   rj   c                   ó¶   — e Zd ZdZ	 	 	 	 	 	 	 ddedee         dededed	ee	         d
ee	         deee
                  deeeef                  ddfd„Zdefd„ZdS )ÚLTCurvezå
    A generic Bezier curve

    The parameter `original_path` contains the original
    pathing information from the pdf (e.g. for reconstructing Bezier Curves).

    `dashing_style` contains the Dashing information if any.
    FNÚ	linewidthÚptsÚstrokeÚfillÚevenoddÚstroking_colorÚnon_stroking_colorÚoriginal_pathÚdashing_styler&   c
                 óÔ   — t                                | t          |¦  «        ¦  «         || _        || _        || _        || _        || _        || _        || _	        || _
        |	| _        d S r(   )rj   r,   r    rŸ   rž   r    r¡   r¢   r£   r¤   r¥   r¦   )
r*   rž   rŸ   r    r¡   r¢   r£   r¤   r¥   r¦   s
             r+   r,   zLTCurve.__init__Þ   si   € õ 	×Ò˜T¥9¨S¡>¤>Ñ2Ô2Ð2ØˆŒØ"ˆŒØˆŒØˆŒ	ØˆŒØ,ˆÔØ"4ˆÔØ*ˆÔØ*ˆÔÐÐr-   c                 óJ   — d                      d„ | j        D ¦   «         ¦  «        S )Nú,c              3   ó    K  — | ]	}d |z  V — Œ
dS )z	%.3f,%.3fNr<   )Ú.0Úps     r+   ú	<genexpr>z"LTCurve.get_pts.<locals>.<genexpr>ö   s&   è è € Ð:Ð:¨A˜ a™Ð:Ð:Ð:Ð:Ð:Ð:r-   )ÚjoinrŸ   rR   s    r+   Úget_ptszLTCurve.get_ptsõ   s%   € Ø�xŠxÐ:Ð:°´Ð:Ñ:Ô:Ñ:Ô:Ð:r-   ©FFFNNNN)r8   r9   r:   rU   rM   r   r   rV   r   r   r   r   r›   r,   rW   r¯   r<   r-   r+   r�   r�   Ô   sï   € € € € € ðð ð ØØØ*.Ø.2Ø59Ø9=ð+ð +àð+ð �%Œ[ð+ð ð	+ð
 ð+ð ð+ð ! œð+ð % UœOð+ð    [Ô 1Ô2ð+ð    f¨f nÔ 5Ô6ð+ð 
ð+ð +ð +ð +ð.;˜ð ;ð ;ð ;ð ;ð ;ð ;r-   r�   c                   ó¢   — e Zd ZdZ	 	 	 	 	 	 	 ddededededed	ed
ee         dee         dee	e
                  deeeef                  ddfd„ZdS )ÚLTLinezOA single straight line.

    Could be used for separating text or figures.
    FNrž   Úp0Úp1r    r¡   r¢   r£   r¤   r¥   r¦   r&   c                 óP   — t                                | |||g||||||	|
¦
  «
         d S r(   ©r�   r,   )r*   rž   r³   r´   r    r¡   r¢   r£   r¤   r¥   r¦   s              r+   r,   zLTLine.__init__ÿ   sH   € õ 	×ÒØØØ�ˆHØØØØØØØñ	
ô 	
ð 	
ð 	
ð 	
r-   r°   )r8   r9   r:   rU   rM   r   rV   r   r   r   r   r   r›   r,   r<   r-   r+   r²   r²   ù   sÚ   € € € € € ðð ð ØØØ*.Ø.2Ø59Ø9=ð
ð 
àð
ð ð
ð ð	
ð
 ð
ð ð
ð ð
ð ! œð
ð % UœOð
ð    [Ô 1Ô2ð
ð    f¨f nÔ 5Ô6ð
ð 
ð
ð 
ð 
ð 
ð 
ð 
r-   r²   c                   óž   — e Zd ZdZ	 	 	 	 	 	 	 ddededededed	ee         d
ee         dee	e
                  deeeef                  ddfd„ZdS )ÚLTRectzMA rectangle.

    Could be used for framing another pictures or figures.
    FNrž   rk   r    r¡   r¢   r£   r¤   r¥   r¦   r&   c
                 ór   — |\  }
}}}t                                | ||
|f||f||f|
|fg|||||||	¦
  «
         d S r(   r¶   )r*   rž   rk   r    r¡   r¢   r£   r¤   r¥   r¦   r}   r~   r   r€   s                 r+   r,   zLTRect.__init__   sk   € ð  ÑˆˆR��RÝ×ÒØØØ�"ˆX˜˜B�x " b ¨B°¨8Ð4ØØØØØØØñ	
ô 	
ð 	
ð 	
ð 	
r-   r°   )r8   r9   r:   rU   rM   r   rV   r   r   r   r   r   r›   r,   r<   r-   r+   r¸   r¸     sÐ   € € € € € ðð ð ØØØ*.Ø.2Ø59Ø9=ð
ð 
àð
ð ð
ð ð	
ð
 ð
ð ð
ð ! œð
ð % UœOð
ð    [Ô 1Ô2ð
ð    f¨f nÔ 5Ô6ð
ð 
ð
ð 
ð 
ð 
ð 
ð 
r-   r¸   c                   ó6   — e Zd ZdZdedededdfd„Zdefd„ZdS )	ÚLTImagezKAn image object.

    Embedded images can be in JPEG, Bitmap or JBIG2.
    ÚnameÚstreamrk   r&   Nc                 ó¦  — t                                | |¦  «         || _        || _        |                     d¦  «        |                     d¦  «        f| _        |                     d¦  «        | _        |                     dd¦  «        | _        |                     d¦  «        | _        t          | j        t          ¦  «        s| j        g| _        d S d S )N)ÚWÚWidth)ÚHÚHeight)ÚIMÚ	ImageMask)ÚBPCÚBitsPerComponentr   )ÚCSÚ
ColorSpace)rj   r,   r¼   r½   Úget_anyÚsrcsizeÚ	imagemaskÚbitsÚ
colorspacer2   Úlist)r*   r¼   r½   rk   s       r+   r,   zLTImage.__init__A  s¶   € Ý×Ò˜T 4Ñ(Ô(Ð(ØˆŒ	ØˆŒØŸš ~Ñ6Ô6¸¿ºÀÑ8WÔ8WÐXˆŒØŸšÐ(;Ñ<Ô<ˆŒØ—N’NÐ#>ÀÑBÔBˆŒ	Ø Ÿ.š.Ð)=Ñ>Ô>ˆŒÝ˜$œ/­4Ñ0Ô0ð 	0Ø#œÐ/ˆDŒOˆOˆOð	0ð 	0r-   c           	      ól   — d| j         j        ›d| j        ›dt          | j        ¦  «        ›d| j        ›d�	S ©Nra   ú(ú) rb   rc   )rd   r8   r¼   r   rk   rÊ   rR   s    r+   rS   zLTImage.__repr__L  sA   € € àŒNÔ#Ð#Ð#ØŒIˆIˆIÝ�T”YÑÔÐÐØŒLˆLˆLð	
ð 	
r-   )	r8   r9   r:   rU   rW   r   r   r,   rS   r<   r-   r+   r»   r»   ;  si   € € € € € ðð ð
	0˜Sð 	0¨)ð 	0¸4ð 	0ÀDð 	0ð 	0ð 	0ð 	0ð
˜#ð 
ð 
ð 
ð 
ð 
ð 
r-   r»   c                   ó.   — e Zd ZdZdeddfd„Zdefd„ZdS )ÚLTAnnoa  Actual letter in the text as a Unicode string.

    Note that, while a LTChar object has actual boundaries, LTAnno objects does
    not, as these are "virtual" characters, inserted by a layout analyzer
    according to the relationship between two characters (e.g. a space).
    Útextr&   Nc                 ó   — || _         d S r(   ©Ú_text)r*   rÕ   s     r+   r,   zLTAnno.__init__]  s   € ØˆŒ
Øˆr-   c                 ó   — | j         S r(   r×   rR   s    r+   re   zLTAnno.get_texta  ó
   € ØŒzÐr-   )r8   r9   r:   rU   rW   r,   re   r<   r-   r+   rÔ   rÔ   U  s[   € € € € € ðð ð˜Sð  Tð ð ð ð ð˜#ð ð ð ð ð ð r-   rÔ   c                   óš   — e Zd ZdZdededededededed	eee	e
e         ef         f         d
ededdfd„Zdefd„Zdefd„Zdedefd„ZdS )ÚLTCharz.Actual letter in the text as a Unicode string.ÚmatrixÚfontÚfontsizeÚscalingÚriserÕ   Ú	textwidthÚtextdispÚncsÚgraphicstater&   Nc                 ó<  — t                                | ¦  «         || _        || _        |j        | _        |	| _        |
| _        ||z  |z  | _        |                     ¦   «         rSt          |t          ¦  «        sJ ‚|\  }}|€|dz  }n||z  dz  }d|z
  |z  dz  }| ||z   | j        z   f}| |z   ||z   f}n-|                     ¦   «         |z  }d||z   f}| j        ||z   |z   f}| j        \  }}}}}}d||z  |z  k     o||z  dk    | _        t          | j        |¦  «        \  }}t          | j        |¦  «        \  }}||k     r||}}||k     r||}}t                               | ||||f¦  «         |                     ¦   «         r| j        | _        n| j        | _        d S )Nr?   gü©ñÒMbP?iè  r   )r^   r,   rØ   rÝ   Úfontnamerä   rå   ÚadvÚis_verticalr2   ÚtupleÚget_descentÚuprightr   rj   r�   Úsizer‚   )r*   rÝ   rÞ   rß   rà   rá   rÕ   râ   rã   rä   rå   ÚvxÚvyÚbbox_lower_leftÚbbox_upper_rightÚdescentÚaÚbÚcÚdÚeÚfr}   r~   r   r€   s                             r+   r,   zLTChar.__init__h  sí  € õ 	�Š˜ÑÔÐØˆŒ
ØˆŒØœˆŒØˆŒØ(ˆÔØ˜xÑ'¨'Ñ1ˆŒà×ÒÑÔð 	Eå˜h­Ñ.Ô.Ð.Ð.Ð.Ø‰HˆR�ØˆzØ ‘^��à˜(‘] UÑ*�Ø˜‘)˜xÑ'¨%Ñ/ˆBØ "˜s B¨¡I°´Ñ$8Ð9ˆOØ!#  h¡°°T±	Ð:ÐÐð ×&Ò&Ñ(Ô(¨8Ñ3ˆGØ  '¨D¡.Ð1ˆOØ $¤¨'°D©.¸8Ñ*CÐDÐØ!œ[ÑˆˆAˆq�!�Q˜Ø˜1˜q™5 7™?Ò*Ð9¨q°1©u¸ªzˆŒÝ" 4¤;°Ñ@Ô@‰ˆˆRÝ" 4¤;Ð0@ÑAÔA‰ˆˆRØ�Š7ˆ7Ø˜B�ˆRØ�Š7ˆ7Ø˜B�ˆRÝ×Ò˜T B¨¨B°Ð#3Ñ4Ô4Ð4Ø×ÒÑÔð 	$Øœ
ˆDŒIˆIàœˆDŒIØˆr-   c                 óÀ   — d| j         j        ›dt          | j        ¦  «        ›dt	          | j        ¦  «        ›d| j        ›d| j        ›d|                      ¦   «         ›d�S )Nra   rb   ú matrix=z font=z adv=z text=rc   )	rd   r8   r   rk   r!   rÝ   rç   rè   re   rR   s    r+   rS   zLTChar.__repr__œ  sc   € € àŒNÔ#Ð#Ð#Ý�T”YÑÔÐÐÝ�t”{Ñ#Ô#Ð#Ð#ØŒMˆMˆMØŒHˆHˆHØ�MŠM‰OŒOˆOˆOð
ð 	
r-   c                 ó   — | j         S r(   r×   rR   s    r+   re   zLTChar.get_text¦  rÚ   r-   r.   c                 ó   — dS )z<Returns True if two characters can coexist in the same line.Tr<   rˆ   s     r+   Úis_compatiblezLTChar.is_compatible©  s   € àˆtr-   )r8   r9   r:   rU   r   r   rM   rW   r   r   r   r   r   r,   rS   re   r›   rV   rý   r<   r-   r+   rÜ   rÜ   e  s  € € € € € Ø8Ð8ð2àð2ð ð2ð ð	2ð
 ð2ð ð2ð ð2ð ð2ð ˜˜u X¨e¤_°eÐ%;Ô<Ð<Ô=ð2ð ð2ð &ð2ð 
ð2ð 2ð 2ð 2ðh
˜#ð 
ð 
ð 
ð 
ð˜#ð ð ð ð ð ð ¨Dð ð ð ð ð ð r-   rÜ   ÚLTItemT)Úboundc                   ó‚   — 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dfd	„Zd
ee         ddfd„Zdeddfd„ZdS )ÚLTContainerz(Object that can be extended and analyzedrk   r&   Nc                 óJ   — t                                | |¦  «         g | _        d S r(   )rj   r,   Ú_objsrn   s     r+   r,   zLTContainer.__init__´  s$   € Ý×Ò˜T 4Ñ(Ô(Ð(Ø$&ˆŒ
Øˆr-   c                 ó*   — t          | j        ¦  «        S r(   )Úiterr  rR   s    r+   Ú__iter__zLTContainer.__iter__¹  s   € Ý�D”JÑÔÐr-   c                 ó*   — t          | j        ¦  «        S r(   )Úlenr  rR   s    r+   Ú__len__zLTContainer.__len__¼  s   € Ý�4”:‰ŒÐr-   r.   c                 ó:   — | j                              |¦  «         d S r(   )r  Úappendrˆ   s     r+   ÚaddzLTContainer.add¿  s   € ØŒ
×Ò˜#ÑÔÐØˆr-   Úobjsc                 ó:   — |D ]}|                       |¦  «         Œd S r(   )r  )r*   r  r.   s      r+   ÚextendzLTContainer.extendÃ  s'   € Øð 	ð 	ˆCØ�HŠH�S‰MŒMˆMˆMØˆr-   rY   c                 óD   — | j         D ]}|                     |¦  «         Œd S r(   )r  r\   ©r*   rY   r.   s      r+   r\   zLTContainer.analyzeÈ  s-   € Ø”:ð 	"ð 	"ˆCØ�KŠK˜Ñ!Ô!Ð!Ð!Øˆr-   )r8   r9   r:   rU   r   r,   r   rþ   r  r;   r	  r  r   r  r>   r\   r<   r-   r+   r  r  ±  sâ   € € € € € Ø2Ð2ð˜Tð  dð ð ð ð ð
 ˜( 7Ô+ð  ð  ð  ð  ð˜ð ð ð ð ð�wð  4ð ð ð ð ð˜8 GÔ,ð °ð ð ð ð ð
 ð ¨Tð ð ð ð ð ð r-   r  c                   ó&   — e Zd Zdd„Zdeddfd„ZdS )ÚLTExpandableContainerr&   Nc                 ót   — t                                | t          
 t          
 t           t           f¦  «         d S r(   )r  r,   r   rR   s    r+   r,   zLTExpandableContainer.__init__Ï  s.   € Ý×Ò˜T¥S D­3¨$µ°µs°dÐ#;Ñ<Ô<Ð<Øˆr-   r.   c           	      óT  — t                                | t          t          |¦  «        ¦  «         |                      t          | j        |j        ¦  «        t          | j        |j        ¦  «        t          | j	        |j	        ¦  «        t          | j
        |j
        ¦  «        f¦  «         d S r(   )r  r  r   rþ   rm   r�   r}   r~   Úmaxr   r€   rˆ   s     r+   r  zLTExpandableContainer.addÕ  s†   € Ý�Š˜�d¥7¨CÑ0Ô0Ñ1Ô1Ð1Ø�Šå�D”G˜SœVÑ$Ô$Ý�D”G˜SœVÑ$Ô$Ý�D”G˜SœVÑ$Ô$Ý�D”G˜SœVÑ$Ô$ð	ñ	
ô 	
ð 	
ð 	ˆr-   rT   )r8   r9   r:   r,   rj   r  r<   r-   r+   r  r  Î  sJ   € € € € € ðð ð ð ð
�{ð 
 tð 
ð 
ð 
ð 
ð 
ð 
r-   r  c                   ó"   — e Zd Zdd„Zdefd„ZdS )ÚLTTextContainerr&   Nc                 ón   — t                                | ¦  «         t                               | ¦  «         d S r(   )r^   r,   r  rR   s    r+   r,   zLTTextContainer.__init__ã  s-   € Ý�Š˜ÑÔÐÝ×&Ò& tÑ,Ô,Ð,Øˆr-   c                 ó@   — d                      d„ | D ¦   «         ¦  «        S )NÚ c              3   óŽ   K  — | ]@}t          |t          ¦  «        ¯t          t          |¦  «                             ¦   «         V — ŒAd S r(   )r2   r^   r   re   )r«   r.   s     r+   r­   z+LTTextContainer.get_text.<locals>.<genexpr>é  s[   è è € ð 
ð 
Ø-0½JÀsÍFÑ<SÔ<Sð
Ý•˜ÑÔ×&Ò&Ñ(Ô(ð
ð 
ð 
ð 
ð 
ð 
r-   )r®   rR   s    r+   re   zLTTextContainer.get_textè  s4   € Ø�wŠwð 
ð 
Ø48ð
ñ 
ô 
ñ 
ô 
ð 	
r-   rT   )r8   r9   r:   r,   rW   re   r<   r-   r+   r  r  â  sC   € € € € € ðð ð ð ð

˜#ð 
ð 
ð 
ð 
ð 
ð 
r-   r  c                   ó„   ‡ — e Zd ZdZdeddfˆ fd„Zdefd„Zdeddfd„Z	d	e
e         d
eded          fd„Zdefˆ fd„Zˆ xZS )Ú
LTTextLinez¶Contains a list of LTChar objects that represent a single text line.

    The characters are aligned either horizontally or vertically, depending on
    the text's writing mode.
    rE   r&   Nc                 óV   •— t          ¦   «                              ¦   «          || _        d S r(   )Úsuperr,   rE   )r*   rE   rd   s     €r+   r,   zLTTextLine.__init__ø  s&   ø€ Ý‰Œ×ÒÑÔÐØ&ˆÔØˆr-   c                 óv   — d| j         j        ›dt          | j        ¦  «        ›d|                      ¦   «         ›d�S r`   )rd   r8   r   rk   re   rR   s    r+   rS   zLTTextLine.__repr__ý  s>   € € àŒNÔ#Ð#Ð#Ý�T”YÑÔÐÐØ�MŠM‰OŒOˆOˆOð
ð 	
r-   rY   c                 ó”   — | j         D ]}|                     |¦  «         Œt                               | t	          d¦  «        ¦  «         d S )Nú
)r  r\   r  r  rÔ   r  s      r+   r\   zLTTextLine.analyze  sG   € Ø”:ð 	"ð 	"ˆCØ�KŠK˜Ñ!Ô!Ð!Ð!Ý�Š˜�f T™lœlÑ+Ô+Ð+Øˆr-   ÚplaneÚratioc                 ó   — t           ‚r(   rg   )r*   r$  r%  s      r+   Úfind_neighborszLTTextLine.find_neighbors
  s
   € õ "Ð!r-   c                 ó�   •— t          ¦   «                              ¦   «         p%|                      ¦   «                              ¦   «         S r(   )r   r…   re   Úisspace)r*   rd   s    €r+   r…   zLTTextLine.is_empty  s2   ø€ Ý‰wŒw×ÒÑ!Ô!Ð> T§]¢]¡_¤_×%<Ò%<Ñ%>Ô%>Ð>r-   )r8   r9   r:   rU   rM   r,   rW   rS   r>   r\   r   r   r   r'  rV   r…   Ú__classcell__©rd   s   @r+   r  r  ñ  sí   ø€ € € € € ðð ð Eð ¨dð ð ð ð ð ð ð

˜#ð 
ð 
ð 
ð 
ð ð ¨Tð ð ð ð ð"Ø˜<Ô(ð"Ø16ð"à	ˆlÔ	ð"ð "ð "ð "ð
?˜$ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?r-   r  c                   ó¾   ‡ — e Zd Zdeddfd„Zdeddfˆ fd„Zdee         dede	e
         fd	„Zddededefd„Zddededefd„Z	 ddededefd„Zddededefd„Zˆ xZS )ÚLTTextLineHorizontalrE   r&   Nc                 óV   — t                                | |¦  «         t          
 | _        d S r(   )r  r,   r   Ú_x1©r*   rE   s     r+   r,   zLTTextLineHorizontal.__init__  ó&   € Ý×Ò˜D +Ñ.Ô.Ð.Ý˜$ˆŒØˆr-   r.   c                 óT  •— t          |t          ¦  «        rd| j        r]| j        t          |j        |j        ¦  «        z  }| j        |j        |z
  k     r(t           	                    | t          d¦  «        ¦  «         |j        | _        t          ¦   «          	                    |¦  «         d S ©Nrb   )r2   rÜ   rE   r  r�   r‚   r/  r}   r  r  rÔ   r   r   ©r*   r.   Úmarginrd   s      €r+   r  zLTTextLineHorizontal.add  s‹   ø€ Ý�c�6Ñ"Ô"ð 	3 tÔ'7ð 	3ØÔ%­¨C¬I°s´zÑ(BÔ(BÑBˆFØŒx˜#œ& 6™/Ò)Ð)Ý—’ ¥f¨S¡k¤kÑ2Ô2Ð2Ø”6ˆŒÝ‰Œ�Š�CÑÔÐØˆr-   r$  r%  c                 óž   ‡ ‡— |‰ j         z  Š|                     ‰ j        ‰ j        ‰z
  ‰ j        ‰ j        ‰z   f¦  «        }ˆˆ fd„|D ¦   «         S )aK  
        Finds neighboring LTTextLineHorizontals in the plane.

        Returns a list of other LTTestLineHorizontals in the plane which are
        close to self. "Close" can be controlled by ratio. The returned objects
        will be the same height as self, and also either left-, right-, or
        centrally-aligned.
        c                 óö   •— g | ]u}t          |t          ¦  «        ¯‰                     |‰¬ ¦  «        ¯.‰                     |‰¬ ¦  «        s.‰                     |‰¬ ¦  «        s‰                     |‰¬ ¦  «        ¯s|‘ŒvS ©)Ú	tolerance)r2   r-  Ú_is_same_height_asÚ_is_left_aligned_withÚ_is_right_aligned_withÚ_is_centrally_aligned_with©r«   r.   rö   r*   s     €€r+   ú
<listcomp>z7LTTextLineHorizontal.find_neighbors.<locals>.<listcomp>1  s®   ø€ ð 
ð 
ð 
àå˜3Õ 4Ñ5Ô5ð	
ð
 ×+Ò+¨C¸1Ð+Ñ=Ô=ð
ð ×.Ò.¨s¸aÐ.Ñ@Ô@ð
ð ×2Ò2°3À!Ð2ÑDÔDð
ð ×6Ò6°sÀaÐ6ÑHÔHð
Øð
ð 
ð 
r-   )r‚   Úfindr}   r~   r   r€   ©r*   r$  r%  r  rö   s   `   @r+   r'  z#LTTextLineHorizontal.find_neighbors$  sl   øø€ ð �D”KÑˆØ�zŠz˜4œ7 D¤G¨a¡K°´¸$¼'ÀA¹+ÐFÑGÔGˆð
ð 
ð 
ð 
ð 
àð
ñ 
ô 
ð 	
r-   r   Úotherr9  c                 óB   — t          |j        | j        z
  ¦  «        |k    S )zN
        Whether the left-hand edge of `other` is within `tolerance`.
        )rŽ   r}   ©r*   rB  r9  s      r+   r;  z*LTTextLineHorizontal._is_left_aligned_with?  ó    € õ �5”8˜dœgÑ%Ñ&Ô&¨)Ò3Ð3r-   c                 óB   — t          |j        | j        z
  ¦  «        |k    S )zO
        Whether the right-hand edge of `other` is within `tolerance`.
        )rŽ   r   rD  s      r+   r<  z+LTTextLineHorizontal._is_right_aligned_withE  rE  r-   c                 ón   — t          |j        |j        z   dz  | j        | j        z   dz  z
  ¦  «        |k    S )zQ
        Whether the horizontal center of `other` is within `tolerance`.
        é   )rŽ   r}   r   rD  s      r+   r=  z/LTTextLineHorizontal._is_centrally_aligned_withK  ó8   € õ �E”H˜uœxÑ'¨1Ñ,°´¸$¼'Ñ0AÀQÑ/FÑFÑGÔGÈ9ÒTÐTr-   c                 óB   — t          |j        | j        z
  ¦  «        |k    S r(   )rŽ   r‚   rD  s      r+   r:  z'LTTextLineHorizontal._is_same_height_asS  s   € Ý�5”< $¤+Ñ-Ñ.Ô.°)Ò;Ð;r-   r7   )r8   r9   r:   rM   r,   rj   r  r   r   r   r  r'  rV   r;  r<  r=  r:  r*  r+  s   @r+   r-  r-    sm  ø€ € € € € ð Eð ¨dð ð ð ð ð�{ð  tð ð ð ð ð ð ð
Ø˜<Ô(ð
Ø16ð
à	ˆjÔ	ð
ð 
ð 
ð 
ð64ð 4¨;ð 4À5ð 4ÐQUð 4ð 4ð 4ð 4ð4ð 4¨Kð 4ÀEð 4ÐRVð 4ð 4ð 4ð 4ð 67ðUð UØ ðUØ-2ðUà	ðUð Uð Uð Uð<ð <¨ð <Àð <Èdð <ð <ð <ð <ð <ð <ð <ð <r-   r-  c                   ó¼   ‡ — e Zd Zdeddfd„Zdeddfˆ fd„Zdee         dede	e
         fd	„Zddededefd„Zddededefd„Z	 ddededefd„Zdededefd„Zˆ xZS )ÚLTTextLineVerticalrE   r&   Nc                 óV   — t                                | |¦  «         t           | _        d S r(   )r  r,   r   Ú_y0r0  s     r+   r,   zLTTextLineVertical.__init__X  r1  r-   r.   c                 óT  •— t          |t          ¦  «        rd| j        r]| j        t          |j        |j        ¦  «        z  }|j        |z   | j        k     r(t           	                    | t          d¦  «        ¦  «         |j        | _        t          ¦   «          	                    |¦  «         d S r3  )r2   rÜ   rE   r  r�   r‚   r€   rN  r  r  rÔ   r~   r   r4  s      €r+   r  zLTTextLineVertical.add_  s‹   ø€ Ý�c�6Ñ"Ô"ð 	3 tÔ'7ð 	3ØÔ%­¨C¬I°s´zÑ(BÔ(BÑBˆFØŒv˜‰ ¤Ò)Ð)Ý—’ ¥f¨S¡k¤kÑ2Ô2Ð2Ø”6ˆŒÝ‰Œ�Š�CÑÔÐØˆr-   r$  r%  c                 óž   ‡ ‡— |‰ j         z  Š|                     ‰ j        ‰z
  ‰ j        ‰ j        ‰z   ‰ j        f¦  «        }ˆˆ fd„|D ¦   «         S )aG  
        Finds neighboring LTTextLineVerticals in the plane.

        Returns a list of other LTTextLineVerticals in the plane which are
        close to self. "Close" can be controlled by ratio. The returned objects
        will be the same width as self, and also either upper-, lower-, or
        centrally-aligned.
        c                 óö   •— g | ]u}t          |t          ¦  «        ¯‰                     |‰¬ ¦  «        ¯.‰                     |‰¬ ¦  «        s.‰                     |‰¬ ¦  «        s‰                     |‰¬ ¦  «        ¯s|‘ŒvS r8  )r2   rL  Ú_is_same_width_asÚ_is_lower_aligned_withÚ_is_upper_aligned_withr=  r>  s     €€r+   r?  z5LTTextLineVertical.find_neighbors.<locals>.<listcomp>u  s®   ø€ ð 
ð 
ð 
àå˜3Õ 2Ñ3Ô3ð	
ð
 ×*Ò*¨3¸!Ð*Ñ<Ô<ð
ð ×/Ò/°¸qÐ/ÑAÔAð
ð ×2Ò2°3À!Ð2ÑDÔDð
ð ×6Ò6°sÀaÐ6ÑHÔHð
Øð
ð 
ð 
r-   )r�   r@  r}   r~   r   r€   rA  s   `   @r+   r'  z!LTTextLineVertical.find_neighborsh  sl   øø€ ð �D”JÑˆØ�zŠz˜4œ7 Q™;¨¬°´¸1±¸d¼gÐFÑGÔGˆð
ð 
ð 
ð 
ð 
àð
ñ 
ô 
ð 	
r-   r   rB  r9  c                 óB   — t          |j        | j        z
  ¦  «        |k    S )zJ
        Whether the lower edge of `other` is within `tolerance`.
        )rŽ   r~   rD  s      r+   rS  z)LTTextLineVertical._is_lower_aligned_withƒ  rE  r-   c                 óB   — t          |j        | j        z
  ¦  «        |k    S )zJ
        Whether the upper edge of `other` is within `tolerance`.
        )rŽ   r€   rD  s      r+   rT  z)LTTextLineVertical._is_upper_aligned_with‰  rE  r-   c                 ón   — t          |j        |j        z   dz  | j        | j        z   dz  z
  ¦  «        |k    S )zO
        Whether the vertical center of `other` is within `tolerance`.
        rH  )rŽ   r~   r€   rD  s      r+   r=  z-LTTextLineVertical._is_centrally_aligned_with�  rI  r-   c                 óB   — t          |j        | j        z
  ¦  «        |k    S r(   )rŽ   r�   rD  s      r+   rR  z$LTTextLineVertical._is_same_width_as—  s   € Ý�5”; ¤Ñ+Ñ,Ô,°	Ò9Ð9r-   r7   )r8   r9   r:   rM   r,   rj   r  r   r   r   r  r'  rV   rS  rT  r=  rR  r*  r+  s   @r+   rL  rL  W  sh  ø€ € € € € ð Eð ¨dð ð ð ð ð�{ð  tð ð ð ð ð ð ð
Ø˜<Ô(ð
Ø16ð
à	ˆjÔ	ð
ð 
ð 
ð 
ð64ð 4¨Kð 4ÀEð 4ÐRVð 4ð 4ð 4ð 4ð4ð 4¨Kð 4ÀEð 4ÐRVð 4ð 4ð 4ð 4ð 67ðUð UØ ðUØ-2ðUà	ðUð Uð Uð Uð: {ð :¸uð :Èð :ð :ð :ð :ð :ð :ð :ð :r-   rL  c                   ó2   — e Zd ZdZdd„Zdefd„Zdefd„ZdS )r3   zìRepresents a group of text chunks in a rectangular area.

    Note that this box is created by geometric analysis and does not
    necessarily represents a logical boundary of the text. It contains a list
    of LTTextLine objects.
    r&   Nc                 óH   — t                                | ¦  «         d| _        d S )NrL   )r  r,   r%   rR   s    r+   r,   zLTTextBox.__init__£  s"   € Ý× Ò  Ñ&Ô&Ð&ØˆŒ
Øˆr-   c           	      ó†   — d| j         j        ›d| j        ›dt          | j        ¦  «        ›d|                      ¦   «         ›d�	S rÐ   )rd   r8   r%   r   rk   re   rR   s    r+   rS   zLTTextBox.__repr__¨  sG   € € àŒNÔ#Ð#Ð#ØŒJˆJˆJÝ�T”YÑÔÐÐØ�MŠM‰OŒOˆOˆOð	
ð 	
r-   c                 ó   — t           ‚r(   rg   rR   s    r+   Úget_writing_modezLTTextBox.get_writing_mode°  s   € Ý!Ð!r-   rT   )r8   r9   r:   rU   r,   rW   rS   r]  r<   r-   r+   r3   r3   ›  sh   € € € € € ðð ðð ð ð ð

˜#ð 
ð 
ð 
ð 
ð" #ð "ð "ð "ð "ð "ð "r-   r3   c                   ó4   ‡ — e Zd Zdeddfˆ fd„Zdefd„Zˆ xZS )ÚLTTextBoxHorizontalrY   r&   Nc                 ó‚   •— t          ¦   «                              |¦  «         | j                             d„ ¬¦  «         d S )Nc                 ó   — | j          S r(   )r€   ©r.   s    r+   ú<lambda>z-LTTextBoxHorizontal.analyze.<locals>.<lambda>·  ó
   € ¨¬¨€ r-   ©Úkey©r   r\   r  Úsort©r*   rY   rd   s     €r+   r\   zLTTextBoxHorizontal.analyzeµ  ó8   ø€ Ý‰Œ�Š˜Ñ!Ô!Ð!ØŒ
�ŠÐ/Ð/ˆÑ0Ô0Ð0Øˆr-   c                 ó   — dS )Nzlr-tbr<   rR   s    r+   r]  z$LTTextBoxHorizontal.get_writing_modeº  ó   € Øˆwr-   ©r8   r9   r:   r>   r\   rW   r]  r*  r+  s   @r+   r_  r_  ´  óf   ø€ € € € € ð ð ¨Tð ð ð ð ð ð ð
 #ð ð ð ð ð ð ð ð r-   r_  c                   ó4   ‡ — e Zd Zdeddfˆ fd„Zdefd„Zˆ xZS )ÚLTTextBoxVerticalrY   r&   Nc                 ó‚   •— t          ¦   «                              |¦  «         | j                             d„ ¬¦  «         d S )Nc                 ó   — | j          S r(   )r   rb  s    r+   rc  z+LTTextBoxVertical.analyze.<locals>.<lambda>Á  rd  r-   re  rg  ri  s     €r+   r\   zLTTextBoxVertical.analyze¿  rj  r-   c                 ó   — dS )Nztb-rlr<   rR   s    r+   r]  z"LTTextBoxVertical.get_writing_modeÄ  rl  r-   rm  r+  s   @r+   rp  rp  ¾  rn  r-   rp  r4   c                   ó4   ‡ — e Zd Zdee         ddfˆ fd„Zˆ xZS )r4   r  r&   Nc                 ór   •— t          ¦   «                              ¦   «          |                      |¦  «         d S r(   )r   r,   r  )r*   r  rd   s     €r+   r,   zLTTextGroup.__init__Ì  s0   ø€ Ý‰Œ×ÒÑÔÐØ�Š�DÑÔÐØˆr-   )r8   r9   r:   r   ÚTextGroupElementr,   r*  r+  s   @r+   r4   r4   Ë  sQ   ø€ € € € € ð˜XÐ&6Ô7ð ¸Dð ð ð ð ð ð ð ð ð ð r-   c                   ó(   ‡ — e Zd Zdeddfˆ fd„Zˆ xZS )ÚLTTextGroupLRTBrY   r&   Nc                 ó¨   •‡— t          ¦   «                              |¦  «         |j        €J ‚|j        Š| j                             ˆfd„¬¦  «         d S )Nc                 óJ   •— d‰z
  | j         z  d‰z   | j        | j        z   z  z
  S r1   )r}   r~   r€   ©r.   rF   s    €r+   rc  z)LTTextGroupLRTB.analyze.<locals>.<lambda>Ù  s+   ø€ ˜Q ™^¨s¬vÑ5Ø�:‰~ #¤&¨3¬6¡/Ñ2ñ3€ r-   re  ©r   r\   rF   r  rh  ©r*   rY   rF   rd   s     @€r+   r\   zLTTextGroupLRTB.analyzeÓ  si   øø€ Ý‰Œ�Š˜Ñ!Ô!Ð!ØÔ"Ð.Ð.Ð.ØÔ(ˆ
àŒ
�Šð3ð 3ð 3ð 3ð 	ñ 	
ô 	
ð 	
ð 	ˆr-   ©r8   r9   r:   r>   r\   r*  r+  s   @r+   rx  rx  Ò  óK   ø€ € € € € ð	 ð 	¨Tð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	r-   rx  c                   ó(   ‡ — e Zd Zdeddfˆ fd„Zˆ xZS )ÚLTTextGroupTBRLrY   r&   Nc                 ó¨   •‡— t          ¦   «                              |¦  «         |j        €J ‚|j        Š| j                             ˆfd„¬¦  «         d S )Nc                 óL   •— d‰z    | j         | j        z   z  d‰z
  | j        z  z
  S r1   )r}   r   r€   r{  s    €r+   rc  z)LTTextGroupTBRL.analyze.<locals>.<lambda>æ  s.   ø€ ˜a *™nÐ-°´¸#¼&±ÑAØ�:‰~ ¤Ñ'ñ(€ r-   re  r|  r}  s     @€r+   r\   zLTTextGroupTBRL.analyzeà  si   øø€ Ý‰Œ�Š˜Ñ!Ô!Ð!ØÔ"Ð.Ð.Ð.ØÔ(ˆ
àŒ
�Šð(ð (ð (ð (ð 	ñ 	
ô 	
ð 	
ð 	ˆr-   r~  r+  s   @r+   r�  r�  ß  r  r-   r�  c                   ó²   — e Zd Zdeddfd„Zdedee         dee	         fd„Z
dedee	         dee         fd	„Zded
ee         dee         fd„Zdeddfd„ZdS )ÚLTLayoutContainerrk   r&   Nc                 óJ   — t                                | |¦  «         d | _        d S r(   )r  r,   Úgroupsrn   s     r+   r,   zLTLayoutContainer.__init__í  s$   € Ý×Ò˜T 4Ñ(Ô(Ð(Ø37ˆŒØˆr-   rY   r  c              #   ó  K  — d }d }|D �]I}|��A|                      |¦  «        o†|                     |¦  «        oqt          |j        |j        ¦  «        |j        z  |                     |¦  «        k     o8|                     |¦  «        t          |j        |j        ¦  «        |j	        z  k     }|j
        o›|                      |¦  «        o†|                     |¦  «        oqt          |j        |j        ¦  «        |j        z  |                     |¦  «        k     o8|                     |¦  «        t          |j        |j        ¦  «        |j	        z  k     }|rt          |t          ¦  «        s|r+t          |t           ¦  «        r|                     |¦  «         n¾|�|V — d }nµ|rA|s?t!          |j        ¦  «        }|                     |¦  «         |                     |¦  «         nr|rA|s?t          |j        ¦  «        }|                     |¦  «         |                     |¦  «         n/t          |j        ¦  «        }|                     |¦  «         |V — d }|}�ŒK|€-t          |j        ¦  «        }|€J ‚|                     |¦  «         |V — d S r(   )rý   r•   r�   r‚   rB   rš   r�   r  r�   rC   rG   r‰   r’   r˜   r2   r-  rL  r  rE   )r*   rY   r  Úobj0ÚlineÚobj1ÚhalignÚvaligns           r+   Úgroup_objectszLTLayoutContainer.group_objectsó  s·  è è € ð ˆØˆØð C	ñ C	ˆDØÑð ×&Ò& tÑ,Ô,ð IØ×(Ò(¨Ñ.Ô.ðIå˜DœK¨¬Ñ5Ô5¸Ô8MÑMØ—m’m DÑ)Ô)ò*ðIð Ÿš tÑ,Ô,Ý˜$œ* d¤jÑ1Ô1°HÔ4HÑHòIð ð0 Ô,ð KØ×*Ò*¨4Ñ0Ô0ðKà×(Ò(¨Ñ.Ô.ðKõ ˜DœJ¨¬
Ñ3Ô3°hÔ6KÑKØ—m’m DÑ)Ô)ò*ðKð
 Ÿš tÑ,Ô,Ý˜$œ+ t¤{Ñ3Ô3°hÔ6JÑJòKð ð ð $�z¨$Õ0DÑEÔEð $Øð$Ý)¨$Õ0BÑCÔCð$ð —H’H˜T‘N”N�N�NØÐ%Ø�J�J�JØ�D�Dàð $ fð $Ý1°(Ô2FÑGÔG˜ØŸš ™œ˜ØŸš ™œ˜˜Øð $¨ð $Ý3°HÔ4HÑIÔI˜ØŸš ™œ˜ØŸš ™œ˜˜å3°HÔ4HÑIÔI˜ØŸš ™œ˜Ø"˜
˜
˜
Ø#˜ØˆD‰DØˆ<Ý'¨Ô(<Ñ=Ô=ˆDØÐ#Ð#Ð#Ø�HŠH�T‰NŒNˆNØˆ
ˆ
ˆ
Øˆr-   Úlinesc              #   ó’  K  — t          | j        ¦  «        }|                     |¦  «         i }|D ]Ä}|                     ||j        ¦  «        }|g}|D ]C}|                     |¦  «         ||v r(|                     |                     |¦  «        ¦  «         ŒDt          |t          ¦  «        rt          ¦   «         }	nt          ¦   «         }	t          |¦  «        D ]}
|	                     |
¦  «         |	||
<   ŒŒÅt          ¦   «         }|D ]A}||vrŒ||         }	|	|v rŒ|                     |	¦  «         |	                     ¦   «         s|	V — ŒBdS )z$Group neighboring lines to textboxesN)r   rk   r  r'  rD   r  Úpopr2   r-  r_  rp  r"   r  Úsetr…   )r*   rY   r�  r$  ÚboxesrŠ  Ú	neighborsÚmembersr‹  Úboxr.   Údones               r+   Úgroup_textlinesz!LTLayoutContainer.group_textlinesC  sm  è è € õ $)¨¬Ñ#3Ô#3ˆØ�Š�UÑÔÐØ-/ˆØð 	!ð 	!ˆDØ×+Ò+¨E°8Ô3GÑHÔHˆIØ�fˆGØ!ð 4ð 4�Ø—’˜tÑ$Ô$Ð$Ø˜5�=�=Ø—N’N 5§9¢9¨T¡?¤?Ñ3Ô3Ð3øÝ˜$Õ 4Ñ5Ô5ð *Ý!4Ñ!6Ô!6��å'Ñ)Ô)�Ý˜G‘}”}ð !ð !�Ø—’˜‘”�Ø ��c‘
�
ð!õ ‰uŒuˆØð 	ð 	ˆDØ˜5Ð Ð ØØ˜”+ˆCØ�dˆ{ˆ{ØØ�HŠH�S‰MŒMˆMØ—<’<‘>”>ð Ø�	�	�	øØˆr-   r“  c           
      ó\  ‡— t           t          t          f         }t          | j        ¦  «        Šdt
          dt
          dt          fd„}d|d|dt          |         fˆfd„}g }t          t          |¦  «        ¦  «        D ]t}||         }t          |dz   t          |¦  «        ¦  «        D ]I}	||	         }
| 
                    d |||
¦  «        t          |¦  «        t          |
¦  «        ||
f¦  «         ŒJŒut          j        |¦  «         ‰                     |¦  «         t          ¦   «         }t          |¦  «        dk    �rXt          j        |¦  «        \  }}}}}}||v�r$||v�r|s( |||¦  «        rt          j        |d	|||||f¦  «         Œct%          |t&          t(          f¦  «        st%          |t&          t(          f¦  «        rt)          ||g¦  «        }nt+          ||g¦  «        }‰                     |¦  «         ‰                     |¦  «         |                     ||g¦  «         ‰D ]A}t          j        |d |||¦  «        t          |¦  «        t          |¦  «        ||f¦  «         ŒB‰                     |¦  «         t          |¦  «        dk    �°Xt3          d
„ ‰D ¦   «         ¦  «        S )ax  Group textboxes hierarchically.

        Get pair-wise distances, via dist func defined below, and then merge
        from the closest textbox pair. Once obj1 and obj2 are merged /
        grouped, the resulting group is considered as a new object, and its
        distances to other objects & groups are added to the process queue.

        For performance reason, pair-wise distances and object pair info are
        maintained in a heap of (idx, dist, id(obj1), id(obj2), obj1, obj2)
        tuples. It ensures quick access to the smallest element. Note that
        since comparison operators, e.g., __lt__, are disabled for
        LTComponent, id(obj) has to appear before obj in element tuples.

        :param laparams: LAParams object.
        :param boxes: All textbox objects to be grouped.
        :return: a list that has only one element, the final top level group.
        r‹  Úobj2r&   c                 ó(  — t          | j        |j        ¦  «        }t          | j        |j        ¦  «        }t          | j        |j        ¦  «        }t          | j        |j        ¦  «        }||z
  ||z
  z  | j        | j        z  z
  |j        |j        z  z
  S )aÄ  A distance function between two TextBoxes.

            Consider the bounding rectangle for obj1 and obj2.
            Return its area less the areas of obj1 and obj2,
            shown as 'www' below. This value may be negative.
                    +------+..........+ (x1, y1)
                    | obj1 |wwwwwwwwww:
                    +------+www+------+
                    :wwwwwwwwww| obj2 |
            (x0, y0) +..........+------+
            )r�   r}   r~   r  r   r€   r�   r‚   )r‹  rš  r}   r~   r   r€   s         r+   Údistz/LTLayoutContainer.group_textboxes.<locals>.dist|  s‡   € õ �T”W˜dœgÑ&Ô&ˆBÝ�T”W˜dœgÑ&Ô&ˆBÝ�T”W˜dœgÑ&Ô&ˆBÝ�T”W˜dœgÑ&Ô&ˆBà�b‘˜R "™WÑ%Ø”*˜tœ{Ñ*ñ+à”*˜tœ{Ñ*ñ+ðr-   c                 óN  •— t          | j        |j        ¦  «        }t          | j        |j        ¦  «        }t          | j        |j        ¦  «        }t          | j        |j        ¦  «        }t          ‰                     ||||f¦  «        ¦  «        }|                     | |f¦  «        S )z8Check if there's any other object between obj1 and obj2.)	r�   r}   r~   r  r   r€   r’  r@  Ú
difference)r‹  rš  r}   r~   r   r€   r  r$  s          €r+   Úisanyz0LTLayoutContainer.group_textboxes.<locals>.isany’  s‡   ø€ å�T”W˜dœgÑ&Ô&ˆBÝ�T”W˜dœgÑ&Ô&ˆBÝ�T”W˜dœgÑ&Ô&ˆBÝ�T”W˜dœgÑ&Ô&ˆBÝ�u—z’z 2 r¨2¨rÐ"2Ñ3Ô3Ñ4Ô4ˆDØ—?’? D¨$ <Ñ0Ô0Ð0r-   r   Fr   Tc              3   ó@   K  — | ]}t          t          |¦  «        V — Œd S r(   )r   r4   )r«   Úgs     r+   r­   z4LTLayoutContainer.group_textboxes.<locals>.<genexpr>½  s,   è è € Ð8Ð8¨Q•D� aÑ(Ô(Ð8Ð8Ð8Ð8Ð8Ð8r-   )r   r3   r4   r   rk   rj   rM   r
   Úranger  r  ÚidÚheapqÚheapifyr  r’  ÚheappopÚheappushr2   rp  r�  rx  ÚremoveÚupdater  rÎ   )r*   rY   r“  ÚElementTrœ  rŸ  ÚdistsÚiÚbox1ÚjÚbox2r—  Ú
skip_isanyrö   Úid1Úid2r‹  rš  ÚgrouprB  r$  s                       @r+   Úgroup_textboxesz!LTLayoutContainer.group_textboxesd  s÷  ø€ õ* �¥KÐ/Ô0ˆÝ!& t¤yÑ!1Ô!1ˆð	•{ð 	­+ð 	½%ð 	ð 	ð 	ð 	ð,	1˜ð 	1¨ð 	1µS¸´]ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð IKˆÝ•s˜5‘z”zÑ"Ô"ð 	Xð 	XˆAØ˜”8ˆDÝ˜1˜q™5¥# e¡*¤*Ñ-Ô-ð Xð X�Ø˜Q”x�Ø—’˜e T T¨$°Ñ%5Ô%5µr¸$±x´xÅÀDÁÄÈ4ÐQUÐVÑWÔWÐWÐWðXõ 	Œ�eÑÔÐà�Š�UÑÔÐÝ‰uŒuˆÝ�%‰jŒj˜1Šn‰nÝ49´MÀ%Ñ4HÔ4HÑ1ˆZ˜˜C  d¨Dà˜4�‘ c° o¡oØ!ð  e e¨D°$Ñ&7Ô&7ð Ý”N 5¨4°°C¸¸dÀDÐ*IÑJÔJÐJØÝ˜dÕ%6½Ð$HÑIÔIð :ÍZØÕ,­oÐ>ñNô Nð :õ *9¸$À¸Ñ)FÔ)F�E�Eå+¨T°4¨LÑ9Ô9�EØ—’˜TÑ"Ô"Ð"Ø—’˜TÑ"Ô"Ð"Ø—’˜S #˜JÑ'Ô'Ð'à"ð ð �EÝ”NØØ   U¨EÑ 2Ô 2µB°u±I´I½rÀ%¹y¼yÈ%ÐQVÐWñô ð ð ð —	’	˜%Ñ Ô Ð õ- �%‰jŒj˜1Šn‰nõ0 Ð8Ð8°%Ð8Ñ8Ô8Ñ8Ô8Ð8r-   c                 ó�  — t          d„ | ¦  «        \  }}|D ]}|                     |¦  «         Œ|sd S t          |                      ||¦  «        ¦  «        }t          d„ |¦  «        \  }}|D ]}|                     |¦  «         Œt          |                      ||¦  «        ¦  «        }|j        €[|D ]}|                     |¦  «         Œdt          dt          t          t          t          f         fd„}	| 
                    |	¬¦  «         nt|                      ||¦  «        | _        t          ¦   «         }
| j        D ],}|                     |¦  «         |
                     |¦  «         Œ-| 
                    d„ ¬¦  «         t          t           t"                   |¦  «        |z   t          t           t"                   |¦  «        z   | _        d S )Nc                 ó,   — t          | t          ¦  «        S r(   )r2   rÜ   rb  s    r+   rc  z+LTLayoutContainer.analyze.<locals>.<lambda>Â  s   € µ:¸cÅ6Ñ3JÔ3J€ r-   c                 ó*   — |                       ¦   «         S r(   )r…   rb  s    r+   rc  z+LTLayoutContainer.analyze.<locals>.<lambda>È  s   € °#·,²,±.´.€ r-   r–  r&   c                 ón   — t          | t          ¦  «        rd| j         | j         fS d| j         | j        fS )Nr   r   )r2   rp  r   r~   r}   ©r–  s    r+   Úgetkeyz)LTLayoutContainer.analyze.<locals>.getkeyÐ  s=   € Ý˜cÕ#4Ñ5Ô5ð 0Ø ¤˜w¨¬¨Ð0Ð0à ¤˜w¨¬Ð/Ð/r-   re  c                 ó   — | j         S r(   r)   r¹  s    r+   rc  z+LTLayoutContainer.analyze.<locals>.<lambda>Ý  s   € ¨3¬9€ r-   )r   r\   rÎ   rŽ  r˜  rF   r3   r   r;   rM   rh  r´  r‡  r$   r5   r   r   rj   r  )r*   rY   ÚtextobjsÚ	otherobjsr.   Ú	textlinesÚemptiesÚ	textboxesÚtextboxrº  Úassignerr³  s               r+   r\   zLTLayoutContainer.analyze¿  sæ  € õ !'Ð'JÐ'JÈDÑ QÔ QÑˆ�9Øð 	"ð 	"ˆCØ�KŠK˜Ñ!Ô!Ð!Ð!Øð 	ØˆFÝ˜×+Ò+¨H°hÑ?Ô?Ñ@Ô@ˆ	Ý%Ð&@Ð&@À)ÑLÔLÑˆ�)Øð 	"ð 	"ˆCØ�KŠK˜Ñ!Ô!Ð!Ð!Ý˜×-Ò-¨h¸	ÑBÔBÑCÔCˆ	ØÔÐ&Ø$ð *ð *�Ø—’ Ñ)Ô)Ð)Ð)ð0�Ið 0­%µµU½EÐ0AÔ*Bð 0ð 0ð 0ð 0ð �NŠN˜vˆNÑ&Ô&Ð&Ð&à×.Ò.¨x¸ÑCÔCˆDŒKÝ$‘”ˆHØœð $ð $�Ø—’˜hÑ'Ô'Ð'Ø—’˜UÑ#Ô#Ð#Ð#Ø�NŠNÐ4Ð4ˆNÑ5Ô5Ð5å••kÔ" IÑ.Ô.Øñå•4�Ô$ gÑ.Ô.ñ/ð 	Œ
ð
 	ˆr-   )r8   r9   r:   r   r,   r>   r   rj   r   r  rŽ  r3   r˜  r	   r   r4   r´  r\   r<   r-   r+   r…  r…  ì  s  € € € € € ð˜Tð  dð ð ð ð ðNØ ðNØ(0°Ô(=ðNà	�*Ô	ðNð Nð Nð Nð`Ø ðØ)1°*Ô)=ðà	�)Ô	ðð ð ð ðBY9Ø ðY9Ø)1°)Ô)<ðY9à	ˆkÔ	ðY9ð Y9ð Y9ð Y9ðv$ ð $¨Tð $ð $ð $ð $ð $ð $r-   r…  c                   óF   — e Zd ZdZdedededdfd„Zdefd„Zd	e	ddfd
„Z
dS )ÚLTFigurezÛRepresents an area used by PDF Form objects.

    PDF Forms can be used to present figures or pictures by embedding yet
    another PDF document within a page. Note that LTFigure objects can appear
    recursively.
    r¼   rk   rÝ   r&   Nc                 óÒ   ‡— || _         ‰| _        |\  }}}}||f||z   |f|||z   f||z   ||z   ff}t          ˆfd„|D ¦   «         ¦  «        }t                               | |¦  «         d S )Nc              3   óB   •K  — | ]\  }}t          ‰||f¦  «        V — Œd S r(   r   )r«   r¬   ÚqrÝ   s      €r+   r­   z$LTFigure.__init__.<locals>.<genexpr>ó  s5   øè è € ÐNÐN¹V¸aÀ�¨°!°Q°Ñ8Ô8ÐNÐNÐNÐNÐNÐNr-   )r¼   rÝ   r    r…  r,   )	r*   r¼   rk   rÝ   r6   ÚyÚwÚhÚboundss	      `     r+   r,   zLTFigure.__init__î  s‰   ø€ ØˆŒ	ØˆŒØ‰ˆˆAˆq�!Ø�a�&˜1˜q™5 !˜* q¨!¨a©% j°1°q±5¸!¸a¹%°.ÐAˆÝÐNÐNÐNÐNÀvÐNÑNÔNÑNÔNˆÝ×"Ò" 4¨Ñ.Ô.Ð.Øˆr-   c           
      ó†   — d| j         j        ›d| j        ›dt          | j        ¦  «        ›dt          | j        ¦  «        ›d�	S )Nra   rÑ   rÒ   rú   rc   )rd   r8   r¼   r   rk   r!   rÝ   rR   s    r+   rS   zLTFigure.__repr__÷  sK   € € àŒNÔ#Ð#Ð#ØŒIˆIˆIÝ�T”YÑÔÐÐÝ�t”{Ñ#Ô#Ð#Ð#ð	
ð 	
r-   rY   c                 óN   — |j         sd S t                               | |¦  «         d S r(   )rH   r…  r\   r[   s     r+   r\   zLTFigure.analyzeÿ  s-   € ØÔ!ð 	ØˆFÝ×!Ò! $¨Ñ1Ô1Ð1Øˆr-   )r8   r9   r:   rU   rW   r   r   r,   rS   r>   r\   r<   r-   r+   rÄ  rÄ  æ  s‹   € € € € € ðð ð˜Sð ¨ð °fð Àð ð ð ð ð
˜#ð 
ð 
ð 
ð 
ð ð ¨Tð ð ð ð ð ð r-   rÄ  c            	       ó8   — e Zd ZdZd
dedededdfd„Zdefd	„Z	dS )ÚLTPagez»Represents an entire page.

    Like any other LTLayoutContainer, an LTPage can be iterated to obtain child
    objects like LTTextBox, LTFigure, LTImage, LTRect, LTCurve and LTLine.
    r   Úpageidrk   Úrotater&   Nc                 óX   — t                                | |¦  «         || _        || _        d S r(   )r…  r,   rÐ  rÑ  )r*   rÐ  rk   rÑ  s       r+   r,   zLTPage.__init__  s+   € Ý×"Ò" 4¨Ñ.Ô.Ð.ØˆŒØˆŒØˆr-   c           	      ól   — d| j         j        ›d| j        ›dt          | j        ¦  «        ›d| j        ›d�	S )Nra   rÑ   rÒ   z rotate=rc   )rd   r8   rÐ  r   rk   rÑ  rR   s    r+   rS   zLTPage.__repr__  sA   € € àŒNÔ#Ð#Ð#ØŒKˆKˆKÝ�T”YÑÔÐÐØŒKˆKˆKð	
ð 	
r-   r7   )
r8   r9   r:   rU   r;   r   rM   r,   rW   rS   r<   r-   r+   rÏ  rÏ    sn   € € € € € ðð ðð ˜sð ¨$ð ¸ð Àdð ð ð ð ð
˜#ð 
ð 
ð 
ð 
ð 
ð 
r-   rÏ  )Fr¤  ÚloggingÚtypingr   r   r   r   r   r   r	   r
   r   r   r   r   Úpdfcolorr   Úpdffontr   Ú	pdfinterpr   r   Úpdftypesr   Úutilsr   r   r   r   r   r   r   r   r   r   r    r!   r"   Ú	getLoggerr8   Úloggerr$   r>   r/   r^   rj   r�   r²   r¸   r»   rÔ   rÜ   rþ   r  r  r  ÚTextLineElementr  r-  rL  r3   r_  rp  rv  r4   rx  r�  r…  rÄ  rÏ  r<   r-   r+   ú<module>rÞ     s×  ðØ €€€Ø €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð $Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à	ˆÔ	˜8Ñ	$Ô	$€ð
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ðA
ð A
ð A
ð A
ð A
ñ A
ô A
ð A
ðHð ð ð ð ñ ô ð ð"ð "ð "ð "ð "ñ "ô "ð "ðFð Fð Fð Fð F�&ñ Fô Fð FðR";ð ";ð ";ð ";ð ";ˆkñ ";ô ";ð ";ðJ
ð 
ð 
ð 
ð 
ˆWñ 
ô 
ð 
ðB
ð 
ð 
ð 
ð 
ˆWñ 
ô 
ð 
ðB
ð 
ð 
ð 
ð 
ˆkñ 
ô 
ð 
ð4ð ð ð ð ˆV�Vñ ô ð ð Fð Fð Fð Fð Fˆ[˜&ñ Fô Fð FðR ˆ'�) 6Ð
*Ñ
*Ô
*€ðð ð ð ð �+˜w wÔ/ñ ô ð ð:ð ð ð ð ˜K¨Ô0ñ ô ð ð(	
ð 	
ð 	
ð 	
ð 	
Ð+¨GÔ4°fñ 	
ô 	
ð 	
ð ˜ ˜Ô'€ð?ð ?ð ?ð ?ð ?� Ô1ñ ?ô ?ð ?ðDA<ð A<ð A<ð A<ð A<˜:ñ A<ô A<ð A<ðHA:ð A:ð A:ð A:ð A:˜ñ A:ô A:ð A:ðH"ð "ð "ð "ð "� 
Ô+ñ "ô "ð "ð2ð ð ð ð ˜)ñ ô ð ðð ð ð ð ˜	ñ ô ð ð ˜ MÐ1Ô2Ð ðð ð ð ð �/Ð"2Ô3ñ ô ð ð
ð 
ð 
ð 
ð 
�kñ 
ô 
ð 
ð
ð 
ð 
ð 
ð 
�kñ 
ô 
ð 
ðwð wð wð wð w˜ KÔ0ñ wô wð wðtð ð ð ð Ð ñ ô ð ð@
ð 
ð 
ð 
ð 
Ðñ 
ô 
ð 
ð 
ð 
r-   