Ë
    ^ãj$-  ã                   ó8  — d Z d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 ddlZddlmZmZmZmZmZmZ ddlmZ ddlmZ d	„ Zd
„ Zd„ Zd„ ZdZ ee«      dz
  Zdd„Z d d„Z!d!d„Z"d„ Z#d„ Z$d"d„Z%d"d„Z& G d„ d«      Z'd„ Z(d„ Z)d#d„Z* G d„ d«      Z+ G d„ de,«      Z-y)$z3.3.0zUtilities used here and there.é    )ÚmktimeÚgmtimeÚstrftime)Úlog10ÚpiÚfloorÚsinÚcosÚhypotN)ÚtransformPointsÚinverseÚEllipseÚGroupÚStringÚnumericXShift)Úflatten)ÚstringWidthc                 óŒ   — dgdz  }t        t        t        | j                  d«      «      «      \  }}}|||g|dd t	        |«      S )zNConvert a 'dd/mm/yyyy' formatted string to a tuple for use in the time module.r   é	   ú/Né   )ÚlistÚmapÚintÚsplitÚtuple)Ú
timeStringÚLÚddÚmmÚyyyys        úa/var/www/html/metafoliadorv2/venv/lib/python3.12/site-packages/reportlab/graphics/charts/utils.pyÚmkTimeTupler#      sK   € ð 
ˆˆa‰€AÜœœC ×!1Ñ!1°#Ó!6Ó7Ó8�L€BˆˆDØ�2�rˆN€A€b€q€Eä�‹8€Oó    c                 ó*   — t        t        | «      «      S )z?Convert a number of seconds since the epoch into a date string.)r   r#   )r   s    r"   Ústr2secondsr&      s   € ô ”+˜jÓ)Ó*Ð*r$   c                 ó,   — t        dt        | «      «      S )zAConvert a date string into the number of seconds since the epoch.z%Y-%m-%d)r   r   )Úsecondss    r"   Úseconds2strr)      s   € ô �J¤ w£Ó0Ð0r$   c                 óö   — | dv r| S | dk  rdt        |  «      z  S t        t        | «      «      }|dk(  r| dk  rd}nd}n|dk  r	d|dz
  z  }nd|z  }|| k\  r|dz  S |dz  | k\  r|d	z  S |d
z  | k\  r|dz  S |dz  S )a[  Return the first 'nice round number' greater than or equal to x

    Used in selecting apropriate tick mark intervals; we say we want
    an interval which places ticks at least 10 points apart, work out
    what that is in chart space, and ask for the nextRoundNumber().
    Tries the series 1,2,5,10,20,50,100.., going up or down as needed.
    )r   é   r   g      ð¿r+   çš™™™™™¹?g      ð?ç      $@é   g       @é   g      @)ÚnextRoundNumberr   r   )ÚxÚlgÚbases      r"   r0   r0   #   s³   € ð 	ˆF�{Øˆàˆ1‚uØ”o q bÓ)Ñ)Ð)ä”�q“‹]ˆà�Š7Ø�1ŠuØ‘à‘Ø�!ŠVØ˜B ™FÑ#‰Dà˜2‘:ˆDð �1Š9Ø˜#‘:ÐØ�Q‰h˜1Š_Ø˜#‘:ÐØ�Q‰h˜1Š_Ø˜#‘:Ðà˜$‘;Ðr$   )r,   gš™™™™™É?g      Ð?ç      à?r+   c                 óX  — | |k\  r%| |k(  r| dk(  rd} d}nd| z  } d|z  }nt        d«      ‚|| z
  t        |«      z  }|dkD  xr |dk  xs |dkD  xr dt        t        |«      «      z  xs d}|}	 ||z  }|t        d	   k  rn|dz  }Œd}|t        |   kD  r|dz   }|t        |   kD  rŒ	 t        |   |z  }| |z  }t        |«      |dk  z
  }	||	z  }||	|z   z  }||z  }|dkD  r
||k\  rd
}|}n|dk  r| }| |kD  r|}d}||k  r|| k  rn|dz   }|t        kD  rd}|dz  }Œu|||| |z
  |z   |z
  fS )z>determine tick parameters for range [lo, hi] using I intervalsr   gš™™™™™¹¿r,   gÍÌÌÌÌÌì?gš™™™™™ñ?zlo>hir+   é
   éÿÿÿÿg        )Ú
