Ë
    ¡ëip  ã                   óÌ  — d Z dZddlmZ ddlmZmZmZmZm	Z	m
Z
mZmZmZmZ ddl­ ddlm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mZ dd
lm Z m!Z!m"Z"m#Z# ddl$m%Z% ddl&m'Z'm(Z(m)Z) ddl*m+Z+ ddl,m-Z- ddl.m/Z/  G d„ de«      Z0 G d„ de+«      Z1 G d„ de1«      Z2 G d„ de2«      Z3d„ Z4 G d„ d«      Z5 G d„ de3«      Z6 G d„ de3«      Z7d „ Z8 G d!„ d"e3«      Z9d#„ Z:d$„ Z;d%„ Z<d&„ Z=y')(z3.3.0z;This modules defines a very preliminary Line Chart example.é    )Úcolors)
ÚisNumberÚisNumberOrNoneÚisColorOrNoneÚisListOfStringsOrNoneÚ	isBooleanÚNoneOrÚisListOfNumbersOrNoneÚisStringOrNoneÚOneOfÚ
Percentage)Ú*)Úflatten)ÚTypedPropertyCollectionÚ
PropHolderÚ
tpcGetItem)ÚLineÚRectÚGroupÚDrawingÚPolygonÚPolyLine)ÚNoEntry)ÚXCategoryAxisÚ
YValueAxisÚYCategoryAxisÚ
XValueAxis)ÚLabel)ÚuSymbol2SymbolÚisSymbolÚ
makeMarker)ÚPlotArea)Ú_objStré   )ÚFillPairedDatac                   ó  — e Zd Z e eed¬«       eed¬«       eed¬«       eed¬«       e ee	«      dd¬«       ed	d
d¬«       ed	dd¬«       ee
d¬«       e e eddd«      «      dd¬«       eedd¬«       eedd¬«      ¬«      Zy	)ÚLineChartPropertieszWidth of a line.©ÚdesczColor of a line or border.zfill color of a bar.zDash array of a line.zWidget placed at data points.r$   ©r)   ÚadvancedUsageNzShader Class.zFiller Class.zName of the line.ÚlineÚ
joinedLineÚbarzWhat kind of plot this line isz2Percentage of available width to be used for a barzIf true flood fill to x axis)ÚstrokeWidthÚstrokeColorÚ	fillColorÚstrokeDashArrayÚsymbolÚshaderÚfillerÚnameÚ	lineStyleÚbarWidthÚinFill)Ú__name__Ú
__module__Ú__qualname__ÚAttrMapÚAttrMapValuer   r   r
   r	   r    r   r   r   r   Ú_attrMap© ó    úd/var/www/html/chat/reports/venv/lib/python3.12/site-packages/reportlab/graphics/charts/linecharts.pyr'   r'      s®   „ ÙÙ" 8Ð2DÔEÙ" =Ð7SÔTÙ  Ð5KÔLÙ&Ð'<ÐCZÔ[Ù™f XÓ.Ð5TÐcdÔeÙ˜d¨ÀqÔIÙ˜d¨ÀqÔIÙ˜NÐ1DÔEÙ ¡©¨f°\À%Ó(HÓ!IÐPpð  @Aô  BÙ Ð4hÐwxÔyÙ˜iÐ.LÐ[\Ô]ô
�HrA   r'   c                   ó   — e Zd Zd„ Zdd„Zy)ÚAbstractLineChartc                 ó  — | j                   }|t        |«      z  }||   }|j                  }	||dz  z   }
t        |dd «      }|dk(  rPt        |dt        |dd «      «      }t        |dt        |dd «      «      }t	        ||||||	d|t        |d|	«      ¬«	      }nj| j
                  s|d	k(  rWt        |dt        |dd «      «      }t        |dt        |dd «      «      }t        ||
||z   |
|	d¬
«      }|r||_        |r
||_        nd }t        |d«      r|j                  }nt        |d«      r|j                  }nd }|rt        |||dz  z   |
|	«      }|r0|r.t        «       }|j                  |«       |j                  |«       |S |xs |S )Ng       @r7   r.   r2   r/   r   r1   )r/   r0   ÚstrokeLineCapr2   r1   r-   )r0   rF   r3   )ÚlinesÚlenr0   Úgetattrr   ÚjoinedLinesr   r/   r2   Úhasattrr3   r   r   Úadd)ÚselfÚrowNoÚxÚyÚwidthÚheightÚ	baseStyleÚstyleIdxÚstyleÚcolorÚyh2r7   Údashr/   ÚLÚSÚgs                    rB   ÚmakeSwatchSamplez"AbstractLineChart.makeSwatchSample)   s¬  € Ø—J‘Jˆ	Øœ3˜y›>Ñ)ˆØ˜(Ñ#ˆØ×!Ñ!ˆØ��r‘	‰kˆÜ˜E +¨dÓ3ˆ	Ø�eÒÜ˜5Ð"3´W¸YÐGXÐY]Ó5^Ó_ˆDÜ  ¨´w¸uÀmÐTXÓ7YÓZˆKÜ�Q�q˜˜v°+È%Ð^_Ðptô  @Gð  HMð  NYð  Z_ó  @`ô  a‰AØ×Ò ¨LÒ!8Ü˜5Ð"3´W¸YÐGXÐY]Ó5^Ó_ˆDÜ  ¨´w¸uÀmÐTXÓ7YÓZˆKÜ�Q�s˜1˜U™7 3°5ÀqÔIˆAÙ¨K˜AœMÙ¨�QÕ&àˆAä�5˜(Ô#Ø—‘‰AÜ�Y Ô)Ø× Ñ ‰AàˆAá”.  1 U¨2¡X¡:¨c°%Ó8ˆaÙ‘Ü“ˆAØ�E‰E�!ŒHØ�E‰E�!ŒHØˆHØŠv�AˆrA   Nc                 óH   — t        t        | j                  |   d|«      «      S )zreturn series name i or defaultr6   )r#   rI   rG   )rM   ÚiÚdefaults      rB   ÚgetSeriesNamezAbstractLineChart.getSeriesNameL   s   € ä”w˜tŸz™z¨!™}¨V°GÓ<Ó=Ð=rA   ©N)r:   r;   r<   r\   r`   r@   rA   rB   rD   rD   '   s   „ ò!ôF>rA   rD   c                   ó   — e Zd Zy)Ú	LineChartN)r:   r;   r<   r@   rA   rB   rc   rc   P   s   „ ØrA   rc   c            
       ó¤  — e Zd ZdZdZ ed-i de“d eedd¬«      “d eed	d¬«      “d
 edd¬«      “d edd¬«      “d edd¬«      “d eed¬«      “d eed¬«      “d edd¬«      “d edd¬«      “d edd¬«      “d ee	d¬«      “d edd¬«      “d  ee