ValueErrorÚfloatr   r   Ú
_intervalsr   Ú_j_max)
ÚloÚhiÚIr1   ÚbÚaÚjÚssÚnÚls
             r"   Úfind_intervalrE   K   s£  € ð 
ˆR‚xØˆrŠ6Ø�1ŠuØ�Ø‘à˜‘V�Ø˜‘V‘ä˜WÓ%Ð%Ø	ˆB�w”�a“Ñ€AØ	ˆ!‰Ò��1‘’˜˜"™Ò6 2¤u¬U°1«X£Ñ#6Ò;¸!€AØ	€AØ
Øˆa‰CˆØŒj˜‰nÒ˜eØˆb‰Dˆð ð
 	
€AØ
ŒJ�q‰MŠ/˜q 1™u˜1ˆ!ŒJ�q‰M‹/à
Ü˜‰]˜1‰_ˆØˆr‰EˆÜ�‹F�A�a‘C‰LˆØˆq‰DˆØ��!‘‰HˆØˆb‰DˆØˆQŠ3Ø�"ŠuØ�Ø‘Ø�ŠTØ�ˆAØ�!ŠtØ�Ø�ØˆqŠ5�Q˜’U˜EØ�‰EˆØŒVŠ8ØˆAØ�"‘ˆAð) ð* ˆa��R˜!‘V˜a‘Z "‘_Ð$Ð$r$   c                 óB  — |r1t        | |«      d   |z  }t        ||«      \  }}|dkD  r|dz   }||z  }n3	 |d    d}|D ]&  }t	        | ||«      }|d   |k  sŒ|d d \  }}}|d   }Œ( |fS # t        $ r) t        t        d|dz
  «      t        |dz   d«      «      }Y Œcw xY w)Nr   ç:Œ0âŽyE>r+   r.   r   g Èë…óÌá)ÚdivmodÚ	TypeErrorÚrangeÚmaxrE   )	ÚlowerÚupperrC   ÚgridÚtr=   ÚzÚwÚis	            r"   Úfind_good_gridrS   z   s×   € ÙÜ�5˜Ó˜qÑ! DÑ(ˆÜ�u˜TÓ"‰ˆˆAØˆTŠ6˜˜1™�2Ø�‰W‰ð	-ØˆaŠDð ˆØò 	ˆAÜ˜E %¨Ó*ˆAØ�‰t�A‹vØ  ˜e‘��2�tØ�A‘$‘ð		ð
 ˆb�$ˆ;Ðøô ò 	-Ü”c˜!˜A˜a™C“j¤ Q q¡S¨£Ó,ŠAð	-ús   µA, Á,/BÂBc                 óº  — t        | |||«      \  }}}t        t        |«      «      }	|	dk(  rd}	|d|	z  z  }
t        |
«      |
k7  }
|	dkD  s|	dk  rdt	        |
dz   «      z   dz   }nV|	dk\  r t        |	«      |
z   }d	t	        |«      z   d
z   }n1|
t        |	«      z
  }d	t	        |dz   «      z   dz   t	        |«      z   dz   }|r|dz   }g }t        t        ||z
  «      |z  dz   «      dz   }|rFg }t        |«      D ]2  }|||z  z   }|j                  |«       |j                  |||z   z  «       Œ4 ||fS t        |«      D ]#  }|||z  z   }|j                  ||||z   z  f«       Œ% |S )z¾
    return tick positions and labels for range lower<=x<=upper
    n=number of intervals to try (can be a list or sequence)
    split=1 return ticks then labels else (tick,label) pairs
    r   r+   r-   r   éýÿÿÿz%+é   z.0eú%z.0fr.   ú.Úfz%%r,   )rS   r   r   r   Úreprr9   rJ   Úappend)rL   rM   rC   r   ÚpercentrN   ÚlabelVOffsetrO   r=   ÚpowerrQ   ÚformatÚdigitsÚTÚlabelsrR   Úvs                    r"   Úticksrd   Ž   s�  € ô ! ¨¨q°$Ó7�K€A€rˆ4Ü”%˜“+Ó€EØˆa‚x˜�ØˆS�%‰Z‰€AÜˆA‹�‰	€Aàˆq‚y�E˜B’JØ”d˜1˜Q™3“i‘ Ñ%‰à�AŠ:Ü˜“Z ‘\ˆFØœ4 ›<Ñ'¨Ñ-‰Fà”s˜5“z‘\ˆFØœ˜f Q™h›Ñ'¨Ñ+¬D°«LÑ8¸Ñ<ˆFá�v˜d‘{�Ø
€AÜŒE�"�Q‘$‹K˜Ñ˜SÑ Ó! !Ñ#€AÙØˆÜ�q“ò 	5ˆAØ�$�q‘&‘ˆAØ�H‰H�QŒKØ�M‰M˜& A l¡NÑ3Õ4ð	5ð �&ˆyÐä�q“ò 	5ˆAØ�$�q‘&‘ˆAØ�H‰H�a˜ 1 \¡>Ñ2Ð3Õ4ð	5ð ˆr$   c                 óT  — t        | «      }d | v r�d}||k  r| |   €|dz  }||k  r| |   €Œ||k(  r| S |dz
  }| |   €|dz  }| |   €Œ|dz  }|s|r| || } t        t        | «      «      D �cg c]
  }| |   �Œ	|‘Œ }}|D ]  }d| |dz
     | |dz      z   z  | |<   Œ ||| fS d|| fS c c}w )Nr   r+   r4   )ÚlenrJ   )ÚdataÚmr?   rD   rR   r>   s         r"   Ú	findNonesri   ´   sû   € ÜˆD‹	€AØˆt�|ØˆØ�Šc�d˜1‘g�oØ�‰FˆAð �Šc�d˜1‘g‘oàˆaŠ4˜�Øˆa‰CˆØ�1‰gˆoØ�‰FˆAð �1‰g‰oà	ˆ1‰ˆÙ‘˜$˜q ˜)�4Üœc $›iÓ(Ö<�1¨D°©G©OŠQÐ<ˆÐ<Øò 	0ˆAØ˜4  !¡™9 T¨!¨A©#¡YÑ.Ñ/ˆD�ŠGð	0à�!�TˆzÐØˆQˆtˆ8€Oùò	 =s   Á,
B%Á7B%c                 óê   — | D �cg c]  }|d   ‘Œ	 }}t        |«      \  }}}t        |«      }|s
||k  s||k7  r/|s||k  r| || } t        | |«      D ��cg c]  \  }}|d   |f‘Œ } }}| S c c}w c c}}w ©Nr+   r   )ri   rf   Úzip)Úpairsr1   ÚYr?   rD   ÚnYrh   Úys           r"   ÚpairFixNonesrq   Æ   s‡   € ØÖ�!ˆˆ1‹Ð€AÐÜ�q‹\�F€A€aˆÜˆA‹€AÙˆAˆaŠC�2�q’5Ù��!’˜U 1 Q˜Z�UÜ%(¨¨r£]×3™c˜a �!�A‘$�q’Ð3ˆÑ3Ø€Lùò 	ùó
 4s   …A*ÁA/c           
      ó®   — |dz
  | d   gz  | z   } t        |t        | «      dz   «      D �cg c]  }t        t        | ||z
  | «      «      |z  ‘Œ! } }| S c c}w rk   )rJ   rf   r9   Úsum)rg   rC   rR   s      r"   Úmaveragert   Ï   s`   € Øˆa‰C�$�q‘'�‰?˜4Ñ€DÜ/4°Q´s¸4³yÀ±{Ó/CÖD¨!ŒE”#�d˜1˜Q™3˜q�kÓ"Ó# AÓ%ÐD€DÐDØ€Kùò Es   ª$Ac           
      ó–   — t        | t        | D �cg c]  }|d   ‘Œ	 c}|«      «      D ��cg c]  \  }}|d   |f‘Œ c}}S c c}w c c}}w rk   )rl   rt   )rg   rC   r1   Úss       r"   ÚpairMaveragerw   Ô   sB   € Ü # D¬(À$Ö3G¸Q°A°a³DÒ3GÈÓ*JÓ K×L™˜˜1ˆQˆq‰T�!ŠHÓLÐLùÒ3GùÓLs
   �A «Ac                   ój   — e Zd ZdZdgfd„Zd„ Zd„ Zd„ Zed„ «       Z	ed„ «       Z
ed	„ «       Zd
„ Zd„ Zy)ÚDrawTimeCollectorzi
    generic mechanism for collecting information about nodes at the time they are about to be drawn
    Úgifc                 ó€   — t        j                  «       | _        | j                  «        d | _        || _        d| _        y )NF)ÚweakrefÚWeakKeyDictionaryÚ_nodesÚclearÚ_pmcanvÚformatsÚdisabled)Úselfr�   s     r"   Ú__init__zDrawTimeCollector.__init__Û   s0   € Ü×/Ñ/Ó1ˆŒØ�
‰
ŒØˆŒØˆŒØˆ�r$   c                 óH   — g | _         | j                   j                  | _        y ©N)Ú_infor[   Ú_info_append©rƒ   s    r"   r   zDrawTimeCollector.clearâ   s   € ØˆŒ
Ø ŸJ™J×-Ñ-ˆÕr$   c                 óF   — |||f| j                   |<   | |j                  d<   y )NÚ_drawTimeCallback)r~   Ú__dict__)rƒ   ÚfuncÚnodeÚargsÚkwdss        r"   ÚrecordzDrawTimeCollector.recordæ   s&   € Ø! $ tÐ,ˆ�‰�DÑØ-1ˆ�‰Ð)Ò*r$   c                 ó’   — | j                   j                  |d «      }|r)|\  }}} ||||g|¢­i |¤Ž}|�| j                  |«       y y y r†   )r~   Úgetrˆ   )rƒ   rŽ   ÚcanvasÚrendererr�   r�   r�   rR   s           r"   Ú__call__zDrawTimeCollector.__call__ê   sV   € Ø�{‰{�‰˜t DÓ)ˆÙØ#ÑˆD�$˜Ù�T˜& Ð9¨DÒ9°DÑ9ˆAØˆ}˜d×/Ñ/°Õ2ˆ}ð r$   c                 óð   — t        |dd «      }|sy | j                  }| j                  }|| j                  z   }|| j                  z   }|j                  «       }	t        j                  |||f||ff«      |	d<   |	S )NÚctmÚrect)Úgetattrr1   rp   ÚwidthÚheightÚcopyry   ÚtransformAndFlatten)
rŽ   r”   r•   r�   ÚAÚx1Úy1Úx2Úy2ÚDs
             r"   ÚrectDrawTimeCallbackz&DrawTimeCollector.rectDrawTimeCallbackñ   su   € ä�F˜5 Ó&ˆÙ�&Ø�V‰VˆØ�V‰VˆØ�$—*‘*‰_ˆØ�$—+‘+Ñˆà�I‰I‹KˆÜ#×7Ñ7¸¸B¸r¸7ÀBÀrÀ7Ð:KÓLˆˆ&‰	Øˆr$   c                 ót   — t        | «      dk7  rt        | «      }t        ||«      }t        t        |«      «      S )z transform an flatten a list of points
        A   transformation matrix
        p   points [(x0,y0),....(xk,yk).....]
        )r+   r   r   r+   r   r   )r   r   r   r   )rŸ   ÚpÚiAs      r"   rž   z%DrawTimeCollector.transformAndFlattenþ   s4   € ô �‹8�]Ò"Ü˜“ˆBÜ  1Ó%ˆAÜ”W˜Q“ZÓ Ð r$   c                 óh   — | j                   sdd l}|j                  dd«      | _         | j                   S )Nr   r+   )r€   ÚrenderPMÚPMCanvas)rƒ   rª   s     r"   ÚpmcanvzDrawTimeCollector.pmcanv	  s*   € à�|Š|ÛØ#×,Ñ,¨Q¨qÓ1ˆDŒLØ�|‰|Ðr$   c                 ó  — t        |dd «      }|sy t        |t        «      rl| j                  }|j	                  |j
                  |j                  |j                  |j                  «       |j                  }|D �cg c]  }|d   |d   f‘Œ }}nH|j                  «       j                  }t        dt        |«      d«      D �	cg c]  }	||	   ||	dz      f‘Œ }}	|j                  «       }
| j                  ||«      |
d<   |
S c c}w c c}	w )Nr˜   r+   r.   r   Úpoly)rš   Ú
isinstancer   r¬   ÚellipseÚcxÚcyÚrxÚryÚvpathÚ	asPolygonÚpointsrJ   rf   r�   rž   )rƒ   rŽ   r”   r•   r�   rŸ   Úcr§   r1   rR   r¤   s              r"   ÚwedgeDrawTimeCallbackz'DrawTimeCollector.wedgeDrawTimeCallback  sä   € Ü�F˜5 Ó&ˆÙ�&Ü�dœ7Ô#Ø—‘ˆAØ�I‰I�d—g‘g˜tŸw™w¨¯©°·±Ô8Ø—‘ˆAØ&'Ö( �!�A‘$�q˜‘t’Ð(ˆAÑ(à—‘Ó ×'Ñ'ˆAÜ(-¨a´°A³°qÓ(9Ö: 1�!�A‘$�q˜˜1™‘v’Ð:ˆAÐ:à�I‰I‹KˆØ×,Ñ,¨Q¨qÓ1ˆˆ&‰	Øˆùò )ùò ;s   Á9C<Â?Dc                 ó®   — ddl }t        |dz   d«      }	 |j                  | j                  |«       |j                  «        y# |j                  «        w xY w)zÏ
        save the current information known to this collector
        fnroot is the root name of a resource to name the saved info
        override this to get the right semantics for your collector
        r   Nz.default-collector.outrQ   )ÚpprintÚopenr‡   Úclose)rƒ   Úfnrootr»   rY   s       r"   ÚsavezDrawTimeCollector.save   sC   € ó 	Ü