d!d¬«      “d" ee
d#d¬«      “d$ edd%d¬«      “ŽZd&„ Zd'„ Zd(„ Zd)„ Zd*„ Zd+„ Zd,„ Zy).ÚHorizontalLineCharta±  Line chart with multiple lines.

    A line chart is assumed to have one category and one value axis.
    Despite its generic name this particular line chart class has
    a vertical value axis and a horizontal category one. It may
    evolve into individual horizontal and vertical variants (like
    with the existing bar charts).

    Available attributes are:

        x: x-position of lower-left chart origin
        y: y-position of lower-left chart origin
        width: chart width
        height: chart height

        useAbsolute: disables auto-scaling of chart elements (?)
        lineLabelNudge: distance of data labels to data points
        lineLabels: labels associated with data values
        lineLabelFormat: format string or callback function
        groupSpacing: space between categories

        joinedLines: enables drawing of lines

        strokeColor: color of chart lines (?)
        fillColor: color for chart background (?)
        lines: style list, used cyclically for data series

        valueAxis: value axis object
        categoryAxis: category axis object
        categoryNames: category names

        data: chart data, a list of data series of equal length
    r   ÚBASEÚuseAbsolutez$Flag to use absolute spacing values.r$   r*   ÚlineLabelNudgez,Distance between a data point and its label.Ú
lineLabelsNz(Handle to the list of data point labels.r(   ÚlineLabelFormatz9Formatting string or function used for data point labels.ÚlineLabelArrayzHexplicit array of line label values, must match size of data if present.ÚgroupSpacingz? - Likely to disappear.rJ   z.Display data points joined with lines if true.rG   zHandle of the lines.Ú	valueAxiszHandle of the value axis.ÚcategoryAxiszHandle of the category axis.ÚcategoryNameszList of category names.Údataz/Data to be plotted, list of (lists of) numbers.r9   z!Whether infilling should be done.ÚreversePlotOrderzIf true reverse plot order.Úannotationsz<list of callables, will be called with self, xscale, yscale.c                 óª  — t         j                  | «       d | _        d | _        | j                  rt        «       | _        t        «       | _        nt        «       | _        t        «       | _        ddg| _        d| _        t        t        «      | _        d| j                  _        t"        j$                  | j                  d   _        t"        j&                  | j                  d   _        t"        j(                  | j                  d   _        d| _        d| _        t        t.        «      | _        d | _        d | _        d| _        d| _        d| _        d| _        y )N©éd   én   éx   é‚   )éF   éP   rz   éZ   )ÚNorthÚSouthÚEastÚWestr$   r   é   é
   )rc   Ú__init__r0   r1   Ú_flipXYr   rn   r   rm   r   r   rp   ro   r   r'   rG   r/   r   ÚredÚgreenÚbluerg   rl   r   ri   rj   rk   rh   rJ   r9   rq   ©rM   s    rB   r‚   zHorizontalLineChart.__init__Œ   s  € Ü×Ñ˜4Ô ð  ˆÔØˆŒð �<Š<Ü -£ˆDÔÜ'›\ˆD�Nä -£ˆDÔÜ'›\ˆDŒNð 'Ø%ð'ˆŒ	à<ˆÔä,Ô-@ÓAˆŒ
Ø!"ˆ�
‰
ÔÜ$*§J¡Jˆ�
‰
�1‰Ô!Ü$*§L¡Lˆ�
‰
�1‰Ô!Ü$*§K¡Kˆ�
‰
�1‰Ô!ð ˆÔØˆÔä1´%Ó8ˆŒØ#ˆÔØ"ˆÔð !ˆÔð
 ˆÔØˆŒØ !ˆÕrA   c                 óÖ   — t        dd«      }ddg}t        «       }d|_        d|_        d|_        d|_        ||_        t        d	«      |j                  _	        |j                  |«       |S )
ú Shows basic use of a line chart.éÈ   ru   ©é   é   é   é   é%   é-   é   é   ©é   r�   é   é   é&   é.   é   r�   rŽ   r�   éU   éª   ÚCircle)r   re   rO   rP   rR   rQ   rp   r!   rG   r3   rL   ©rM   Údrawingrp   Úlcs       rB   ÚdemozHorizontalLineChart.demoÀ   sl   € ô ˜#˜sÓ#ˆð /Ø/ðˆô
 !Ó"ˆàˆŒØˆŒØˆŒ	ØˆŒØˆŒÜ$ XÓ.ˆ�‰Œà�‰�BŒàˆrA   c                 ó²  — t        | j                  «      | _        t        t	        t        t         | j                  «      «      «      | _        | j                  rd}n/| j                  }| j                  j                  d«      d   }||z  }|| _        | j                  j                  d«      x| _        }d| j                  z  |z  x| _        }t        «       }g j                   }| j                  j                  }| j                  j                  }	| j                  }
| j"                  }t        |
«      }t%        |
«      D ]Ú  \  }}t'        |t(        «      rh|j*                  }d|cxk  r|k  r@n n=||k(  rt-        d|z  «      ‚||f}|j/                  t1        |«      t        |«      f«       nt-        d|›d|›�«      ‚g j                   }t%        |«      D ]1  \  }}|€Œ	 ||«      \  }} |	|«      } ||r|||z   fn||z   |f«       Œ3  ||j2                  «       ŒÜ |j2                  }|D ]  \  }}t)        ||   |«      ||<   Œ t        |«      | _        || _        y)	z…Works out where they go.

        Sets an attribute _positions which is a list of
        lists of (x, y) matching the data.
        g      ð?r   r$   ç      à?z)data row %r may not be paired with itselfz	data row z! is paired with invalid data row N)rH   rp   Ú_seriesCountÚmaxÚlistÚmapÚ
_rowLengthrg   rl   rn   ÚscaleÚ_normFactorrm   Ú_vzeroÚ_hngsÚsetÚappendrƒ   Ú	enumerateÚ
isinstancer%   ÚotherÚ
ValueErrorrL   ÚminÚ__self__Ú_pairInFillsÚ
_positions)rM   Ú
normFactorÚ	normWidthÚ
availWidthÚvzeroÚhngsÚpairsÚPÚcscaleÚvscalerp   ÚflipXYÚnrN   Úrowr±   Útr,   ÚcolNoÚdatumÚcr[   Úvs                          rB   ÚcalcPositionsz!HorizontalLineChart.calcPositions×   s*  € ô   §	¡	›NˆÔÜœd¤3¤s¨4¯9©9Ó#5Ó6Ó7ˆŒà×Òà‰Jð ×)Ñ)ˆIØ×*Ñ*×0Ñ0°Ó3°AÑ6ˆJØ# iÑ/ˆJØ%ˆÔØ"Ÿn™n×2Ñ2°1Ó5Ð5ˆŒ�eØ $×"3Ñ"3Ñ3°jÑ@Ð@ˆŒ
�Tä“ˆØ�I‰IˆØ×"Ñ"×(Ñ(ˆØ—‘×%Ñ%ˆØ�y‰yˆØ—‘ˆÜ�‹IˆÜ" 4›ò 	‰IˆE�#Ü˜#œ~Ô.ØŸ	™	�Ø�e”:˜A•:Ø˜e’|Ü(Ð)TÐW\Ñ)\Ó]Ð]Ø˜u˜�AØ—I‘Iœs 1›v¤c¨!£f˜oÕ.å$ÒY^Ñ`eÐ%fÓgÐgØ—9‘9ˆDÜ(¨›~ò A‘��eØÑ$Ù! %›=‘D�A�qÙ˜u›�AÙ©˜!˜Q˜t™V™°Q°t±V¸Q°KÕ@ð	Añ
 ˆd�m‰mÕð!	ð" �J‰Jˆð "ò 	6‰LˆE�5Ü% a¨¡h¨uÓ5ˆAˆeŠHð	6ä ›JˆÔØˆ�rA   c                 óö  — | j                   }| j                  |   |   }|€d}nSt        |«      t        u r|dk(  r	 | j                  |   |   }n)||z  }n#t        |d«      r	 ||«      }nt        d|z  «      ‚|ru| j                  ||f   }|j                  sy|dkD  r |j                  ||| j                  z   «       n|j                  ||| j                  z
  «       |j                  |«       |S d}|S #  d}Y Œ�xY w)z*Draw a label for a given item in the list.NÚvaluesÚ__call__z6Unknown formatter type %s, expected string or functionr   )rj   rp   ÚtypeÚstrrk   rK   r²   ri   ÚvisibleÚ	setOriginrh   ÚsetText)	rM   rN   rÄ   rO   rP   ÚlabelFmtÚ
labelValueÚ	labelTextÚlabels	            rB   Ú_innerDrawLabelz#HorizontalLineChart._innerDrawLabel  s  € ð ×'Ñ'ˆØ—Y‘Y˜uÑ% eÑ,ˆ
àÐØ‰IÜ�(‹^œsÑ"Ø˜8Ò#ð%Ø $× 3Ñ 3°EÑ :¸5Ñ A‘Ið % zÑ1‘	Ü�X˜jÔ)Ù  Ó,‰IäÐUÐV^Ñ^Ó_Ð_áØ—O‘O U¨E NÑ3ˆEØ—=’= &à�1ŠuØ—‘  1 t×':Ñ':Ñ#:Õ;à—‘  1 t×':Ñ':Ñ#:Ô;Ø�M‰M˜)Ô$ð ˆð ˆEØˆøð)%Ø $’Iús   »C2 Ã2C8c                 óJ   — |j                  | j                  ||||«      «       y)zLDraw a label for a given item in the list.
        G must have an add methodN)rL   rÕ   )rM   ÚGrN   rÄ   rO   rP   s         rB   Ú	drawLabelzHorizontalLineChart.drawLabel/  s!   € ð 	
�‰ˆd×"Ñ" 5¨¨q°Ó3Õ4rA   c                 óf	  — t        «       }| j                  }| j                  }| j                  r|j	                  «        | j
                  }t        |«      }| j                  }| j                  }| j                  }| j                  }	|	sA| j                  s5t        t        |«      «      D �
cg c]  }
t        ||
|z     dd«      r|
‘Œ c}
r^|r(|j                  }|j                  }||j                   z   }n'|j                  }|j                  }||j                   z   }t        | d|«      }| j"                  }d }t%        | j                  rt'        |«      n|«      D �]Q  \  }
}|
|z  }||   }|j(                  }t        |d|«      }t        |d|	«      }t        |dd «      }t        |dd «      }t+        |d«      r|j,                  }nt+        |d«      r|j,                  }nd }|dk(  �r|€u|r:t/        |j                  |«      }t1        |j                  |j                   z   |«      }n9t/        |j                  |«      }t1        |j                  |j                   z   |«      }t        |d	t3        d
«      «      }t5        |t2        «      r| j6                  |z  dz  }n|dz  }|D ]T  \  }}|r||k  rn|}|||z
  ||z
  d|z  f} n||k  rn|}||z
  |d|z  ||z
  f} |j9                  t;        | |||dœŽ«       ŒV �n