ˆvÐ.Ñ.¨sÓ
3ˆð	Ø�M‰M˜$Ÿ*™* QÔ'à�G‰G�IøˆA�G‰G�Iús   •A ÁAN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r„   r   r‘   r–   Ústaticmethodr¥   rž   Úpropertyr¬   r¹   r¿   © r$   r"   ry   ry   ×   sh   „ ñð  %˜gó ò.ò2ò3ð ñ
ó ð
ð ñ!ó ð!ð ñó ðòó r$   ry   c                 ó:   — | \  }}|\  }}t        ||z
  ||z
  «      S )z"return distance between two points)r   )Úxxx_todo_changemeÚxxx_todo_changeme1Úx0Úy0r    r¡   s         r"   ÚxyDistrÌ   -  s)   € à�G€RˆØ �G€RˆÜ�"�R‘%˜"˜R™%Ó!Ð!r$   c                 óî  — | \  }}|\  }}|\  }}	|\  }
}||f}||z
  ||z
  f}||	f}|
|z
  ||	z
  f}t        |d   |d   z  |d   |d   z  z
  «      }|d   |d   z
  |d   |d   z
  f}|d   |d   z  |d   |d   z  z
  }|d   |d   z  |d   |d   z  z
  }t        |«      dk  rt        |«      dk  ryy ||z  }||z  }d|cxk  rdk  r.n y d|cxk  rdk  rn y |d   ||d   z  z   |d   ||d   z  z   fS y y )Nr   r+   rG   Ú	collinear)r9   Úabs)Úxxx_todo_changeme2Úxxx_todo_changeme3Úxxx_todo_changeme4Úxxx_todo_changeme5Úx00Úy00Úx01Úy01Úx10Úy10Úx11Úy11r§   ÚrÚqrv   ÚrsÚqpÚqprÚqpsrO   Úus                         r"   ÚlineSegmentIntersectrã   3  s]  € à"�I€SˆØ"�I€SˆØ"�I€SˆØ"�I€SˆØˆCˆ€AØˆC‰��C‘ˆ€Að 	ˆCˆ€AØˆC‰��C‘ˆ€Aä	ˆq�‰t�A�a‘D‰y˜˜1™˜a ™d™Ñ"Ó	#€BØ	
ˆ1‰ˆa�‰d‰�1�Q‘4˜˜!™‘9Ð	€Bà
ˆQ‰%��!‘‰*�R˜‘U˜1˜Q™4‘ZÑ
€CØ
ˆQ‰%��!‘‰*�R˜‘U˜1˜Q™4‘ZÑ
€Cä
ˆ2ƒwˆt‚|Üˆs‹8�DŠ= ØàˆB‰€AØˆB‰€Aàˆ!„wˆQ…w�1�a”7˜•7Ø�‰t�A�a˜‘d‘F‰{˜A˜a™D  1 Q¡4¡™KÐ'Ð'ð €wr$   c
                 óž  — |s
t        «       }|dz  }t        dz  }
||
z  }t        |||«      }|xr dxs d}|dz  }|dz  }|	dk7  rU|	dk(  r||d|z  z  |z  z  }nA|	d	k(  r||t        |«      z  |z  z  }n'|	d
k(  r"||t        t	        |	||||d«      «      z  |z  z  }|D ]­  }t        |||«      }t        |«      |z  }t        «       }|j                  t        dd|||d¬«      «       |j                  | t        |«      |z  z   |t        |«      |z  z   «       |j                  |||z  z
  |
z  |z
  «       |j                  |«       |||z  z  }Œ¯ |S )z%make a group with circular text in itih  é´   r7   r+   r4   éZ   ÚstartÚmiddleÚendÚnumericNr   )ÚfontNameÚfontSizeÚ
textAnchor)r   r   r   r9   r   Úaddr   Ú	translater
   r	   Úrotate)r1   rp   ÚradiusÚangleÚtextrë   rì   ÚinsideÚGrí   Úpi180Úphir›   ÚsigÚhsigÚsig90ÚletterÚbetaÚhs                      r"   ÚmakeCircularStringrþ   P  s€  € á”%“'ˆaà	ˆS�L€EÜˆs‰F€EØ
�‰+€CÜ˜˜h¨Ó1€EØ
Š-�RÒ
˜1€CØˆs‰7€DØ�‰F€Eà�7ÒØ�xÒØ�3˜˜E™	‘? 6Ñ)Ñ)‰CØ˜ÒØ�3”u˜U“|Ñ# FÑ*Ñ*‰CØ˜Ò"Ø�3”uœ]¨:°d¸5ÀÈ(ÐSWÓXÓYÑYÐZ`Ñ`Ñ`ˆCàò ˆÜ˜F H¨hÓ7ˆÜ�U‹|˜FÑ"ˆÜ‹GˆØ	�‰Œf�Q˜˜6¨H¸hÐRYÔZÔ[Ø	�‰�A”c˜#“h˜v‘oÑ% a¬¨C«°©Ñ&7Ô8Ø	�‰�#�d˜4‘i‘- Ñ& uÑ,Ô-Ø	�‰ˆaŒØˆs�4‰x‰‰ðð €Hr$   c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)ÚCustomDrawChangerz9
    a class to simplify making changes at draw time
    c                 ó   — d | _         y r†   )Ústorer‰   s    r"   r„   zCustomDrawChanger.__init__t  s	   € Øˆ�
r$   c                 ó,  — |rO| j                  |«      | _        t        | j                  t        «      sJ d| j                  j
                  z  «       ‚y | j                  �7| j                  j                  «       D ]  \  }}t        |||«       Œ d | _        y y )Nz5%s.changer should return a dict of changed attributes)Ú_changerr  r¯   ÚdictÚ	__class__rÀ   ÚitemsÚsetattr)rƒ   ÚchangeÚobjr@   rc   s        r"   r–   zCustomDrawChanger.__call__w  s”   € ÙØŸ™ sÓ+ˆDŒJÜ˜dŸj™j¬Ô.ð  BÐ0gÐjn×jxÑjx÷  kBñ  kBñ  1Bó  BÑ.Ø�Z‰ZÐ#Ø—z‘z×'Ñ'Ó)ò !‘��!Ü˜˜A˜aÕ ð!àˆD�Jð $r$   c                 ó   — t        d«      ‚)z©
        When implemented this method should return a dictionary of
        original attribute values so that a future self(False,obj)
        can restore them.
        zAbstract method _changer called)ÚRuntimeError)rƒ   r
  s     r"   r  zCustomDrawChanger._changer€  s   € ô Ð<Ó=Ð=r$   N)rÀ   rÁ   rÂ   rÃ   r„   r–   r  rÆ   r$   r"   r   r   p  s   „ ñòòó>r$   r   c                   ó   — e Zd Zdd„Zy)ÚFillPairedDatac                 ó>   — t         j                  | |«       || _        y r†   )r   r„   Úother)rƒ   rc   r  s      r"   r„   zFillPairedData.__init__‰  s   € Ü�‰�d˜1ÔØˆ�
r$   N)r   )rÀ   rÁ   rÂ   r„   rÆ   r$   r"   r  r  ˆ  s   „ ôr$   r  )r/   )©é   r/   é   rV   é   r   N)r  r+   r   Nr   )r  )r   Nrç   ).Ú__version__rÃ   Útimer   r   r   Úmathr   r   r   r	   r
   r   r|   Úreportlab.graphics.shapesr   r   r   r   r   r   Úreportlab.lib.utilsr   Úreportlab.pdfbase.pdfmetricsr   r#   r&   r)   r0   r:   rf   r;   rE   rS   rd   ri   rq   rt   rw   ry   rÌ   rã   rþ   r   r   r  rÆ   r$   r"   ú<module>r     s¯   ðð
 €Ø(€ß )Ñ )ß 2× 2Û ß e× eÝ 'Ý 4òò+ò
1ò$ðL €
Ù
ˆ:ƒ�qÑ€ó-%ó^ó($òLò$óó
M÷Tñ Tòl"ò(ó:÷@>ñ >ô0�Tõ r$   