| j<                  s|dk(  rùt?        |«      }!|st5        |t@        «      ržt        |dd «      }"t5        |t@        «      r%|!t?        t'        ||jB                     «      «      z   }#n|rg|!z   |gz   }#ng|!z   |gz   }#|"r|"jE                  | |
||#«       n)j9                  tG        |#|||k(  r|nd |xs d¬«      «       |r
|dk(  s||k7  r2tI        |!|dd¬«      }$|r||$_        |r||$_%        |j9                  |$«       t+        |d«      r|jL                  }%nt+        |d«      r|jL                  }%nd }%|%rLt%        |«      D ]>  \  }&\  }}tO        tQ        |%|&«      |||j(                  «      }'|'sŒ.|j9                  |'«       Œ@ t%        |«      D ]  \  }&\  }}| jS                  ||
|&||«       Œ �ŒT |S c c}
w )Nr9   FÚ_inFillGr1   r2   r7   r/   r.   r8   é2   g{®Gáz„?r£   r€   )r/   r0   r1   r-   r5   çš™™™™™¹?)r1   r0   r/   r   r$   )r0   rF   ÚstrokeLineJoinr3   )*r   rj   r¶   rq   ÚreverserG   rH   rƒ   rn   rm   r9   rµ   ÚrangerI   Ú_xÚ_yÚ_lengthr«   r¯   Úreversedr0   rK   r/   r¥   r³   r   r°   r¬   rL   r   rJ   r   r%   r±   Úfillr   r   r2   r3   r   r   rØ   )(rM   r[   rÑ   r½   rG   Ú
styleCountrÀ   ÚcAÚvAÚ_inFillrN   ÚinfillCÚinfillV0ÚinfillV1ÚinFillGrº   ÚbyposrÂ   rT   ÚrowStyler0   r1   r9   rX   r7   r/   Úbynegr8   ÚhbwrO   rP   Úv0rÃ   Úpointsr5   Úfpointsr,   ÚuSymbolrÄ   r3   s(                                           rB   Ú	makeLineszHorizontalLineChart.makeLines4  s°  € Ü‹Gˆà×'Ñ'ˆØ�O‰OˆØ× Ò  !§)¡)¤+Ø—
‘
ˆÜ˜“Zˆ
Ø—‘ˆØ×ÑˆØ�^‰^ˆØ—+‘+ˆÙ�t×(Ò(Ü$)¬#¨a«&£Mö L˜5Ü" 5¨¨zÑ)9Ñ#:¸8ÀEÔJò ó Lñ ØŸ%™%�ØŸ5™5�Ø# b§j¡jÑ0‘àŸ%™%�ØŸ5™5�Ø# b§j¡jÑ0�Ü˜d :¨aÓ0ˆGØ—‘ˆØˆô $°4×3HÒ3H¤H¨Q¤KÈaÓPó K	6‰JˆE�3Ø˜zÑ)ˆHØ˜X‘ˆHØ"×.Ñ.ˆKÜ ¨°[ÓAˆIÜ˜X h¨wÓ7ˆFÜ˜8Ð%6¸Ó=ˆDÜ ¨°TÓ:ˆIä�x Ô/Ø&×2Ñ2‘Ü˜ Ô.Ø#×/Ñ/‘à"�ð ˜%ÓØ�=ÙÜ # B§E¡E¨%Ó 0˜Ü # B§E¡E¨"¯*©*Ñ$4°UÓ ;™ä # B§E¡E¨%Ó 0˜Ü # B§E¡E¨"¯*©*Ñ$4°UÓ ;˜Ü" 8¨J´zÀ"³~ÓF�Ü˜h¤zÔ2ØŸ*™* XÑ-¨dÑ2‘Cà" 3™,�CØò h‘D�A�qÙØ&'¨¢g™U°5˜Ø  #¡ q¨¡t¨Q¨s©UÐ2™à&'¨¢g™U°5˜Ø˜c™E " Q s¡U¨1¨R©4Ð/˜Ø—E‘Eœ$ ¨kÀkÐ\eÒfÕgòhð ×!Ò! Y°Ò%<Ü  ›�ÙœZ¨¬NÔ;Ü$ X¨x¸Ó>�FÜ! #¤nÔ5Ø"(¬7´8¸A¸c¿i¹i¹LÓ3IÓ+JÑ"J™á!Ø'.¨xÐ&8¸6Ñ&AÀWÈXÐDVÑ&V™Gà'/°Ð&8¸6Ñ&AÀXÈgÐDVÑ&V˜GÙØŸ™ D¨°°yÀÕIàŸ™¤G¨G¸iÐcnÐpyÒcyÑT_ð  @Dð  Q\ò  Qcð  `cô  %dô  eÙ ¨¢¨k¸9Ò.DÜ# F°{ÐQRÐbcÔd�DÙ"Ø+6˜Ô(ÙØ/3˜Ô,Ø—E‘E˜$”Kä�x Ô*Ø"Ÿ/™/‘Ü˜ Ô)ØŸ,™,‘à�áÜ#,¨S£>ò -‘K�E™%˜1˜QÜ+¬J°w¸uÓ,EÀaÈÈ(×J^ÑJ^Ó_�FÚ˜qŸu™u V�}ð-ô
 "+¨3£ò 6‘�‘v˜˜1Ø—‘˜q %¨°°1Õ5ò6ðUK	6ðZ ˆùò{Ls   Â*R.c                 ó  — | j                   | j                  }}| j                  r2|j                  | j                  | j
                  | j                  «       n1|j                  | j                  | j
                  | j                  «       |r||_        |r||_        |j                  | j                  «       | j
                  }| j                  }| j                  rH|j                  d«      }||| j                  z   kD  s||k  s|}|j                  ||| j                  «       nG|j                  d«      }||| j                  z   kD  s||k  s|}|j                  ||| j                  «       |j                  | j                  «       | j                  «        t        «       }|j                  | j                  «       «       | j                   r*t        «       | _        |j                  | j"                  «       |j                  |«       |j                  |«       t%        |dd«      }t%        |dd«      }|s|j'                  || |j(                  ¬«       |s|j'                  || |j(                  ¬«       |j                  | j+                  «       «       |r|j'                  || |j(                  ¬«       |r|j'                  || |j(                  ¬«       t%        | dd«      D ]/  }	|j                   |	| |j                  |j                  «      «       Œ1 |S )zDraws itself.r   ÚdrawGridLastF)ÚparentÚdimrr   r@   )rm   rn   rƒ   ÚsetPositionrO   rP   rQ   rR   ÚjoinAxisÚ	configurerp   r©   rÈ   r   rL   ÚmakeBackgroundr9   rÚ   rI   ÚmakeGridÚgetGridDimsrõ   )
rM   rç   ræ   rP   rO   Ú	crossesAtr[   ÚcAdglÚvAdglÚas
             rB   ÚdrawzHorizontalLineChart.draw   s?  € ð —‘ ×!2Ñ!2ˆBˆØ�<Š<Ø�N‰N˜4Ÿ6™6 4§6¡6¨4¯:©:Õ6à�N‰N˜4Ÿ6™6 4§6¡6¨4¯;©;Ô7Ù˜RˆrŒ{Ù˜RˆrŒ{Ø
�‰�T—Y‘YÔà�F‰FˆØ�F‰FˆØ�<Š<ð Ÿ™ ›ˆIØ  T§Z¡Z¡Ò/°YÀ²]Ø�Ø�N‰N˜1˜a §¡Õ-ð Ÿ™ ›ˆIØ  T§[¡[¡Ò0°iÀ!²mØ�Ø�N‰N˜1˜a §¡Ô,Ø
�‰�T—Y‘YÔà×ÑÔä‹GˆØ	�‰ˆd×!Ñ!Ó#Ô$Ø�;Š;Ü!›GˆDŒMØ�E‰E�$—-‘-Ô à	�‰ˆbŒ	Ø	�‰ˆbŒ	Ü˜˜>¨%Ó0ˆÜ˜˜>¨%Ó0ˆÙ�b—k‘k !¨4°B·N±N�kÔCÙ�b—k‘k !¨4°B·N±N�kÔCØ	�‰ˆd�n‰nÓÔÙ�"—+‘+˜a t°·±�+Ô?Ù�"—+‘+˜a t°·±�+Ô?Ü˜˜m¨BÓ/ÒQˆA°·±±q¸¸b¿h¹hÀrÇxÁxÓ7PÕ1QÐQØˆrA   r@   )r:   r;   r<   Ú__doc__rƒ   r=   rc   r>   r   r   r   r?   r‚   r¡   rÈ   rÕ   rØ   rõ   r  r@   rA   rB   re   re   V   sb  „ ñ ðB €Gáò 
™Ið 
Ù" 8Ð2XÐghÕið
á% hÐ5cÐrsÕtð
ñ " $Ð-WÕXð
ñ ' tÐ2mÕnð	
ñ
 & dÐ1{Õ|ð
ñ $ HÐ3MÕNð
ñ # 8Ð2bÕcð
ñ ˜TÐ(>Õ?ð
ñ ! Ð,GÕHð
ñ $ DÐ/MÕNð
ñ %Ð%:ÐAZÕ[ð
ñ ˜DÐ'XÕYð
ñ ˜iÐ.QÐ`aÕbð
ñ (¨	Ð8UÐdeÕfð
ñ # 4Ð.lÐ{|Õ}ð
€Hò$2"òhò.4òl òD5ò
jóX0rA   re   c                 ó*   — | d    | d   | d   | d    fS )zt, z0, z1, x, y = a[:5]r$   é   r   r“   r@   )r  s    rB   Ú_fakeItemKeyr  Ò  s%   € àˆq‰TˆE�!�A‘$�q˜‘t˜Q˜q™T˜EÐ"Ð"rA   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)Ú
_FakeGroupc                 ó   — g | _         y ra   ©Ú_datar‡   s    rB   r‚   z_FakeGroup.__init__×  s	   € Øˆ�
rA   c                 ó@   — |r| j                   j                  |«       y y ra   )r  r®   )rM   Úwhats     rB   rL   z_FakeGroup.addÚ  s   € Ù�—‘×"Ñ" 4Õ(ˆ4rA   c                 ó   — | j                   S ra   r  r‡   s    rB   Úvaluez_FakeGroup.valueÝ  s   € Ø�z‰zÐrA   c                 óD   — | j                   j                  t        ¬«       y )N)Úkey)r  Úsortr  r‡   s    rB   r  z_FakeGroup.sortà  s   € Ø�
‰
�‰œLˆÕ)rA   N)r:   r;   r<   r‚   rL   r  r  r@   rA   rB   r
  r
  Ö  s   „ òò)òó*rA   r
  c            
       óŽ   — e Zd Z ee eed¬«       eed¬«       eed¬«       eed¬«      ¬«      ZdZdZ	dZ
d	Zd
„ Zd„ Zd„ Zd„ Zy)ÚHorizontalLineChart3Dzdx/dzr(   zdy/dzzdepth of an individual serieszz gap around series)rf   Útheta_xÚtheta_yÚzDepthÚzSpacer£   r�   r  c                 ó&  — t         j                  | «       | j                  }| j                  }| j                  }| j
                  j                  dk(  r||z  |dz   |z  z   }n|d|z  z   }| j                  |z  | _        | j                  |z  | _
        y )NÚparallel_3dr$   r€   )re   rÈ   r¤   r  r  rn   rU   r  Ú_3d_dxr  Ú_3d_dy)rM   ÚnSeriesr  r  Ú	_3d_depths        rB   rÈ   z#HorizontalLineChart3D.calcPositionsð  s†   € Ü×)Ñ)¨$Ô/Ø×#Ñ#ˆØ—‘ˆØ—‘ˆØ×Ñ×"Ñ" MÒ1Ø ™¨°©	°6Ñ'9Ñ9‰Ià  6¡Ñ)ˆIØ—l‘l 9Ñ,ˆŒØ—l‘l 9Ñ,ˆ�rA   c                 ó‚   — | j                   }| j                  j                  dk(  r|| j                  |z   z  |z   }|S |}|S )Nr  )r  rn   rU   r  )rM   rN   r  Úz0s       rB   Ú_calc_z0zHorizontalLineChart3D._calc_z0ü  sJ   € Ø—‘ˆØ×Ñ×"Ñ" MÒ1Ø˜Ÿ™ FÑ*Ñ+¨FÑ2ˆBð ˆ	ð ˆBØˆ	rA   c                 óJ   — ||| j                   z  z   ||| j                  z  z   fS ra   )r  r  )rM   rO   rP   Úzs       rB   Ú_zadjustzHorizontalLineChart3D._zadjust  s'   € Ø��4—<‘<‘Ñ  1 T§\¡\¡>Ñ!1Ð1Ð1rA   c                 ó€  — | j                   }t        t        t        | j                  «      «      «      }| j
                  r|j                  «        | j                  }|rJ d«       ‚| j                  }| j                  }| j                  }| j                  }t        «       }ddlm}	 t        | dd «      }
|
s| j                   j"                  dk7  rd}
|D �]&  }| j                  |   }t        |«      }t        | j$                  «      }||z  }| j$                  |   }|j&                  }t        |dd «      }| j)                  |«      }||z   }t+        | j$                  |   d«      r| j$                  |   j,                  }n/t+        | j$                  d«      r| j$                  j,                  }nd }| j.                  r?|r=|d   \  }}t        d|«      D ]&  }||   \  }} |	||||||||||d |
d d d d	¬
«       ||}}Œ( t+        | j$                  |   d«      r| j$                  |   j0                  }n/t+        | j$                  d«      r| j$                  j0                  }nd }|rMt        |«      D ]?  }||   \  }} ||||«      \  }}t3        ||||«      }|sŒ)|j5                  d|||||f«       ŒA t        |«      D ]E  }||   \  }} ||||«      \  }}| j7                  ||||«      }|sŒ/|j5                  d|||||f«       ŒG �Œ) |j9                  «        t;        «       }|j=                  «       D ]  }|j5                  |d   «       Œ |S )NzinFill not supported for 3d yetr   )Ú_make_3d_line_infoÚ_3d_tilewidthr  r$   r2   r/   rÜ   )ÚfillColorShadedÚ	tileWidthr0   r/   r2   Úshadingr3   r€   éÿÿÿÿ)rj   r¦   rß   rH   r¶   rq   rÞ   r9   r  r&  r  r  r
  Ú!reportlab.graphics.charts.utils3dr(  rI   rn   rU   rG   r0   r#  rK   r/   rJ   r3   r   rL   rÕ   r  r   r  ) rM   rÑ   r½   r9   r  r&  r  r  ÚFr(  r+  rN   rÂ   rÁ   rå   rT   rî   ÚrowColorrX   r"  Úz1r/   Úx0Úy0rÄ   Úx1Úy1rô   r3   rY   r[   rÇ   s                                    rB   rõ   zHorizontalLineChart3D.makeLines  s*  € Ø×'Ñ'ˆÜ””s˜4Ÿ?™?Ó+Ó,Ó-ˆØ× Ò  !§)¡)¤+Ø—‘ˆÙÐ<Ð<Ó<ˆzð —‘ˆØ—=‘=ˆØ—,‘,ˆØ—,‘,ˆÜ‹LˆÝHÜ˜D °Ó6ˆ	Ù˜T×.Ñ.×4Ñ4°mÒCÐQRÀYð ó 2	/ˆEØ—/‘/ %Ñ(ˆCÜ�C“ˆAÜ˜TŸZ™Z›ˆJØ˜zÑ)ˆHØ—z‘z (Ñ+ˆHØ×+Ñ+ˆHÜ˜8Ð%6¸Ó=ˆDØ—‘˜uÓ%ˆBØ�f‘ˆBä�t—z‘z (Ñ+¨]Ô;Ø"Ÿj™j¨Ñ2×>Ñ>‘Ü˜Ÿ™ ]Ô3Ø"Ÿj™j×4Ñ4‘à"�ð ×ÒÙØ  ™V‘F�B˜Ü!& q¨£ò (˜Ø!$ U¡™˜˜BÙ*¨A¨r°2°r¸2¸rÀ2Ø '¨Ø (¸$È)Ø,0¸dÐTXØ(+õ	-ð
 "$ R˜B™ð(ô �t—z‘z (Ñ+¨XÔ6ØŸ*™* XÑ.×5Ñ5‘Ü˜Ÿ™ XÔ.ØŸ*™*×+Ñ+‘à�áÜ" 1›Xò =�EØ  ™Z‘F�B˜Ù% b¨¨BÓ/‘F�B˜Ü+¨G°B°r¸(ÓC�FÚ˜qŸu™u a¨¨2¨b°°FÐ%;Õ<ð	=ô ˜q›ò /�Ø˜U™‘��BÙ! " R¨Ó+‘��BØ×(Ñ(¨°°r¸2Ó>�Ú�a—e‘e˜Q˜r " R¨¨1Ð-Õ.ò	/ð]2	/ðh 	
�‰ŒÜ‹GˆØ—‘“Ò(ˆA˜AŸE™E ! B¡%�LÐ(ØˆrA   N)r:   r;   r<   r=   re   r>   r   r?   r  r  r  r  rÈ   r#  r&  rõ   r@   rA   rB   r  r  ä  sd   „ ÙÐ/Ù˜x¨gÔ6Ù˜x¨gÔ6Ù˜hÐ-LÔMÙ˜hÐ-BÔCô	
€Hð €GØ€GØ€FØ€Fò
-òò2óLrA   r  c                   ó   — e Zd ZdZy)ÚVerticalLineChartr$   N)r:   r;   r<   rƒ   r@   rA   rB   r7  r7  U  s   „ Ø�GrA   r7  c                  óÒ  — t        dd«      } ddg}t        «       }d|_        d|_        d|_        d|_        ||_        d|_        t        d	«      |j                  _
        d
|_        dj                  d«      }||j                  _        d|j                  j                  _        d|j"                  _        d|j"                  _        d|j"                  _        | j+                  |«       | S )Né�  rŠ   r‹   ©r�   rŽ   r™   r˜   é   r–   é   r•   rÛ   é}   é,  r$   ÚFilledDiamondú%2.0fúJan Feb Mar Apr May Jun Jul Augú rÁ   r   é<   é   )r   re   rO   rP   rR   rQ   rp   rJ   r!   rG   r3   rj   Úsplitrn   ro   ÚlabelsÚ	boxAnchorrm   ÚvalueMinÚvalueMaxÚ	valueSteprL   ©rŸ   rp   r    ÚcatNamess       rB   Úsample1rM  X  sË   € Ü�c˜3Ó€Gð +Ø*ð€Dô
 
Ó	€Bà€B„DØ€B„DØ€B„IØ€B„HØ€B„GØ€B„NÜ  Ó1€B‡H�H„OØ €BÔà0×6Ñ6°sÓ;€HØ$,€B‡O�OÔ!Ø'*€B‡O�O×ÑÔ$à€B‡L�LÔØ€B‡L�LÔØ€B‡L�LÔà‡K�K�„Oà€NrA   c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚSampleHorizontalLineChartzHSample class overwriting one method to draw additional horizontal lines.c                 ó   — t        dd«      }ddg}t        «       }d|_        d|_        d|_        d|_        ||_        t        j                  |_	        t        j                  d	«      |_        |j                  |«       |S )
r‰   rŠ   ru   r‹   r”   rŽ   r�   r›   rœ   éÌÌÌ )r   rO  rO   rP   rR   rQ   rp   r   Úwhiter0   ÚHexColorr1   rL   rž   s       rB   r¡   zSampleHorizontalLineChart.demoz  sw   € ô ˜#˜sÓ#ˆð /Ø/ðˆô
 'Ó(ˆàˆŒØˆŒØˆŒ	ØˆŒØˆŒÜŸ™ˆŒÜ—‘ xÓ0ˆŒà�‰�BŒàˆrA   c           
      óV  — t        «       }|j                  t        j                  | «      «       | j                  }|j
                  }|D ]]  }|j                  |«      }|j                  t        | j                  || j                  | j                  z   || j                  ¬«      «       Œ_ |S )N)r0   )r   rL   re   rý   rm   Ú_tickValuesr©   r   rO   rQ   r0   )rM   r[   ÚvalAxisÚvalTickPositionsrP   s        rB   rý   z(SampleHorizontalLineChart.makeBackground’  s�   € Ü‹Gˆà	�‰Ô!×0Ñ0°Ó6Ô7à—.‘.ˆØ"×.Ñ.Ðà!ò 	8ˆAØ—‘˜aÓ ˆAØ�E‰E”$�t—v‘v˜q $§&¡&¨¯©Ñ"3°QØ%)×%5Ñ%5ô7õ 8ð	8ð
 ˆrA   N)r:   r;   r<   r  r¡   rý   r@   rA   rB   rO  rO  w  s   „ ÙNòó0rA   rO  c                  ó0  — t        dd«      } ddg}t        «       }d|_        d|_        d|_        d|_        ||_        d|_        t        j                  |_
        t        j                  d	«      |_        t        d
«      |j                  _        d|_        dj#                  d«      }||j$                  _        d|j$                  j(                  _        d|j,                  _        d|j,                  _        d|j,                  _        | j5                  |«       | S )Nr9  rŠ   r‹   r:  rÛ   r=  r>  r$   rQ  r?  r@  rA  rB  rÁ   r   rC  rD  )r   rO  rO   rP   rR   rQ   rp   rJ   r   rR  r0   rS  r1   r!   rG   r3   rj   rE  rn   ro   rF  rG  rm   rH  rI  rJ  rL   rK  s       rB   Úsample1arY  ¡  sæ   € Ü�c˜3Ó€Gð +Ø*ð€Dô
 
#Ó	$€Bà€B„DØ€B„DØ€B„IØ€B„HØ€B„GØ€B„NÜ—\‘\€B„NÜ—?‘? 8Ó,€B„LÜ  Ó1€B‡H�H„OØ €BÔà0×6Ñ6°sÓ;€HØ$,€B‡O�OÔ!Ø'*€B‡O�O×ÑÔ$à€B‡L�LÔØ€B‡L�LÔØ€B‡L�LÔà‡K�K�„Oà€NrA   c                  ó&  — t        dd«      } ddg}t        «       }d|_        d|_        d|_        d|_        ||_        d|_        t        d	«      |j                  _
        d
|_        t        j                  |_        t        j                  |_        dj#                  d«      }||j$                  _        d|j$                  j(                  _        d|j,                  _        d|j,                  _        d|j,                  _        | j5                  |«       | S )Nr9  rŠ   r‹   r:  rÛ   r=  r>  r$   ÚSmileyr@  rA  rB  rÁ   r   rC  rD  )r   re   rO   rP   rR   rQ   rp   rJ   r!   rG   r3   rj   r   Úblackr0   Ú	lightbluer1   rE  rn   ro   rF  rG  rm   rH  rI  rJ  rL   rK  s       rB   Úsample2r^  Â  sã   € Ü�c˜3Ó€Gð +Ø*ð€Dô
 
Ó	€Bà€B„DØ€B„DØ€B„IØ€B„HØ€B„GØ€B„NÜ  Ó*€B‡H�H„OØ €BÔÜ—\‘\€B„NÜ×#Ñ#€B„Là0×6Ñ6°sÓ;€HØ$,€B‡O�OÔ!Ø'*€B‡O�O×ÑÔ$à€B‡L�LÔØ€B‡L�LÔØ€B‡L�LÔà‡K�K�„Oà€NrA   c                  ó‚  — t        dd«      } ddg}t        «       }d|_        d|_        d|_        d|_        ||_        d|_        d	|_        t        j                  |_        t        d
«      |j                  d   _        t        |j                  d   _        d|j                  d   _        d|j                  d   _        dj#                  d«      }||j$                  _        d|j$                  j(                  _        d|j,                  _        d|j,                  _        d|j,                  _        | j5                  |«       | S )Nr9  rŠ   r‹   r:  rÛ   r=  r>  r$   r@  r[  r   r€   r“   rA  rB  rÁ   rC  rD  )r   re   rO   rP   rR   rQ   rp   rJ   rj   r   r\  r0   r!   rG   r3   r   r/   rE  rn   ro   rF  rG  rm   rH  rI  rJ  rL   rK  s       rB   Úsample3r`  ã  s  € Ü�c˜3Ó€Gð +Ø*ð€Dô
 
Ó	€Bà€B„DØ€B„DØ€B„IØ€B„HØ€B„GØ€B„NØ €BÔÜ—\‘\€B„Nä# HÓ-€B‡H�HˆQ�KÔÜ €B‡H�HˆQ�KÔØ€B‡H�HˆQ�KÔØ€B‡H�HˆQ�KÔà0×6Ñ6°sÓ;€HØ$,€B‡O�OÔ!Ø'*€B‡O�O×ÑÔ$à€B‡L�LÔØ€B‡L�LÔØ€B‡L�LÔà‡K�K�„Oà€NrA   c                  óÊ  — ddl m}  t        dd«      }t        «       }|j	                  |«       d|_        d}|D �cg c]  }|dz   ‘Œ	 }}|D �cg c]  }|dz
  ‘Œ	 }}|D �cg c]  }|dz   ‘Œ	 }}|D �cg c]  }|d	z
  ‘Œ	 }}t        j                  }	d}
d}d
}t        j                  }d|j                  _
        t        t        |«      t        |«      t        |«      t        |«      t        |«      «      |j                  _        t        t        |«      t        |«      t        |«      t        |«      t        |«      «      |j                  _        |j                  }d |d   _        t#        t%        |«      «      }|g|_         | ||	|
|||¬«      x|d   _        }|D ]4  }||   j+                  t-        |||   ||   ||   ||   ||   ¬«      «       Œ6 |S c c}w c c}w c c}w c c}w )Nr   )ÚCandleSticksr9  rŠ   rŽ   rt   r�   r<  r“   r£   r�   )ÚchartÚboxFillColorÚboxWidthÚ
crossWidthr/   r0   )ÚpositionÚboxMidÚcrossLoÚcrossHiÚboxLoÚboxHi)Úreportlab.graphics.widgetbaserb  r   re   rL   rP   r   Úpinkr\  rm   ÚavoidBoundSpacer³   rH  r¥   rI  rG   r0   rß   rH   rp   r3   ÚsetPropertiesÚdict)rb  Údrc  rh  ÚmÚhiÚlorl  rk  rd  re  rf  ÚcandleStrokeWidthÚcandleStrokeColorrG   ÚIÚcandlesr^   s                     rB   ÚsampleCandleStickrz    sè  € Ý:Ü��SÓ€AÜÓ!€EØ‡E�Eˆ%„LØ€E„GØ!€FØÖ	�1ˆ!ˆB‹$Ð	€BÐ	ØÖ	�1ˆ!ˆB‹$Ð	€BÐ	Ø Ö!�QˆQˆq‹SÐ!€EÐ!Ø Ö!�QˆQˆq‹SÐ!€EÐ!Ü—;‘;€LØ€HØ€JØÐÜŸ™ÐØ&'€E‡O�OÔ#ä"¤3 v£;¬s°2«w´s¸2³w¼sÀ5»zÌ#ÈeË*ÓU€E‡O�OÔÜ"¤3 v£;¬s°2«w´s¸2³w¼sÀ5»zÌ#ÈeË*ÓU€E‡O�OÔØ�K‰K€EØ€Eˆ!�HÔÜŒc�&‹kÓ€AØ�€E„JÙ ,°5À|Ð^fÐs}ð  L]ð  k|ô  !}ð  }€Eˆ!�H„O�gØò  Fˆ�˜‘
×(Ñ(¬°qÀÀqÁ	ÐRTÐUVÑRWÐ`bÐcdÑ`eÐlqÐrsÑltð  |Að  BCñ  |Dô  *Eõ  Fð  FØ€Hùò' 
 ùÚ	ùÚ!ùÚ!s   »GÁGÁGÁ1G N)>Ú__version__r  Úreportlab.libr   Úreportlab.lib.validatorsr   r   r   r   r   r	   r
   r   r   r   Úreportlab.lib.attrmapÚreportlab.lib.utilsr   rm  r   r   r   Úreportlab.graphics.shapesr   r   r   r   r   r   Ú*reportlab.graphics.widgets.signsandsymbolsr   Úreportlab.graphics.charts.axesr   r   r   r   Ú$reportlab.graphics.charts.textlabelsr   Ú"reportlab.graphics.widgets.markersr   r    r!   Úreportlab.graphics.charts.areasr"   Ú!reportlab.graphics.charts.legendsr#   Úutilsr%   r'   rD   rc   re   r  r
  r  r7  rM  rO  rY  r^  r`  rz  r@   rA   rB   ú<module>rˆ     sà   ðð
 €ØI€å  ÷]÷ ]÷ ]ô $Ý 'ß YÑ Yß S× SÝ >ß _Ó _Ý 6ß SÑ SÝ 4Ý 5Ý !ô
˜*ô 
ô'>˜ô '>ôR	Ð!ô 	ôz˜)ô zòx#÷*ñ *ôoÐ/ô oôbÐ+ô òô>(Ð 3ô (òTòBòB"óHrA   