+
    Œvjai ã                   óœ  € R t Rt^ RIHt ^ RIHt ^ RIHtH	t	H
t
HtHtHtHtHtHtHtHtHtHtHtHt ^ RI5 ^ RIHt ^ RIHtHtHtHtHtH t H!t!H"t" ^ RI#H$t$H%t% ^ R	I&H't'H(t(H)t)H*t* ^ R
I+H,t, ^ RI-H.t. ^ RI/H0t0 ^ RI1H2t2 RKR lt3RKR lt4RKR lt5R t6 ! R R4      t7 ! R R4      t8 ! R R4      t9 ! R R4      t: ! R R]$4      t; ! R R](4      t< ! R R ];4      t=R! t>R" t? ! R# R$4      t@ ! R% R&]@4      tA ! R' R(]@]=4      tB ! R) R*]A]=4      tC ! R+ R,4      tDR- tE ! R. R/];4      tF ! R0 R1]@]F4      tG. RLOtH. RMOtIR2 tJ ! R3 R4]4      tK]K! 4       tLRNtM ! R5 R6]G4      tN ! R7 R8]A]F4      tO ! R9 R:4      tP ! R; R<]P]G4      tQ ! R= R>]O4      tR ! R? R@]F4      tS ! RA RB]D4      tT ! RC RD]D4      tU ! RE RF4      tV ! RG RH]S]V]G4      tW ! RI RJ]S]V]O4      tXR# )Oz3.3.0a  Collection of axes for charts.

The current collection comprises axes for charts using cartesian
coordinate systems. All axes might have tick marks and labels.
There are two dichotomies for axes: one of X and Y flavours and
another of category and value flavours.

Category axes have an ordering but no metric. They are divided
into a number of equal-sized buckets. Their tick marks or labels,
if available, go BETWEEN the buckets, and the labels are placed
below to/left of the X/Y-axis, respectively.

  Value axes have an ordering AND metric. They correspond to a nu-
  meric quantity. Value axis have a real number quantity associated
  with it. The chart tells it where to go.
  The most basic axis divides the number line into equal spaces
  and has tickmarks and labels associated with each; later we
  will add variants where you can specify the sampling
  interval.

The charts using axis tell them where the labels should be placed.

Axes of complementary X/Y flavours can be connected to each other
in various ways, i.e. with a specific reference point, like an
x/value axis to a y/value (or category) axis. In this case the
connection can be either at the top or bottom of the former or
at any absolute value (specified in points) or at some value of
the former axes in its own coordinate system.
)Úlog10)Ú	lru_cache)ÚisNumberÚisNumberOrNoneÚisListOfStringsOrNoneÚisListOfNumbersÚisListOfNumbersOrNoneÚisColorOrNoneÚOneOfÚ	isBooleanÚ
SequenceOfÚisStringÚEitherOrÚ	ValidatorÚNoneOrÚisNormalDateÚisNoneOrCallable)Ú*)Ú
normalDate)ÚDrawingÚLineÚPolyLineÚRectÚGroupÚSTATE_DEFAULTSÚ_textBoxLimitsÚ_rotatedBoxLimits)ÚWidgetÚTypedPropertyCollection)ÚLabelÚPMVLabelÚXLabelÚDirectDrawFlowable)ÚnextRoundNumber)Ú
ShadedRect)ÚColor)ÚisSeqNc                 ó¶  € \        V ^ ,          ^ ,          4      '       d0   V'       d	   WV3R lpMV3R lp\        \        V3R lV 4      4      p \        \        \        V  Uu. uF  q Uu. uF
  qf   K  VNK  	  upNK  	  up4      4      p \	        V 4      ^ 8X  d   V# V! \        \        W04      4      4      pV'       d   V! V! V4      V4      # T# u upi u upi )é    c                 ó   € V! WV4      # ©N© )ÚTÚxÚspecialÚfuncs   &&&&Úb/var/www/html/daimler-pipeline/venv/lib/python3.14/site-packages/reportlab/graphics/charts/axes.pyÚ<lambda>Ú"_findMinMaxValue.<locals>.<lambda>6   s   € ±g¸aÀ$Ô6Gó    c                 ó   € W,          # r*   r+   )r,   r-   s   &&r0   r1   r2   8   s   € ˜AžDr3   c                 ó*   € \        \        W4      4      # r*   )ÚlistÚmap)ÚeÚfs   &&r0   r1   r2   9   s   € ¤¤c¨!£h¤r3   )r&   r6   r7   ÚfilterÚlen)ÚVr-   Údefaultr/   r.   ÚextraMinMaxValuesr9   Úrs   &&&&&&  r0   Ú_findMinMaxValuer@   3   s±   € ÜˆQˆq�T�!�W‡~‚~ßØ°ÓG‰AàÓ ˆAÜ
Œs˜aÓ/°Ó2Ó
3ˆÜŒV”CÁ!ÓDÁ!¸Q QÓ8¡Q Ÿ!˜!¡QÔ8Á!ÑDÓEÓF€AÜ
ˆ1ƒvˆq„y˜�.ÙŒT”#�d“+ÓÓ€Aß.?‰4‘Ð&Ó'¨Ó*ÐFÀQÐFùò 9ùÒDs   Á"CÁ*CÁ4CÁ:CÃCc           	     ó(   € \        WV\        W4R7      # )zfind minimum over V[i][x]©r.   r>   )r@   Úmin©r<   r-   r=   r.   r>   s   &&&&&r0   Ú_findMinrE   ?   s   € ä˜A ¬°GÔ`Ð`r3   c           	     ó(   € \        WV\        W4R7      # )zfind maximum over V[i][x]rB   )r@   ÚmaxrD   s   &&&&&r0   Ú_findMaxrH   C   s   € ä˜A ¬°GÔaÐar3   c                óR   € V  F  p \        V4      V8w  d    ^ # K  	  ^#      ^ # ; i)ztrue if all values are int©Úint)ÚvaluesÚvs   & r0   Ú_allIntrN   G   s/   € ãˆð	Ü�1‹v�qŒy¢‰yñ ñ
 øð	Ûús   ‡  &c                   ó0   a € ] tR t^Pt o RtR tR tRtV tR# )ÚAxisLabelAnnotationa/  Create a grid like line using the given user value to draw the line
v       value to use
kwds may contain
scaleValue  True/not given --> scale the value
            otherwise use the absolute value
labelClass  the label class to use default Label
all Label keywords are acceptable (including say _text)
c                ó   € Wn         W n        R # r*   ©Ú_vÚ_kwds©ÚselfrM   Úkwdss   &&,r0   Ú__init__ÚAxisLabelAnnotation.__init__Y   ó   € ØŒØŽ
r3   c                ó–  € V P                   P                  4       pVP                  R \        4      pVP                  RR4      p\	        VR4      '       g   VP                  4        V'       d   VP                  MR ! V P                  4      pVP                  '       d   VP                  pTpMTpVP                  pWbR&   WrR&   V! R/ VB # )Ú
labelClassÚ
scaleValueTÚ_tickValuesc                 ó   € V # r*   r+   ©r-   s   &r0   r1   Ú.AxisLabelAnnotation.__call__.<locals>.<lambda>c   s   € ±ar3   r-   Úyr+   )rT   ÚcopyÚpopr   ÚhasattrÚ_pseudo_configureÚscalerS   ÚisYAxisÚ_xÚ_y)rV   ÚaxisrW   r\   r]   Úsvr-   rb   s   &&      r0   Ú__call__ÚAxisLabelAnnotation.__call__]   s¥   € Ø�z‰z�‰Ó ˆØ—X‘X˜l¬5Ó1ˆ
Ø—X‘X˜l¨4Ó0ˆ
Ü�t˜M×*Ò*Ø×"Ñ"Ô$ß&ˆd�jŠj©KÐ7¸¿¹ÓAˆØ�<�<ˆ<Ø—‘ˆAØ‰AàˆAØ—‘ˆAØˆS‰	ØˆS‰	ÙÑ!˜DÑ!Ð!r3   ©rT   rS   N©	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rX   rm   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r0   rP   rP   P   s   ø‡ € ñò÷"ð "r3   rP   c                   ó0   a € ] tR t^nt o RtR tR tRtV tR# )ÚAxisLineAnnotationaS  Create a grid like line using the given user value to draw the line
kwds may contain
startOffset if true v is offset from the default grid start position
endOffset   if true v is offset from the default grid end position
scaleValue  True/not given --> scale the value
            otherwise use the absolute value
lo          lowest coordinate to draw default 0
hi          highest coordinate to draw at default = length
drawAtLimit True draw line at appropriate limit if its coordinate exceeds the lo, hi range
            False ignore if it's outside the range
all Line keywords are acceptable
c                ó   € Wn         W n        R # r*   rR   rU   s   &&,r0   rX   ÚAxisLineAnnotation.__init__{   rZ   r3   c                ó®  a€ V P                   P                  4       pVP                  R R4      pVP                  RR4      pVP                  RR4      pVP                  '       d   VP                  pVP
                  pMVP
                  pVP                  pVP                  RR4      pVP                  RR4      p	Ve   V	fi   \        \        VRR4      R	R4      p
V
'       d   \        V
R
4      '       d   V
! 4       p
V
'       d   Vf
   V
^ ,          pV	f
   V
^,          p	MVf   ^ pV	f   ^ p	VP                  RVP                  4      V,           pVP                  R^ 4      V,           p\        WË4      \        WË4      r¼VP                  RR4      pVP                  pV'       g	   R Vn         V P                  pV'       d
   Wû,           pMV'       d	   Wü,           pVP                  W†,
          W–,
          VP                  RR4      4      p\        VR4      '       g   VP                  4        VP                  V4      oSV8  g   SV8”  d)   V'       g
    Wán        R# SV8  d   VoMVoV3R lVn        V! V4      pVP                  4        F  w  pp\!        VVV4       K  	  \        V R^ 4      '       d   \#        RV RS RV 24       Wán        V#   Yán        i ; i)r]   TÚ	endOffsetFÚstartOffsetÚstartNÚendÚjoinAxisÚgetGridDimsrm   ÚhiÚloÚdrawAtLimitc                 ó   € V # r*   r+   r`   s   &r0   r1   Ú-AxisLineAnnotation.__call__.<locals>.<lambda>œ   s   € ©1r3   Úparentr^   c                 ó   <€ S# r*   r+   )r-   Úds   &€r0   r1   r‰   ­   s   ø€ ©qr3   Ú_dbgzv=z --> d=z L=)rT   rc   rd   rh   ri   rj   Úgetattrre   Ú_lengthrC   rG   Ú_get_line_posrS   Ú_getLineFuncrf   ÚitemsÚsetattrÚprint)rV   rk   rW   r]   r   r€   ÚoffsÚd0Úsr8   Údimr…   r†   r‡   ÚoaglprM   r/   ÚLÚkrŒ   s   &&                 @r0   rm   ÚAxisLineAnnotation.__call__   sc  ø€ Ø�z‰z�‰Ó ˆØ—X‘X˜l¨4Ó0ˆ
Ø—H‘H˜[¨Ó/ˆ	Ø—h‘h˜}¨UÓ3ˆØ�<�<ˆ<Ø—7‘7ˆDØ—‘‰Bà—7‘7ˆDØ—‘ˆBØ�H‰H�W˜TÓ"ˆØ�H‰H�U˜4Ó ˆØŠ9˜š	Üœ' $ z°$Ó7¸ÀdÓKˆCß”w˜s :×.Ò.Ù“e�ßØ’9 # a¥&˜aØ’9 # a¥&˜aøà’9 !˜aØ’9 !˜aØ�X‰X�d˜4Ÿ<™<Ó(¨Õ+ˆØ�X‰X�d˜1Ó˜bÕ ˆÜ�"‹jœ˜R›ˆ2Ø—h‘h˜}¨UÓ3ˆØ×"Ñ"ˆßÙ!,ˆDÔð	'Ø—‘ˆAßØ•F‘ßØ•F�Ø×$Ñ$ Q¥V¨A­F°4·8±8¸HÀTÓ3JÓKˆDÜ˜4 ×.Ò.Ø×&Ñ&Ô(Ø×"Ñ" 1Ó%ˆAØ�Œt�q˜”tß"¨4ð "'Öð �R”4Ø‘Aà�AÜ%0�Ô"Ù�Q“ˆAØ—z‘z–|‘��!Ü˜˜!˜A–ñ $ä�t˜F 1×%Ò%Ü˜˜1˜#˜W Q C s¨1¨#Ð.Ô/à!&ÔØˆøð "'Õús    Æ)K Æ=K ÇA?K ÉA-K ËKro   Nrp   rx   s   @r0   r{   r{   n   s   ø‡ € ñò÷6ð 6r3   r{   c                   ó0   a € ] tR t^·t o RtR tR tRtV tR# )ÚAxisBackgroundAnnotationzõCreate a set of coloured bars on the background of a chart using axis ticks as the bar borders
colors is a set of colors to use for the background bars. A colour of None is just a skip.
Special effects if you pass a rect or Shaded rect instead.
c                ó   € Wn         W n        R # r*   ©Ú_colorsrT   )rV   ÚcolorsrW   s   &&,r0   rX   Ú!AxisBackgroundAnnotation.__init__¼   s   € ØŒØŽ
r3   c           
     óÄ  € V P                   pV'       g   R # V P                  P                  4       pVP                  pV'       d   VP                  pVP
                  pMVP
                  pVP                  pVP                  RR 4      pVP                  RR 4      pVe   Vfi   \        \        VRR 4      RR 4      p	V	'       d   \        V	R4      '       d   V	! 4       p	V	'       d   Vf
   V	^ ,          pVf
   V	^,          pMVf   ^ pVf   ^ p\        VR4      '       g   VP                  4        \        VRR 4      p
V
'       g   R # \        4       p\        V4      pVP                  V
^ ,          4      p\        ^\        V
4      4       EFV  pVP                  W®,          4      pW.^,
          V,          ,          pV'       Ed   V'       d   TpTpWý,
          pW‡,
          pMTpTpWý,
          pW‡,
          p\        V\        4      '       d   \!        VVVVVR R7      pM°\        V\         4      '       dC   \!        VVVV4      pVP"                   F#  pVR9  g   K  \%        VV\        VV4      4       K%  	  MX\        V\&        4      '       dC   \'        VVVVR7      pVP"                   F#  pVR9  g   K  \%        VV\        VV4      4       K%  	  VP)                  X4       TpEKY  	  V# )	Nr�   r‚   rƒ   r„   rm   r^   )Ú	fillColorÚstrokeColor)r-   rb   ÚwidthÚheight)r¡   rT   rc   rh   ri   rj   rd   rŽ   re   rf   r   r;   r�   ÚrangeÚ
isinstancer%   r   Ú__dict__r“   r$   Úadd)rV   rk   r¢   rW   rh   r•   r–   r—   r8   r˜   ÚtvÚGÚncolorsÚv0ÚiÚv1Úcrb   r-   r¨   r§   r?   r›   s   &&                     r0   rm   Ú!AxisBackgroundAnnotation.__call__À   s]  € Ø—‘ˆß‘vØ�z‰z�‰Ó ˆØ—,‘,ˆßØ—7‘7ˆDØ—‘‰Bà—7‘7ˆDØ—‘ˆBØ�H‰H�W˜TÓ"ˆØ�H‰H�U˜4Ó ˆØŠ9˜š	Üœ' $ z°$Ó7¸ÀdÓKˆCß”w˜s :×.Ò.Ù“e�ßØ’9 # a¥&˜aØ’9 # a¥&˜aøà’9 !˜aØ’9 !˜aÜ�t˜M×*Ò*Ø×"Ñ"Ô$Ü�T˜-¨Ó-ˆß‘6Ü‹GˆÜ�f“+ˆØ×Ñ  1¥Ó&ˆÜ�qœ˜R›×!ˆAØ×#Ñ# B¥EÓ*ˆBØ˜!�˜W•}Õ%ˆAßˆqßØ�AØ�AØ�U�FØ�C‘Eà�AØ�AØ�E�EØ�S�FÜ˜a¤×&Ò&Ü˜Q˜q  v¸ÀdÔK‘AÜ ¤$×'Ò'Ü˜Q˜q  vÓ.�AØŸZœZ˜ØÐ$>Ö>Ü# A a¬°°!«Ö5ò (ô   ¤*×-Ò-Ü" Q¨°¸fÔE�AØŸZœZ˜ØÐ$>Ö>Ü# A a¬°°!«Ö5ñ (ð —‘�a”Ø‹Bñ7 "ð8 ˆr3   r    Nrp   rx   s   @r0   rž   rž   ·   s   ø‡ € ñò÷:ð :r3   rž   c                   ó6   a € ] tR t^üt o RtR tR tR tRtV t	R# )ÚTickLUz$lookup special cases for tick valuesc                ó@   € VP                  R R4      V n        Wn        R# )Úaccuracyç:Œ0âŽyE>N)rd   r¸   r,   )rV   r,   rW   s   &*,r0   rX   ÚTickLU.__init__þ   s   € ØŸ™ ¨DÓ1ˆŒØŽr3   c                óz   € V P                   pV P                   F  w  r4\        W1,
          4      V8  g   K   R # 	  R# ©TF)r¸   r,   Úabs©rV   Útr¸   r-   rM   s   &&   r0   Ú__contains__ÚTickLU.__contains__  s1   € Ø—=‘=ˆØ—6”6‰CˆAÜ�1•3‹x˜Ö Úñ ñ r3   c                ó°   € V P                   pV P                   F)  w  r4\        W1,
          4      V P                   8  g   K'  Vu # 	  \        R V,          4      h)zcannot locate index %r)r¸   r,   r½   Ú
IndexErrorr¾   s   &&   r0   Ú__getitem__ÚTickLU.__getitem__  sE   € Ø—=‘=ˆØ—6”6‰CˆAÜ�1•3‹x˜Ÿ™Ö%Ø’ñ ô Ð1°AÕ5Ó6Ð6r3   )r,   r¸   N)
rq   rr   rs   rt   ru   rX   rÀ   rÄ   rv   rw   rx   s   @r0   r¶   r¶   ü   s   ø‡ € Ù.òò÷7ð 7r3   r¶   c                   óÄ   a € ] tR tRt o R tR tR tR tR tRR lt	R. / 3R	 lt
RR. 3R
 ltRR. 3R ltRR ltR t]! ]4      tR t]! ]4      tRR ltR tR tRtV tR# )Ú_AxisGi  c                óL   € V P                  V4      p V^ ,          pV#     T# ; i)r(   )rg   )rV   rM   s   &&r0   r�   Ú_AxisG._get_line_pos  s3   € Ø�J‰J�q‹Mˆð	Ø�!•ˆAð ˆøð	ØØˆús   “	 ž#c                ó€   € V P                  V4      p\        WP                  V,           WP                  V,           4      # r*   )r�   r   rj   )rV   r-   r�   r‚   s   &&&&r0   Ú_cxLineÚ_AxisG._cxLine  s/   € Ø×Ñ˜qÓ!ˆÜ�A—w‘w •¨¯7©7°S­=Ó9Ð9r3   c                ó‚   € V P                  V4      p\        V P                  V,           WP                  V,           V4      # r*   )r�   r   ri   )rV   rb   r�   r‚   s   &&&&r0   Ú_cyLineÚ_AxisG._cyLine  s1   € Ø×Ñ˜qÓ!ˆÜ�D—G‘G˜e•O Q¯©°#­°qÓ9Ð9r3   c           	     óæ   € V P                  V4      pV P                  V,           pV P                  V,           p\        Wg4      \        Wg4      rvW,           p\	        WW†V,           W‡V,           .^R7      # ©é   )ÚstrokeLineJoin)r�   rj   rC   rG   r   )	rV   r-   r�   r‚   Ú_3d_dxÚ_3d_dyÚy0Úy1Úx1s	   &&&&&&   r0   Ú	_cxLine3dÚ_AxisG._cxLine3d  s^   € Ø×Ñ˜qÓ!ˆØ�W‰W�u�_ˆØ�W‰W�s�]ˆÜ�R“œC ›JˆBØ�ZˆÜ˜˜b F¥¨2°­iÐ8ÈÔJÐJr3   c                óæ   € V P                  V4      pV P                  V,           pV P                  V,           p\        Wg4      \        Wg4      rvW,           p\	        WaWd,           W‡V,           V.^R7      # rÑ   )r�   ri   rC   rG   r   )	rV   rb   r�   r‚   rÔ   rÕ   Úx0rØ   r×   s	   &&&&&&   r0   Ú	_cyLine3dÚ_AxisG._cyLine3d'  s^   € Ø×Ñ˜qÓ!ˆØ�W‰W�u�_ˆØ�W‰W�s�]ˆÜ�R“œC ›JˆBØ�ZˆÜ˜˜b�i¨¨f­9°RÐ8ÈÔJÐJr3   Nc                ó,  € \        VR R4      pVeJ   \        VRR4      pV P                  ;'       d    V P                  ;'       g    V P                  pWWdV3R l# V P                  ;'       d    V P                  ;'       g    V P
                  pWV3R l# )rÔ   NrÕ   c                 ó   € V! WW$VR 7      # ))rÔ   rÕ   r+   )rM   r—   r8   r9   rÔ   rÕ   s   &&&&&&r0   r1   Ú%_AxisG._getLineFunc.<locals>.<lambda>4  s   € ÉaÐPQÐTUÐkqÕNrr3   c                 ó   € V! WV4      # r*   r+   )rM   r—   r8   r9   s   &&&&r0   r1   rá   7  s
   € ±!°A¸´(r3   )rŽ   rh   rÝ   rÙ   rÎ   rË   )rV   r�   r‚   rŠ   rÔ   rÕ   r9   s   &&&&   r0   r‘   Ú_AxisG._getLineFunc/  s~   € Ü˜ ¨Ó.ˆØÒÜ˜V H¨TÓ2ˆFØ—‘×/Ð/ §¡×AÐA°4·>±>ˆAØ$¨qÀfÓrÐrà—‘×-Ð- §¡×=Ð=°·±ˆAØ$¨qÓ:Ð:r3   c                ó  a€ V P                  W#V
4      p\        V R 4      '       g   V P                  4        S'       d*   V P                  ;'       d    V3R l;'       g    V3R lpMRpV P                   F‘  pV! V4      pV'       d   V! V4      '       d   K#  VVn        VVn        VVn        VVn        VVn	        V	Vn
        Wü9   d.   WÏ,          P                  4        F  w  pp\        VVV4       K  	  VP                  V4       K“  	  R# )r^   c                 ó"   <€ V P                   S9   # r*   )r×   ©ÚlÚexcludes   &€r0   r1   Ú#_AxisG._makeLines.<locals>.<lambda>>  s   ø€ ¨a¯d©d°gªor3   c                 ó"   <€ V P                   S9   # r*   )rØ   ræ   s   &€r0   r1   ré   >  s   ø€ ÈQÏTÉTÐU\Ê_r3   N)r‘   re   rf   rh   r^   r¦   ÚstrokeWidthÚstrokeDashArrayrÓ   ÚstrokeLineCapÚstrokeMiterLimitr’   r“   r¬   )rV   Úgr�   r‚   r¦   rë   rì   rÓ   rí   rî   rŠ   rè   Úspecialsr/   Úexfr¿   rš   ÚarM   s   &&&&&&&&&&&f&      r0   Ú
_makeLinesÚ_AxisG._makeLines9  sØ   ø€ Ø× Ñ  ¨6Ó2ˆÜ�t˜M×*Ò*Ø×"Ñ"Ô$ßØ—,‘,×>Ð>Ô$=×]Ð]ÔC\‰CàˆCØ×!Ô!ˆAÙ˜“G�ß™3˜qŸ6š6¡8Ø +�”Ø +�”Ø$3�Ô!Ø#1�Ô Ø"/�”Ø%5�Ô"Ø”=Ø'�{×0Ñ0Ö2™˜˜!Ü  ! Ažñ  3à—‘�a–ó "r3   c                óÆ  € V P                   pV P                  ;'       g    ^ pV'       Ed"   V'       Ed   V P                  '       Ed   V P                  pV P                  pVe   VfQ   V'       d   \        VR4      '       d   V! 4       pV'       d   Vf
   V^ ,          pVf
   V^,          pMVf   ^ pVf   ^ pV'       g	   V'       d†   V P                  '       d   V P                  p	MV P                  p	V P                  WV	,
          W‰,
          WVV P                  V P                  V P                  V P                  W4\        V R/ 4      R7       V P                  WV. R7       R# )ú)this is only called by a container objectNrm   Ú_gridSpecials)rŠ   rè   rð   )rè   )ÚgridStrokeColorÚgridStrokeWidthÚvisibleGridÚ	gridStartÚgridEndre   rh   ri   rj   ró   ÚgridStrokeDashArrayÚgridStrokeLineJoinÚgridStrokeLineCapÚgridStrokeMiterLimitrŽ   Ú_makeSubGrid)
rV   rï   r˜   rŠ   rè   r³   Úwr—   r8   r•   s
   &&&&&     r0   ÚmakeGridÚ_AxisG.makeGridO  s<  € à× Ñ ˆØ× Ñ ×%Ð% Aˆßˆ1—��t×'×'Ñ'Ø—‘ˆAØ—‘ˆAØŠy˜AšIßœ7 3 z×2Ò2Ù›%�CßØ’y c¨!¥f !Ø’y c¨!¥f !øà’y a !Ø’y a !ß—AØ—<—<�<¨¯©¡Ø!ŸW™W�dØ—‘  D¥&¨­°°D×4LÑ4LÈT×MdÑMdÐei×e{Ñe{ð  }A÷  }Vñ  }Vð  ^dô  ~Eð  FJð  KZð  []ó  ~^�ô  _Ø×Ñ˜! ¨rÐÖ2r3   c                óô  € \        V R^ 4      '       d   V P                  ^ 8”  g   R# V P                  pV P                  ;'       g    ^ pV'       d	   V'       g   R# V P                  pV P
                  pVe   VfQ   V'       d   \        VR4      '       d   V! 4       pV'       d   Vf
   V^ ,          pVf
   V^,          pMVf   ^ pVf   ^ pV'       g	   V'       d“   V P                  '       d   V P                  p	MV P                  p	V P                  4       p
 V P                  WV	,
          W‰,
          WVV P                  V P                  V P                  V P                  W4R7       W n        R# R#   Y n        i ; i)rö   ÚvisibleSubGridNrm   )rŠ   rè   )rŽ   Ú
subTickNumÚsubGridStrokeColorÚsubGridStrokeWidthÚsubGridStartÚ
subGridEndre   rh   ri   rj   Ú_calcSubTicksró   ÚsubGridStrokeDashArrayÚsubGridStrokeLineJoinÚsubGridStrokeLineCapÚsubGridStrokeMiterLimitr^   )rV   rï   r˜   rŠ   rè   r³   r  r—   r8   r•   Úotvs   &&&&&      r0   r  Ú_AxisG._makeSubGride  sG  € ä˜Ð-¨a×0Ò0°T·_±_ÀQÔ5FÉØ×#Ñ#ˆØ×#Ñ#×(Ð( qˆß—Q™Ø×ÑˆØ�O‰OˆØŠ9˜š	ß”w˜s :×.Ò.Ù“e�ßØ’9 # a¥&˜aØ’9 # a¥&˜aøà’9 !˜aØ’9 !˜aß—Ø�|�|ˆ| D§G¡G™TØŸ™�$Ø×$Ñ$Ó&ˆCð'Ø—‘  D¥&¨­°°D×4OÑ4OÐPT×PjÑPjÐko÷  lEñ  lEð  FJ÷  Fbñ  Fbð  jp�ô  Aà#&Ö ñ øð $'Õ ús   ÄAE/ Å/E7c                óŽ   € Vf*   V P                   V P                  3V P                  ,          pVf   WP                  ,           pW3# r*   )ri   rj   rh   r�   )rV   r�   r‚   s   &&&r0   r„   Ú_AxisG.getGridDims  s9   € ØŠ= 4§7¡7¨4¯7©7Ð"3°D·L±LÕ"A˜%ØŠ;˜e§L¡LÕ0˜ØˆyÐr3   c                ó–   € \        V R R4      ^8X  d   R# V P                  P                  pV^ ,          R8H  ;'       g    VR,          R8H  # )Ú
_dataIndexNTÚY:Né   NÚAdjY©rŽ   Ú	__class__rq   ©rV   Úacns   & r0   rh   Ú_AxisG.isYAxis„  sB   € Ü�4˜ TÓ*¨AÔ-±dØ�n‰n×%Ñ%ˆØ�1�v�s‰{×-Ð-˜c "�g v™oÐ-r3   c                ó–   € \        V R R4      ^ 8X  d   R# V P                  P                  pV^ ,          R8H  ;'       g    VR,          R8H  # )r  NTÚXºNé   NÚNormalDateXr  r  s   & r0   ÚisXAxisÚ_AxisG.isXAxisŠ  sC   € Ü�4˜ TÓ*¨AÔ-±dØ�n‰n×%Ñ%ˆØ�1�v�s‰{×5Ð5˜c #�h¨Ñ5Ð5r3   c                óh   € Vf   \        V R. 4       V F  pVP                  V! V 4      4       K  	  R # )NÚannotations)rŽ   r¬   )rV   rï   ÚAr-   s   &&& r0   ÚaddAnnotationsÚ_AxisG.addAnnotations�  s+   € ØŠ9”g˜d =°Ô4ÛˆAØ�E‰E‘!�D“'ŽNó r3   c                ó2  € \        V R . 4      R,          p/ pR Fe  p. P                  p. P                  pV F'  p\        Wc^ 4      '       d   V! V4       K  V! V4       K)  	  VP                  W#&   VP                  VR&   Kg  	  VR;;,          V,          uu&   V# )r'  :NNNÚlate©ÚearlyÚ
beforeAxisÚ	afterAxisÚbeforeTicksÚ
afterTicksÚbeforeTickLabelsÚafterTickLabelsr,  )rŽ   ÚappendÚ__self__)rV   r(  ÚDrM   ÚRÚPrò   s   &      r0   Ú_splitAnnotationsÚ_AxisG._splitAnnotations•  s‹   € Ü�D˜ rÓ*¨1Õ-ˆØˆó*ˆAð —	‘	ˆAØ—	‘	ˆAÛ�Ü˜1˜q—>’>Ù�a–Dá�a–Dñ	 ð
 —:‘:ˆA‰DØ—:‘:ˆAˆa‹Dñ*ð 	
ˆ&�	�Q�‹	Øˆr3   c                ó˜  € \        4       pV P                  4       pV P                  WR ,          4       V P                  '       dî   V P                  WR,          4       VP	                  V P                  4       4       V P                  WR,          4       V P                  WR,          4       VP	                  V P                  4       4       V P                  WR,          4       V P                  WR,          4       VP	                  V P                  4       4       V P                  WR,          4       V P                  WR,          4       V# r-  )r   r:  r)  Úvisibler¬   ÚmakeAxisÚ	makeTicksÚmakeTickLabels)rV   rï   r(  s   &  r0   ÚdrawÚ_AxisG.draw§  sô   € Ü‹GˆØ×"Ñ"Ó$ˆØ×Ñ˜A �jÔ)à�<�<ˆ<Ø×Ñ  L¥/Ô2Ø�E‰E�$—-‘-“/Ô"Ø×Ñ  K¥.Ô1Ø×Ñ  MÕ"2Ô3Ø�E‰E�$—.‘.Ó"Ô#Ø×Ñ  L¥/Ô2Ø×Ñ Ð$6Õ"7Ô8Ø�E‰E�$×%Ñ%Ó'Ô(Ø×Ñ Ð$5Õ"6Ô7à×Ñ˜A �iÔ(Øˆr3   )r^   r*   ©NN)rq   rr   rs   rt   r�   rË   rÎ   rÙ   rÝ   r‘   ró   r  r  r„   rh   Úpropertyr$  r)  r:  rA  rv   rw   rx   s   @r0   rÇ   rÇ     s–   ø‡ € òò:ò:òKòKô;ð BFð  OQð  []ô ð, !¨°Rô 3ð, !%¨D¸ô 'ô4ò
.ñ �wÓ€Gò6ñ �wÓ€Gôò
÷$ð r3   rÇ   c                   óJ   a € ] tR tRt o ]! ]]! ]RR7      R7      tR t	Rt
V tR# )ÚCALabeliº  z?where in the category range [0,1] the labels should be anchored©Údesc)ÚBASEÚlabelPosFracc                óX   € \         P                  ! V 3/ VB  V P                  R R7       R# )ç      à?)rJ  N)r    rX   Ú_setKeywords©rV   Úkws   &,r0   rX   ÚCALabel.__init__¾  s+   € Ü×Ò˜$Ñ$ Ò$Ø×ÑØ"ð 	ö 	r3   r+   N)rq   rr   rs   rt   ÚAttrMapr    ÚAttrMapValuer   Ú_attrMaprX   rv   rw   rx   s   @r0   rF  rF  º  s&   ø‡ € Ù˜HÙ# HÐ3tÔuô
€H÷ð r3   rF  c                   ó   a € ] tR tRt o Rt^t]! Rb/ R]! ]RR7      bR]! ]RR7      bR]! ]R	R7      bR
]! ]RR7      bR]! ]RR7      bR]! ]	RR7      bR]! ]
RR7      bR]! ]RR7      bR]! ]! ^ ^^4      RR7      bR]! ]! ^ ^^4      RR7      bR]! ]	RR7      bR]! ]	RR7      bR]! ]
RR7      bR]! ]RR7      bR ]! ]! ^ ^^4      R!R7      bR"]! ]! ^ ^^4      R#R7      bR$]! ]	R%R7      bR&]! ]R'R7      bR(]! ]R)R7      bR*]! ]R+R7      bR,]! R-R.R7      bR/]! ]R0R7      bR1]! R-R2R7      bR3]! ]R4R7      bR5]! ]R6R7      bR7]! ]! R8R9R:4      R;4      bR<]! ]! R=R>R?R@4      RAR7      bRB]! ]RCR7      bRD]! ]RER7      bRF]! ]
RGR7      bRH]! ]	RIR7      bRJ]! ]	RKR7      bRL]! R-RMR7      bRN]! ]	ROR7      bRP]! ]	RQR7      bRR]! ]! RSRTRURV4      RW4      bRX]! ]RYR7      b tRZ tR[ tRcR\ ltR] tR^ tR_ tR` tRatV tR-# )dÚCategoryAxisiÅ  z+Abstract category axis, unusable in itself.r=  úDisplay entire object, if true.rG  ÚvisibleAxisúDisplay axis line, if true.ÚvisibleTicksúDisplay axis ticks, if true.ÚvisibleLabelsúDisplay axis labels, if true.rú   úDisplay axis grid, if true.rë   úWidth of axis line and ticks.r¦   úColor of axis line and ticks.rì   úDash array used for axis line.rí   ú#Line cap 0=butt, 1=round & 2=squarerÓ   ú$Line join 0=miter, 1=round & 2=bevelrî   ú$miter limit control miter line joinsrù   úWidth of grid lines.rø   úColor of grid lines.rý   úDash array used for grid lines.rÿ   ú(Grid Line cap 0=butt, 1=round & 2=squarerþ   ú)Grid Line join 0=miter, 1=round & 2=bevelr   ú)Grid miter limit control miter line joinsrû   ú#Start of grid lines wrt axis originrü   ú!End of grid lines wrt axis originÚdrawGridLastú-if true draw gridlines after everything else.ÚlabelsNúHandle of the axis labels.ÚcategoryNameszList of category names.rƒ   úJoin both axes if true.ÚjoinAxisPosú*Position at which to join with other axis.ÚreverseDirectionú#If true reverse category direction.ÚstyleÚparallelÚstackedÚparallel_3dz$How common category bars are plottedÚlabelAxisModeÚhighÚlowrk   Úaxispmvú*Like joinAxisMode, but for the axis labelsÚ	tickShiftzTick shift typicallyÚtickStrokeWidthúWidth of ticks if specified.ÚtickStrokeColorúColor of ticks if specified.ÚloPadz*extra inner space before start of the axisÚhiPadz'extra inner space after end of the axisr'  úlist of annotationsÚloLLenú*extra line length before start of the axisÚhiLLenú'extra line length after end of the axisÚskipGridÚnoneÚtopÚbothÚbottomú'grid lines to skip top bottom both noneÚinnerTickDrawú#Callable to replace _drawInnerTicksc                ó~  € V P                   P                  R 8w  g   Q R4       h^2V n        ^2V n        ^dV n        ^ V n        ^V n        ^V n        ^V n        ^V n	        ^ V n
        RV n        ^V n        \        R,          V n        \        R,          V n        \        R,          ;V n        V n        \        R,          ;V n        V n        \        R,          ;V n        V n        RV n        \        R,          V n        \        R,          V n        R	;V n        V n        \        R,          V n        \        R,          V n        \        R,          V n        \7        \8        4      V n        R	V n        R	V n        R	V n         R	V n!        R
V n"        ^ V n#        RV n$        R	V n%        ^ V n&        ^ V n'        ^ V n(        ^ V n)        ^ V n*        R	# )rU  z(Abstract Class CategoryAxis InstantiatedFr¦   rì   rÓ   rí   rî   ç      Ð?Nrk   rw  )+r  rq   ri   rj   r�   Ú	_catCountr=  rW  rY  r[  rú   rl  rë   r   r¦   rì   rþ   rÓ   rÿ   rí   r   rî   rù   rø   rý   rû   rü   r   rF  rn  rp  rƒ   rr  ÚjoinAxisModerz  rt  rv  Ú_labelTextFormatr  r„  r…  r‡  r‰  ©rV   s   &r0   rX   ÚCategoryAxis.__init__ð  sž  € Ø�~‰~×&Ñ&¨Ô6ÐbÐ8bÓbÐ6ð ˆŒØˆŒØˆŒØˆŒð ˆŒØˆÔØˆÔØˆÔØˆÔØ!ˆÔàˆÔÜ)¨-Õ8ˆÔÜ-Ð.?Õ@ˆÔä8FÐGWÕ8XÐXˆÔ $Ô"5Ü6DÀ_Õ6UÐUˆÔ Ô!3Ü<JÐK]Õ<^Ð^ˆÔ! DÔ$9Ø#ˆÔÜ-¨mÕ<ˆÔÜ#1Ð2CÕ#DˆÔ Ø(,Ð,ˆŒ˜œä,Ð-=Õ>ˆÔÜ+¨OÕ<ˆÔÜ .Ð/AÕ BˆÔä-¬gÓ6ˆŒð "ˆÔØˆŒØˆÔØ ˆÔØ#ˆÔØ !ˆÔØˆŒ
ð !%ˆÔØˆŒØˆŒ
ØˆŒ
ØˆŒØˆŽr3   c                óf   € \        V4      V n        \        V4      V n        \        V4      V n        R # r*   ©Úfloatri   rj   r�   ©rV   r-   rb   Úlengths   &&&&r0   ÚsetPositionÚCategoryAxis.setPosition&  ó#   € ä˜“(ˆŒÜ˜“(ˆŒÜ˜V“}ˆŽr3   c                ó  € \        \        \        \        V4      4      4      V n        T;'       gS    V P
                  V P                  ,
          V P                  ,
          \        V P                  ;'       g    ^4      ,          V n	        V P                  4        V P                  R8X  dN   \        V P                  4       UUu. uF$  p\        V Uu. uF  qDV,          NK  	  up4      NK&  	  uppV n        R# R# u upi u uppi )rÒ   r}  N)rG   r6   r7   r;   r•  r�   r„  r…  rœ  Ú	_barWidthÚ_calcTickmarkPositionsrz  r©   ÚsumÚ_pmv)rV   ÚmultiSeriesÚbarWidthr±   Úseriess   &&&  r0   Ú	configureÚCategoryAxis.configure,  sº   € ÜœT¤#¤c¨+Ó"6Ó7Ó8ˆŒØ!×fÐf t§|¡|°D·J±JÕ'>¸t¿z¹zÕ'IÌ5ÐQU×Q_ÑQ_×QdÐQdÐcdÓKeÕ&eˆŒØ×#Ñ#Ô%Ø×Ñ Ô*ÜMRÐSW×SaÑSaÔMbÔcÑMbÈœ±kÓB±k¨F QŸi˜i±kÑBÖCÑMbÒcˆDŽIñ +ùÚBùÓcs   ÃC>ÃC9Ã!C>Ã9C>c                ó8  € V P                   pV P                  '       d)   \        V4       Uu. uF  q"R ,           NK  	  upV n        R# V P                  '       d   \        \        RV4      4      V n        R# \        \        V^,           4      4      V n        R# u upi )rL  Néÿÿÿÿ)r•  r  r©   r^   rt  r6   )rV   Únr¿   s   &  r0   r¤  Ú#CategoryAxis._calcTickmarkPositions3  sl   € Ø�N‰NˆØ�>�>ˆ>Ü/4°Q¬xÓ8©x¨! #§ ©xÑ8ˆDÖà×$×$Ð$Ü#'¬¨b°«Ó#4�Ö ä#'¬¨a°­c«
Ó#3�Ö ùò  9s   ¬Bc                ó^   € V P                   '       d   V P                  V,
          ^,
          pV# ©rÒ   )rt  r•  ©rV   Úidxs   &&r0   Ú_scaleÚCategoryAxis._scale=  s%   € Ø× × Ð ¨¯©°sÕ(:¸1Õ(< #Øˆ
r3   c                ó<   € V P                  V4      V P                  3# )z/Returns the position and width in drawing units©ÚloScaler£  r²  s   &&r0   rg   ÚCategoryAxis.scaleA  s   € à—‘˜SÓ! 4§>¡>Ð2Ð2r3   c                óT   € V P                  V4      RV P                  ,          ,           # )z-Returns the bar mid position in drawing unitsrL  r·  r²  s   &&r0   ÚmidScaleÚCategoryAxis.midScaleE  s   € à�|‰|˜CÓ  3 t§~¡~Õ#5Õ5Ð5r3   ))r£  r•  r—  r�   r¦  r^   ri   rj   rp  rl  rü   rû   rø   rý   rÿ   rþ   r   rù   r‰  r…  rƒ   r–  rr  rz  rn  r‡  r„  rt  r¦   rì   rí   rÓ   rî   rë   rv  r  r=  rW  rú   r[  rY  r+   r*   )rq   rr   rs   rt   ru   Ú_nodocrQ  rR  r   r   r	   r   r
   r   r   r   rS  rX   rŸ  rª  r¤  r´  rg   r»  rv   rw   rx   s   @r0   rU  rU  Å  s'  ø‡ € Ù1Ø€FÙò &
Ù˜yÐ/PÕQð&
á" 9Ð3PÕQð&
ñ $ IÐ4RÕSð&
ñ % YÐ5TÕUð	&
ñ
 # 9Ð3PÕQð&
ñ # 8Ð2QÕRð&
ñ # =Ð7VÕWð&
ñ 'Ð'<ÐCcÕdð&
ñ %¡U¨1¨Q¨q£\Ð7\Õ]ð&
ñ &¡e¨A¨a°£lÐ8^Õ_ð&
ñ (¨Ð6\Õ]ð&
ñ ' xÐ6LÕMð&
ñ ' }Ð;QÕRð&
ñ +Ð+@ÐGhÕið&
ñ )©¨q°°1«Ð;eÕfð&
ñ  *©%°°!°A«,Ð<gÕhð!&
ñ"  ,¨HÐ:eÕfð#&
ñ$ ! Ð6[Õ\ð%&
ñ& ˜~Ð4WÕXð'&
ñ( $ IÐ4cÕdð)&
ñ* ˜dÐ)EÕFð+&
ñ, %Ð%:ÐAZÕ[ð-&
ñ.   Ð+DÕEð/&
ñ0 # >Ð8dÕeð1&
ñ2 (¨	Ð8]Õ^ð3&
ñ4 ™U :¨i¸ÓFÐGmÔnð5&
ñ6 %¡U¨6°%¸À	Ó%JÐQ}Õ~ð7&
ñ8 ! Ð1GÕHð9&
ñ: ' ~Ð<ZÕ[ð;&
ñ< ' }Ð;YÕZð=&
ñ> ˜XÐ,XÕYð?&
ñ@ ˜XÐ,UÕVðA&
ñB # 4Ð-BÕCðC&
ñD ˜hÐ-YÕZðE&
ñF ˜hÐ-VÕWðG&
ñH  ¡ f¨U°6¸(Ó CÐDmÔnðI&
ñJ %Ð%5Ð<aÕbðK&
€HòP4òl%ôdò4òò3÷6ð 6r3   rU  c                 ón   € V P                   '       g#   Q R V P                  P                  ,          4       hR# )z/Cannot connect to other axes (%s), but Y- ones.N)rh   r  rq   ©rk   s   &r0   Ú_assertYAxisrÀ  I  ó%   € Ø�<�<ˆ<ÐdÐJÈTÏ^É^×MdÑMdÕdÓdŠ<r3   c                 ón   € V P                   '       g#   Q R V P                  P                  ,          4       hR# )z/Cannot connect to other axes (%s), but X- ones.N)r$  r  rq   r¿  s   &r0   Ú_assertXAxisrÃ  K  rÁ  r3   c                   ój   a € ] tR tRt o ^ t]R 4       t]R 4       tR tRR lt	R t
R tRR	 ltR
tV tR# )Ú_XTicksiN  c                ó0   € \        V R V P                  4      # )r€  )rŽ   rë   r˜  s   &r0   ÚactualTickStrokeWidthÚ_XTicks.actualTickStrokeWidthQ  ó   € ä�tÐ-¨d×.>Ñ.>Ó?Ð?r3   c                ó0   € \        V R V P                  4      # )r‚  )rŽ   r¦   r˜  s   &r0   ÚactualTickStrokeColorÚ_XTicks.actualTickStrokeColorU  rÉ  r3   c                ó   € \        V R R4      pV'       d   V! WW#4       R# V'       g	   V'       dž   V P                  pV P                  pV'       d2   V'       d   V'       g
   We,          pMV'       d   V'       g	   We,          pV P                  W1V) V P                  WPP
                  V P                  V P                  V P                  4	       R# R# )r‘  N)	rŽ   rÇ  Ú_tickTweaksró   rË  rì   rÓ   rí   rî   )rV   ÚtUÚtDrï   ÚitdÚsWÚtWs   &&&&   r0   Ú_drawTicksInnerÚ_XTicks._drawTicksInnerY  s¢   € Ü�d˜?¨4Ó0ˆßÙ�˜Öß—2Ø×+Ñ+ˆBØ×!Ñ!ˆBßßŸbØ�‘Bß§Ø��BØ�O‰O˜A "  T×%?Ñ%?À×CWÑCWÐX\×XkÑXkÐlp×l~Ñl~ð  @D÷  @Uñ  @Uö  Vñ r3   Nc                óv   € T;'       g    \        4       pV P                  '       d   V P                  WV4       V# r*   )r   rY  rÔ  )rV   rÏ  rÐ  rï   s   &&&&r0   Ú
_drawTicksÚ_XTicks._drawTicksg  s0   € Ø�LˆL”“ˆØ××ÐØ× Ñ   qÔ)Øˆr3   c                óÔ   € \        V R ^ 4      '       dH   V P                  ^ 8”  d5   V P                  4       p ^V n        V P	                  WV4       V =W@n        R# R# R#   T =Y@n        i ; i)ÚvisibleSubTicksN)rŽ   r  r  Ú_subTickingrÔ  r^   )rV   rÏ  rÐ  rï   r  s   &&&& r0   Ú_drawSubTicksÚ_XTicks._drawSubTicksm  sm   € Ü�4Ð)¨!×,Ò,°·±ÀÔ1BØ×$Ñ$Ó&ˆCð'Ø#$�Ô Ø×$Ñ$ R¨1Ô-àÐ$Ø#&Ö ñ 2CÑ,øð Ð$Ø#&Õ ús   ¶A Á
A'c                ó"  € V P                   p V P                  \        V R R4      4      V n         V P                  V P                  V P
                  4      pV P                  \        V R^ 4      \        V R^ 4      V4       VWn         #   Yn         i ; i©ÚtickAxisModerk   Ú	subTickHiÚ	subTickLo)rj   Ú_labelAxisPosrŽ   r×  ÚtickUpÚtickDownrÜ  )rV   Úyoldrï   s   &  r0   r?  Ú_XTicks.makeTicksw  sw   € Ø�W‰Wˆð	Ø×(Ñ(¬°°nÀVÓ)LÓMˆDŒGØ—‘ §¡¨D¯M©MÓ:ˆAØ×Ñœw t¨K¸Ó:¼7À4ÈÐTUÓ;VÐWXÔYØà�Gø�d�Gúó   ŽA1B ÂBc                óÜ   € V P                   pV'       dN   T;'       g    V P                  pVR 8X  d   VP                  # VR8X  d   VP                  VP                  ,           # V P                  # ©r|  r{  )rƒ   rz  rj   r�   ©rV   Úmoderk   s   && r0   rã  Ú_XTicks._labelAxisPos�  óT   € Ø�}‰}ˆßØ×-Ð-˜4×-Ñ-ˆDØ�uŒ}Ø—w‘w�Ø˜”Ø—w‘w §¡Õ-Ð-Ø�w‰wˆr3   )rÛ  r^   rj   r*   )rq   rr   rs   rt   rÎ  rD  rÇ  rË  rÔ  r×  rÜ  r?  rã  rv   rw   rx   s   @r0   rÅ  rÅ  N  sS   ø‡ € Ø€Kàñ@ó ð@ð ñ@ó ð@òVôò'ò÷ò r3   rÅ  c                   ó0   a € ] tR tRt o RR ltR tRtV tR# )Ú_YTicksi‹  Nc                óÜ   € V P                   pV'       dN   T;'       g    V P                  pVR 8X  d   VP                  # VR8X  d   VP                  VP                  ,           # V P                  # rê  )rƒ   rz  ri   r�   rë  s   && r0   rã  Ú_YTicks._labelAxisPos�  rî  r3   c                ó"  € V P                   p V P                  \        V R R4      4      V n         V P                  V P                  V P
                  4      pV P                  \        V R^ 4      \        V R^ 4      V4       VWn         #   Yn         i ; irß  )ri   rã  rŽ   r×  Ú	tickRightÚtickLeftrÜ  )rV   Úxoldrï   s   &  r0   r?  Ú_YTicks.makeTicks—  sw   € Ø�W‰Wˆð	Ø×(Ñ(¬°°nÀVÓ)LÓMˆDŒGØ—‘ §¡¨t¯}©}Ó=ˆAØ×Ñœw t¨K¸Ó:¼7À4ÈÐTUÓ;VÐWXÔYØà�Gø�d�Gúrè  )ri   r*   )rq   rr   rs   rt   rã  r?  rv   rw   rx   s   @r0   rð  rð  ‹  s   ø‡ € ô÷ð r3   rð  c                   ó²   a € ] tR tRt o Rt]! ]]! ]RR7      ]! ]RR7      ]! ]	! RRRR	R
4      RR7      R7      t
^ tR tR tRR ltR tR tR tR tRtV tR
# )ÚXCategoryAxisi¡  zX/category axisúTick length up the axis.rG  úTick length down the axis.r�  r�  ÚvalueÚpointsNúIMode used for connecting axis ('bottom', 'top', 'value', 'points', None).)rI  rä  rå  r–  c                ó�   € \         P                  V 4       R V P                  n        RV P                  n        ^ V n        ^V n        R# ©r®  Néûÿÿÿ)rU  rX   rn  Ú	boxAnchorÚdyrä  rå  r˜  s   &r0   rX   ÚXCategoryAxis.__init__¯  s7   € Ü×Ñ˜dÔ#Ø #ˆ�‰ÔØˆ�‰Œð ˆŒØˆŽr3   c                ó  € V P                  ^^F^Œ4       V P                  R.4       . ROV n        RV P                  n        RV P                  ^,          n        ^ZV P                  ^,          n        \        ^È^d4      pVP                  V 4       V# )é   r®  r8   ©é
   é   r  é(   é2   )ÚOneÚTwoÚThreeÚFourÚFive©rŸ  rª  rp  rn  r  Úangler   r¬   ©rV   rŒ   s   & r0   ÚdemoÚXCategoryAxis.demo¸  st   € Ø×Ñ˜˜R Ô%Ø�‰Ð(Ð)Ô*â@ˆÔà #ˆ�‰ÔØ#&ˆ�‰�A�Ô Ø!ˆ�‰�A�Ôä�C˜ÓˆØ	�‰ˆdŒØˆr3   c                ó  € \        V4       VR8X  d   VP                  V n        R# VR8X  d%   VP                  VP                  ,           V n        R# VR8X  d   VP                  V4      V n        R# VR8X  d	   W0n        R# R# )ú!Join with y-axis using some mode.r�  r�  rü  rý  N©rÀ  rj   r�   rg   ©rV   ÚyAxisrì  Úposs   &&&&r0   Ú
joinToAxisÚXCategoryAxis.joinToAxisÆ  sa   € ä�UÔØ�8ÔØ—h‘hˆDŽGØ�UŒ]Ø—h‘h §¡Õ.ˆDŽGØ�WŒ_Ø—k‘k #Ó&ˆDŽGØ�XÔØŽGñ r3   c                óÌ   € V P                   pV'       dP   V P                  pVR9   d   V P                  WR7       R# VR9   d    V P                  WV P                  R7       R# R# R# ©r�  ©rì  ©rì  r  N)r�  r�  ©rü  rý  ©rƒ   r–  r  rr  ©rV   ÚjaÚjams   &  r0   Ú_joinToAxisÚXCategoryAxis._joinToAxisÒ  óY   € Ø�]‰]ˆßØ×#Ñ#ˆCØÐ'Ô'Ø—‘ �Ö-ØÐ+Ô+Ø—‘ °$×2BÑ2B�ÖCñ ,ñ	 r3   c                óŠ   € V P                   V P                  ,           V P                  V4      V P                  ,          ,           # )z'returns the x position in drawing units)ri   r„  r´  r£  r²  s   &&r0   r¸  ÚXCategoryAxis.loScaleÛ  s,   € à�w‰w˜Ÿ™Õ# d§k¡k°#Ó&6°t·~±~Õ&EÕEÐEr3   c                ó¼  € \        4       pV P                  4        V P                  '       g   V# \        V P                  V P
                  ,
          V P                  V P                  V P                  ,           V P                  ,           V P                  4      pV P                  Vn	        V P                  Vn
        V P                  Vn        VP                  V4       V# r*   ©r   r'  rW  r   ri   r‡  rj   r�   r‰  r¦   rë   rì   r¬   ©rV   rï   rk   s   &  r0   r>  ÚXCategoryAxis.makeAxisß  ó�   € Ü‹GˆØ×ÑÔØ××Ð¨ ä�D—G‘G˜DŸK™KÕ'¨¯©°$·'±'¸D¿L¹LÕ2HÈÏÉÕ2TÐVZ×V]ÑV]Ó^ˆØ×+Ñ+ˆÔØ×+Ñ+ˆÔØ#×3Ñ3ˆÔØ	�‰ˆdŒàˆr3   c                ód  € \        4       pV P                  '       g   V# V P                  pVEe�   V P                  p\	        V4      pV P
                  pV P                  pV P                  4       pV P                  pV P                  R8X  d   V P                  MR p	\        V4       EF  p
V'       d   W:,
          ^,
          pMT
pW´8¼  d   K&  W£,
          pWÀP                  9   d   V P                  V,          pMV P                  V
,          pV	'       d,   VP                  pW›,          ;qìn
        V^ 8  d
   VR,          pM^ pVP                  pWŠV,           V,          ,           pVP                  VW},           4       TP!                  W+,          ;'       g    R4       VP#                  V4       EK	  	  V# ©Nr}  Ú éþÿÿÿ)r   r[  rp  r•  r;   rt  r£  rã  ri   rz  r¦  r©   rn  r  rJ  Ú	setOriginÚsetTextr¬   )rV   rï   rp  ÚcatCountr®  rt  r¨  rj   ri   Úpmvr±   ÚicÚlabelÚ_dyrM   Úlpfr-   s   &                r0   r@  ÚXCategoryAxis.makeTickLabelsì  sV  € Ü‹Gˆà×!×!Ð!¨! 8à×*Ñ*ˆØÓ$Ø—~‘~ˆHÜ�MÓ"ˆAØ#×4Ñ4ÐØ—~‘~ˆHØ×#Ñ#Ó%ˆBØ—‘ˆBØ#×1Ñ1°9Ô<�$—)’)À$ˆCä˜8—_�ß#¨(­*°Q­,¡RØ�bØ”5™(Ø•j�ØŸK™KÔ'Ø ŸK™K¨Õ.‘Eà ŸK™K¨�N�EßØŸ(™(�CØ%(¥WÐ,�Aœ
Ø˜”s˜C 2�I˜Cøà�CØ×(Ñ(�Ø˜C�% 8Õ+Õ+�Ø—‘  "¥&Ô)Ø—‘˜mÕ/×5Ð5°2Ô6Ø—‘�e—ñ' %ð* ˆr3   )rj   rp  rå  rä  ©r�  N©rq   rr   rs   rt   ru   rQ  rU  rR  r   r
   rS  r  rX   r  r  r'  r¸  r>  r@  rv   rw   rx   s   @r0   rù  rù  ¡  sz   ø‡ € Ùá˜LÙ˜hØ+ô-á Ø-ô/á#¡E¨(°E¸7ÀHÈdÓ$SØ\ô^ô
€Hð €Jòòô
òDòFò÷$ð $r3   rù  c            
       óª   a € ] tR tRt o Rt]! ]]! ]RR7      ]! ]RR7      ]! ]	! R4      RR7      R7      t
^tR	 tR
 tRR ltR tR tR tR tRtV tR# )ÚYCategoryAxisi  zY/category axisúTick length left of the axis.rG  úTick length right of the axis.NúIMode used for connecting axis ('left', 'right', 'value', 'points', None).)rI  rõ  rô  r–  c                ó�   € \         P                  V 4       R V P                  n        RV P                  n        ^V n        ^ V n        R# ©r8   Nr  )rU  rX   rn  r  Údxrõ  rô  r˜  s   &r0   rX   ÚYCategoryAxis.__init__   s7   € Ü×Ñ˜dÔ#Ø #ˆ�‰ÔØˆ�‰Œð ˆŒØˆŽr3   c                ó  € V P                  ^2^
^P4       V P                  R.4       . ROV n        RV P                  n        RV P                  ^,          n        ^ZV P                  ^,          n        \        ^È^d4      pVP                  V 4       V# )r  r8   r—   )r  r	  r  )r  r  r  r  r  s   & r0   r  ÚYCategoryAxis.demo)  sr   € Ø×Ñ˜˜R Ô$Ø�‰˜
�|Ô$Ú2ˆÔà #ˆ�‰ÔØ#&ˆ�‰�A�Ô Ø!ˆ�‰�A�Ôä�C˜ÓˆØ	�‰ˆdŒØˆr3   c                ó<  € \        V4       VR8X  d   VP                  R,          V n        R# VR8X  d,   VP                  VP                  ,           R,          V n        R# VR8X  d    VP                  V4      R,          V n        R# VR8X  d   VR,          V n        R# R# ©z!Join with x-axis using some mode.Úleftç      ð?Úrightrü  rý  N©rÃ  ri   r�   rg   ©rV   ÚxAxisrì  r  s   &&&&r0   r  ÚYCategoryAxis.joinToAxis6  sv   € ô 	�UÔØ�6Œ>Ø—h‘h •nˆDŽGØ�WŒ_Ø—x‘x %§-¡-Õ/°3Õ6ˆDŽGØ�WŒ_Ø—k‘k #Ó&¨Õ,ˆDŽGØ�XÔØ˜C•iˆDŽGñ r3   c                óÌ   € V P                   pV'       dP   V P                  pVR9   d   V P                  WR7       R# VR9   d    V P                  WV P                  R7       R# R# R# ©rM  r   r!  N)rM  rO  r"  r#  r$  s   &  r0   r'  ÚYCategoryAxis._joinToAxisC  r)  r3   c                óh   € V P                   V P                  V4      V P                  ,          ,           # )z'Returns the y position in drawing units)rj   r´  r£  r²  s   &&r0   r¸  ÚYCategoryAxis.loScaleL  s#   € à�w‰w˜Ÿ™ SÓ)¨$¯.©.Õ8Õ8Ð8r3   c                ó¼  € \        4       pV P                  4        V P                  '       g   V# \        V P                  V P
                  V P                  ,
          V P                  V P
                  V P                  ,           V P                  ,           4      pV P                  Vn	        V P                  Vn
        V P                  Vn        VP                  V4       V# r*   ©r   r'  rW  r   ri   rj   r‡  r�   r‰  r¦   rë   rì   r¬   r.  s   &  r0   r>  ÚYCategoryAxis.makeAxisP  s�   € Ü‹GˆØ×ÑÔØ××Ð¨ ä�D—G‘G˜TŸW™W T§[¡[Õ0°$·'±'¸4¿7¹7ÀTÇ\Á\Õ;QÐRV×R]ÑR]Õ;]Ó^ˆØ×+Ñ+ˆÔØ×+Ñ+ˆÔØ#×3Ñ3ˆÔØ	�‰ˆdŒàˆr3   c                ó€  € \        4       pV P                  '       g   V# V P                  pVEe�   V P                  p\	        V4      pV P
                  pV P                  pV P                  pV P                  4       pV P                  p	V P                  R8X  d   V P                  MR p
\        V4       EF  pV'       d   W;,
          ^,
          pMTpWÄ8¼  d   K&  W³,
          pWÐP                  9   d   V P                  V,          pMV P                  V,          pVP                  pW›V,           V,          ,           pV
'       d-   VP                  pW¬,          ;pVn        V^ 8  d
   VR,          pM^ pVP                  VV,           V4       TP!                  W,,          ;'       g    R4       VP#                  V4       EK  	  V# r2  )r   r[  rp  r•  r;   rt  r£  rn  rã  rj   rz  r¦  r©   rJ  rG  r5  r6  r¬   )rV   rï   rp  r7  r®  rt  r¨  rn  ri   rj   r8  r±   r9  r:  r<  rb   Ú_dxrM   s   &                 r0   r@  ÚYCategoryAxis.makeTickLabels]  sc  € Ü‹Gˆà×!×!Ð!¨! 8à×*Ñ*ˆØÓ$Ø—~‘~ˆHÜ�MÓ"ˆAØ#×4Ñ4ÐØ—~‘~ˆHØ—[‘[ˆFØ×#Ñ#Ó%ˆBØ—‘ˆBØ#×1Ñ1°9Ô<�$—)’)À$ˆCä˜8—_�ß#¨(­*°Q­,¡RØ�bØ”5™(Ø•j�ØŸK™KÔ'Ø ŸK™K¨Õ.‘Eà ŸK™K¨�N�EØ×(Ñ(�Ø˜C�% 8Õ+Õ+�ßØŸ(™(�CØ%(¥WÐ,�A˜œ
Ø˜”s˜C 2�I˜Cøà�CØ—‘  3¥¨Ô*Ø—‘˜mÕ/×5Ð5°2Ô6Ø—‘�e—ñ' %ð( ˆr3   )ri   rp  rõ  rô  ©rM  rO  rü  rý  N©rM  Nr?  rx   s   @r0   rA  rA    sr   ø‡ € Ùá˜LÙ Ø0ô2á  Ø1ô3á#¡EÐ*TÓ$UØ\ô^ô
€Hð €Jòòô òDò9ò÷$ð $r3   rA  c                   ó*   a € ] tR tRt o RtR tRtV tR# )ÚTickLabelleriƒ  zlAbstract base class which may be used to indicate a change
in the call signature for callable label formats
c                ó   € R # )zAbstract class instance calledr+   )rV   rk   rü  s   &&&r0   rm   ÚTickLabeller.__call__‡  s   € Ù/r3   r+   N©rq   rr   rs   rt   ru   rm   rv   rw   rx   s   @r0   rb  rb  ƒ  s   ø‡ € ñ÷0ð 0r3   rb  c                 ó   € R V ,          # )z%.12gr+   r`   s   &r0   r1   r1   ‹  s   €  7¨Q¦;r3   c                   óø  a € ] tR tRt o Rt]! R«/ R]! ]! ]]	! R4      34      RR7      bR]! ]RR7      bR	]! ]R
R7      bR]! ]RR7      bR]! ]RR7      bR]! ]RR7      bR]! ]
RR7      bR]! ]RR7      bR]! ]RR7      bR]! ]	! ^ ^^4      RR7      bR]! ]	! ^ ^^4      RR7      bR]! ]
RR7      bR]! ]
RR7      bR]! ]R R7      bR!]! ]R"R7      bR#]! ]	! ^ ^^4      R$R7      bR%]! ]	! ^ ^^4      R&R7      bR']! ]
R(R7      bR)]! ]R*R7      bR+]! ]R,R7      bR-]! ]R.R7      bR/]! ]
R0R7      bR1]! ]
R2R7      bR3]! R4R5R7      bR6]! ]	! R7R8R94      R:R7      bR;]! R4R<R7      bR=]! R4R>R7      bR?]! ]R@R7      bRA]! ]RBR7      bRC]! ]RDR7      bRE]! ]RFR7      bRG]! ]RHR7      bRI]! ]! ]]! ]
^ ^^RJ7      34      RKR7      bRL]! ]! ]]! ]
^ ^^RJ7      34      RMR7      bRN]! ]! ]! ]4      ]! ]^ ^^RJ7      34      ROR7      bRP]! ]	! RQRRRSRT4      RU4      bRV]! ]RWR7      bRX]! ]	! RYRZR[4      R\4      bR]]! ]	! RQR^R_RR4      R`R7      bRa]! ]RbR7      bRc]! ]RdR7      bRe]! ]RfR7      bRg]! ]	! R7R8R94      RhR7      bRi]! ]RjR7      bRk]! R4RlR7      bRm]! ]
RnR7      bRo]! ]
RpR7      bRq]! ]
RrR7      bRs]! ]
RtR7      bRu]! ]
RvR7      bRw]! ]RxR7      bRy]! ]RzR7      bR{]! ]
RR7      bR|]! ]R R7      bR}]! ]R"R7      bR~]! ]	! ^ ^^4      R$R7      bR]! ]	! ^ ^^4      R&R7      bR€]! ]
R(R7      bR�]! ]R*R7      bR‚]! ]R,R7      bRƒ]! ]
R„R7      bR…]! ]
R†R7      bR‡]! ]RˆR7      bR‰]! ]RŠR7      bR‹]! ]RŒR7      bR�]! ]	! RQRŽRRR�4      R�4      bR‘]! ]R’R7      bR“]! ]R”R7      bR•]! ]R–R7      b tR— tR˜ tR™ tRš t]! 4       R› 4       tRœ tR� tRž tRŸ tR  tR¡ tR¢ tR£ tR¤ t R¥ t!R¦ t"R§ t#R¨ t$R© t%Rªt&V t'R4# )¬Ú	ValueAxisiŽ  z(Abstract value axis, unusable in itself.Ú	forceZeroÚnearzEnsure zero in range if true.rG  r=  rV  rW  rX  r[  r\  rY  rZ  rú   r]  rë   r^  r¦   r_  rì   r`  rí   ra  rÓ   rb  rî   rc  rù   rd  rø   re  rý   rf  rÿ   rg  rþ   rh  r   ri  rû   rj  rü   rk  rl  rm  ÚminimumTickSpacingz)Minimum value for distance between ticks.ÚmaximumTickszMaximum number of ticks.rn  Nro  rz  r{  r|  rk   r~  ÚlabelTextFormatz3Formatting string or function used for axis labels.ÚlabelTextPostFormatzExtra Formatting string.ÚlabelTextScalezScaling for label tick values.ÚvalueMinzMinimum value on axis.ÚvalueMaxzMaximum value on axis.Ú	valueStepzStep size used between ticks.Ú
valueStepsz&List of step sizes used between ticks.ÚavoidBoundFrac©ÚemptyOKr†   r…   z.Fraction of interval to allow above and below.ÚavoidBoundSpacezSpace to allow above and below.Úabf_ignore_zerozMSet to True to make the avoidBoundFrac calculations treat zero as non-specialÚ
rangeRoundrŒ  rŽ  ÚceilingÚfloorzHow to round the axis limitsÚ
zrangePrefz!Zero range axis limit preference.rv  Únormalrx  ry  zHow values are plotted!ÚskipEndLr�   r‚   zSkip high/low tick labelsÚorigShiftIPCú"Lowest label shift interval ratio.ÚorigShiftMinúMinimum amount to shift.ÚorigShiftSpecialValuezspecial value for shiftrà  z$Like joinAxisMode, but for the ticksrt  ru  r'  r†  r‡  rˆ  r‰  rŠ  r  zNumber of axis sub ticks, if >0râ  zsub tick down or leftrá  zsub tick up or rightrÚ  z Display axis sub ticks, if true.r  zDisplay axis sub grid, if true.r	  r  r  r  r  r  r
  r  r€  r�  ÚsubTickStrokeWidthz Width of sub ticks if specified.ÚsubTickStrokeColorz Color of sub ticks if specified.r‚  rƒ  ÚkeepTickLabelsInsidez?Ensure tick labels do not project beyond bounds of axis if truer‹  r�  r�  r�  ÚrequiredRangezMinimum required value range.r‘  r’  r>   z*extra values to use in min max calculationc                ó   € V P                   P                  R 8w  g   Q R4       hV P                  ! RJ/ VB  V P                  ! RJ/ R^ bR^2bR^2bR^dbR^bR^bR^bR	^bR
^ bR^ bR^bR\        R,          bR\        R,          bR\        R,          bR\        R,          bR\        R,          bRRbR\        R,          bR\        R,          bR\        R,          bR\        R,          bR\        R,          bRRbRRbRRbR^ bR^ bR ^ bR!^ bR"^ bR#\        R,          bR$\        R,          bR%\        R,          bR&RbR'\        R,          bR(\        R,          bR)RbR*RbR+\	        \
        4      bR,^ bR-^
bR.^bR/RbR0R1bR2RbR3RbR4RbR5RbR6RbR7RbR8RbR9RbR:RbR;R<bR=^ bR>R?bR@R<bRARbRBRbRCRbRDR1bRE^ bRF^ bRG^ bRH^ bRIRb  ^ V P                  n        R# )Krh  z%Abstract Class ValueAxis InstantiatedÚ_configuredri   rj   r�   r=  rW  r[  rY  rú   ri  rë   r¦   rì   rÓ   rí   rî   rù   r”  rø   rý   rþ   rÿ   r   rû   Nrü   rl  Fr  rÚ  r  râ  rá  r  r  r  r	  r  r  r
  r  rn  r†  rk  rl  r—  rz  rk   rm  rn  ro  rp  rq  rr  rt  rw  rx  ry  rŒ  r|  rv  r}  r~  r  r�  rƒ  rà  rt  r‡  r‰  r‡  r>   r+   )r  rq   rM  r   r   r   rn  r  rN  s   &,r0   rX   ÚValueAxis.__init__Ù  sÐ  € Ø�~‰~×&Ñ&¨Ô3Ð\Ð5\Ó\Ð3Ø×ÒÑ˜BÒØ×Òò R	Ù&'ðR	ñ
  ðR	ñ  ðR	ñ #&ðR	ñ #$ðR	ñ '(ðR	ñ )*ðR	ñ ()ðR	ñ '(ðR	ñ %&ðR	ñ" '(ð#R	ô$ '5°]Ö&Cð%R	ô& +9Ð9JÖ*Kð'R	ô( +9Ð9IÖ*Jð)R	ô* )7°Ö(Gð+R	ô, ,:Ð:LÖ+Mð-R	ñ. +/ð/R	ô0 +9¸Ö*Gð1R	ô2 /=Ð=NÖ.Oð3R	ô4 /=Ð=MÖ.Nð5R	ô6 -;¸?Ö,Kð7R	ô8 0>Ð>PÖ/Qð9R	ñ: %)ð;R	ñ< #'ð=R	ñ> (-ð?R	ñ@ *+ðAR	ñB +,ðCR	ñD &'ðER	ñF %&ðGR	ñH %&ðIR	ôJ 1?Ð?OÖ0PðKR	ôL 0>¸oÖ/NðMR	ôN 3AÐASÖ2TðOR	ñP .2ðQR	ôR .<¸MÖ-JðSR	ôT 2@Ð@QÖ1RðUR	ñV (,ðWR	ñX &*ðYR	ôZ "9¼Ô!?ð[R	ñ\ 01ð]R	ñb .0ðcR	ñd ()ðeR	ñl ,0ðmR	ñn )/ðoR	ñp +/ðqR	ñr /3ðsR	ñt *.ðuR	ñ~ $(ðR	ñ@ $(ðAR	ñB %)ðCR	ñD *.ðER	ñF +/ðGR	ñH +0ðIR	ñJ &,ðKR	ñL &'ðMR	ñN !)ðOR	ñP "(ðQR	ñR (,ðSR	ñT (,ðUR	ñV 15ðWR	ñX (.ðYR	ñZ *+ð[R	ñ\  !ð]R	ñ^  !ð_R	ñ` '(ðaR	ñb +/ñcR	ðf ˆ�‰Ör3   c                óf   € \        V4      V n        \        V4      V n        \        V4      V n        R # r*   r›  r�  s   &&&&r0   rŸ  ÚValueAxis.setPosition1  r¡  r3   c                óH   € V P                  V4       V P                  4        R# )aí  Let the axis configure its scale and range based on the data.

Called after setPosition. Let it look at a list of lists of
numbers determine the tick mark intervals.  If valueMin,
valueMax and valueStep are configured then it
will use them; if any of them are set to None it
will look at the data and make some sensible decision.
You may override this to build custom axes with
irregular intervals.  It creates an internal
variable self._values, which is a list of numbers
to use in plotting.
N)Ú	_setRangeÚ_configure_end)rV   Ú
dataSeriess   &&r0   rª  ÚValueAxis.configure7  s   € ð 	�‰�zÔ"Ø×ÑÖr3   c                óT   € V P                  4        V P                  4        ^V n        R# )rÒ   N)r¤  Ú_calcScaleFactorr‰  r˜  s   &r0   r�  ÚValueAxis._configure_endG  s"   € Ø×#Ñ#Ô%Ø×ÑÔØˆÖr3   c                óT   € Wn         W n        V P                  4       w  r4W4VR ,          3# )r¹   )Ú	_valueMinÚ	_valueMaxÚ_calcStepAndTickPositions)rV   rp  rq  rr  r,   s   &&&  r0   Ú_getValueStepAndTicksÚValueAxis._getValueStepAndTicksL  s+   € à!ŒØ!ŒØ×4Ñ4Ó6‰ˆ	Ø˜Y t�^Ð+Ð+r3   c                óT  € V P                   pV^ 8”  d”   W!,
          pWC8  d†   RW!,           ,          pVR,          p\        WS,
          V4      p\        WS,           V4      pV^d8¼  d   V^d8  d   V^d,           V,
          p^dpMV^ 8¼  d   V^ 8  d   Wv,
          p^ pT;qn        T;q n        W3# )r(   rL  )r‡  rC   rG   Ú
_cValueMinÚ
_cValueMax)rV   rp  rq  Úrrr?   Úmr×   Úy2s   &&&     r0   Ú_preRangeAdjustÚValueAxis._preRangeAdjustS  s¨   € Ø×ÑˆØˆaŒ4ØÕ#ˆAØŒtØ˜Õ*Õ+�Ø�c•	�Ü˜�˜hÓ'�Ü˜�˜hÓ'�Ø˜S”= R¨¤VØ˜c� B��BØ‘BØ˜q”[ R¨¤TØ��BØ�BØ-/Ð/�œ?Ø-/Ð/�œ?ØÐ Ð r3   c                óX  € V P                   ;r#V P                  ;rEVf(   \        WP                  ^ V P                  4      ;q0n        Vf(   \        WP                  ^ V P                  4      ;qPn        W58X  dl   V^ 8X  dG   Vf/   Vf+   \        V R^ 4      pV^ 8”  d   Tp^ pMCV^ 8  d   ^ pTpM7RpRpM2V P                   f   RpM!RpMV^ 8”  d   RV,          pRpMRpRV,          p\        V RR4      '       d©   \        \        V^^ 4      4      pRpW…V,
          ,          p	W�n
        Wpn        W€P                  ,          V n        W—3R lp
Vf)   \        WP                  ^ W P                  R	7      ;q0n        Vf)   \        WP                  ^ W P                  R	7      ;qPn        V P                  W54      w  r5V P                  pTpTpV P                   pV'       dQ   VR
8X  d/   \#        \%        V4      \%        V4      4      ^WS,
          ,          8*  pV'       d   V^ 8  d   ^ pM	V^ 8”  d   ^ pV P&                  p\        V RR4      '       * pT;'       d    Tp\)        V4      '       g   Wÿ3p\        V RR4      p\)        V4      '       g   VV3pVR8g  ;'       d    TpV'       d   VR9   pVR9   pM^ ;ppV P*                  pTpV'       d   \)        V4      '       g   VV3p\        V P                  4      pT;'       g    T;'       g    Tp^ pV'       Ed   V^
8:  Ed   V^,          p^ pV'       g
   V'       Ed*   V P-                  W54      w  pppV'       d"   VV^ ,          ,          pVV^,          ,          pM^ ;ppV'       dD   WS,
          V,          p\/        VV^ ,          V,          4      p\/        VV^,          V,          4      pV'       d   V^ ,          p MTp VV,
          p!V^ ,          '       g   \%        V 4      V8”  d   V V!V,           8¼  d   T!p^pV'       d   VR,          p MTp VV,           p!V^,          '       g   \%        V 4      V8”  d   V V!V,
          8:  d   T!p^pV'       g   EKa  V P-                  W54      w  pppV'       dE   VV^ ,          V,
          8  d   V^ ,          V,
          p^pMVV^ ,          V,           8¬  pV^ ,          pV'       g   EKÍ  VVR,          V,           8”  d   VR,          V,           p^pEK÷  VVR,          V,
          8*  pVR,          pEK  V'       d   V'       g	   XV n        MRV n        W0n        WPn        V P6                  p"V P8                  p#V#f   V"e¸   V P:                  p$V P=                  4        V P4                  V P2                  r5V$e   \%        V$V,
          4      R8  dj   V"'       d   V"V P>                  ,          p%M^ p%V#'       d+   \/        V%WS,
          V#,          V P                  ,          4      p%V ;P2                  V%,          un        V PA                  4        R# )z´Set minimum and maximum axis values.

The dataSeries argument is assumed to be a list of data
vectors. Each vector is itself a list or tuple of numbers.

Returns a min, max tuple.
Nr|  g{®Gáz„?ç333333ó?ç        Ú_bubblePlotr”  c                 óÄ   €  V ^,          pW5V,          R,          ,          pV! W,          V,           W,          V,
          4      #   \          d    \        R,          p LSi ; i)é   çš™™™™™¹?rL  )rÃ   Ú	bubbleMAx)r,   r-   r/   ÚbubbleVÚ	bubbleMaxrM   s   &&&&& r0   r.   Ú$ValueAxis._setRange.<locals>.special”  sV   € ð&Ø˜!��Að ˜i�K¨#Õ-Õ-�Ù˜A�D �L¨­¨g­Ó6Ð6øô "ô &Ü! #�’Að&ús   ‚	A ÁAÁArB   rj  rs  rx  FrŒ  ç�íµ ÷Æ°>g{®Gáz„¿©rŽ  r{  ©rŽ  rz  r­  )!rp  rq  rE   r  r>   rœ  rH   r�  rŽ   rœ  Ú_bubbleVÚ
_bubbleMaxr�   Ú_bubbleRadiusr¡  ry  ri  rC   r½   rt  r&   rw  r™  rG   Ú_computedValueStepr–  r—  r  r�  rƒ  Ú_calcValueStepÚ
_valueStepÚ_rangeAdjust)&rV   r�  ÚoMinrp  ÚoMaxrq  Úzrpr¬  Úfracr«  r.   ry  ÚcMinÚcMaxri  ÚabfÚdo_rrÚdo_abfÚabfizÚrrnÚrrxÚabSÚdo_absÚaLÚgoÚiterrr  r,   ÚfuzzÚi0Úi1ÚsfrM   Úur  r�  rƒ  rŸ  s&   &&                                    r0   rŽ  ÚValueAxis._setRangeg  sv  € ð Ÿ-™-Ð'ˆØŸ-™-Ð'ˆØÒ¼(À:ÏoÉoÐ^_Ðae×awÑawÓ:xÐx˜X¬ØÒ¼(À:ÏoÉoÐ^_Ðae×awÑawÓ:xÐx˜X¬ØÔØ˜Œ{Ø’< D¢LÜ! $ |°AÓ6�CØ˜1”uØ#&˜Ø#$™Ø˜QœØ#$˜Ø#&™à#'˜Ø#(™Ø—]‘]Ò*Ø$‘Hà#‘Hà˜A”:Ø" 8�|�HØ"‘Hà"�HØ" 8�|�Hä�4˜ d×+Ò+Üœh z°!°AÓ6Ó7ˆIØˆDØ 8Õ+Õ,ˆGØ#ŒMØ'ŒOØ!%§l¡lÕ!2ˆDÔØ)0ô 7ð Š|¼(À:ÏoÉoÐ^_Ðho÷  CYñ  CYô  ;Zð  Z˜X¬ØŠ|¼(À:ÏoÉoÐ^_Ðho÷  CYñ  CYô  ;Zð  Z˜X¬à!×1Ñ1°(ÓDÑˆà—_‘_ˆ
àˆØˆØ—N‘Nˆ	ßØ˜&Ô Ü¤ H£¬c°(«mÓ<ÀÀ8ÕCTÕ@UÑU�	ßØ˜A”:¨™xØ˜a”Z¨A à×!Ñ!ˆÜ˜D ¨dÓ3Ô3ˆØ—�˜ˆÜ�S�zŠzØ�(ˆCÜ˜Ð.°Ó6ˆÜ�U�|Š|Ø˜5�LˆEØ˜fÑ$×.Ð.¨ˆßØÐ 0Ñ0ˆCØÐ 2Ñ2‰CàˆMˆC�#à×"Ñ"ˆØˆßÜ˜—:’:Ø˜3�h�Ü�4—<‘<Ó ˆà×&Ð&�f×&Ð& ˆØˆßˆb�T˜2•XØ�A�IˆDØˆBßŸ˜Ø%)×%?Ñ%?ÀÓ%SÑ"�	˜1˜dßØ" 3 q¥6Õ)�BØ" 3 q¥6Õ)‘Bà�K�B˜ßØ"Õ+¨RÕ/�BÜ˜R  A¥ r¥	Ó*�BÜ˜R  A¥ r¥	Ó*�Bß˜A˜a�D™Ø"�aØ˜•G�Ø˜!—H”H¤ A£ t¤°°A°dµF´Ø �HØ�Bß˜A˜b�E™Ø"�aØ˜•G�Ø˜!—H”H¤ A£ t¤°°A°dµF´Ø �HØ�BçŠuØ%)×%?Ñ%?ÀÓ%SÑ"�	˜1˜dßØ  !¥ T¥	Ô)Ø#$ Q¥4¨	¥>˜Ø™à% q¨¥t¨D¥yÑ0˜Ø#$ Q¥4˜ß’3Ø  "¥ d¥
Ô*Ø#$ R¥5¨¥?˜Ø›à% q¨¥u¨T¥zÑ1˜Ø#$ R¥5›ßŸØ&/ˆDÕ#à&*ˆDÔ#à!ŒØ!Œà×(Ñ(ˆØ×(Ñ(ˆØÒ# |Ò'?Ø$(×$>Ñ$>Ð!Ø×ÑÔ!Ø!%§¡°·±�hØ$Ò,´Ð4IÈ(Õ4RÓ0SÐTXÔ0XßØ$ T§_¡_Õ4‘Aà�AßÜ˜A˜xÕ0°,Õ>¸t¿|¹|ÕKÓL�AØ—’ !Õ#•à×ÑÖr3   c                ó’   € V P                   V n        V P                  V n        \	        V R 4      '       d   V =V P                  4        R# )Ú_subTickValuesN)rp  r–  rq  r—  re   rÐ  r�  r˜  s   &r0   rf   ÚValueAxis._pseudo_configure  s7   € ØŸ™ˆŒØŸ™ˆŒÜ�4Ð(×)Ò)¨tÐ/BØ×ÑÖr3   c                ó   € R# )z‡Override this if you want to alter the calculated range.

E.g. if want a minumamum range of 30% or don't want 100%
as the first point.
Nr+   r˜  s   &r0   r·  ÚValueAxis._rangeAdjust  s   € ñ 	r3   c                ó   € R# )zuOverride if you want to put slack at the ends of the axis
eg if you don't want the last tick to be at the bottom etc
Nr+   r˜  s   &r0   Ú_adjustAxisTicksÚValueAxis._adjustAxisTicks  s   € ñ 	r3   c                ó’   € V P                   \        V P                  V P                  ,
          4      ,          V n        V P                  # ©zoCalculate the axis' scale factor.
This should be called only *after* the axis' range is set.
Returns a number.
)r�   rœ  r—  r–  Ú_scaleFactorr˜  s   &r0   r“  ÚValueAxis._calcScaleFactor  s3   € ð
 !ŸL™L¬5°·±À$Ç.Á.Õ1PÓ+QÕQˆÔØ× Ñ Ð r3   c                óŠ  € \        V R R4      pV'       d
   V =Wn        MV P                  4        V P                  pV P                  pV P
                  pRV,          pV P                  p\        \        V4      V,          4      pWa,          pVR9   d   WrV,           8”  d
   V^,          pMWrV,
          8  d
   V^,          p\        \        V4      V,          4      pW�,          pVR9   d   WsV,
          8  d
   V^,          pMWsV,           8”  d
   V^,          pT\        Wh^,           4       U	u. uF  q™V,          NK  	  up	3# u up	i )r´  Nr¹   r¯  r°  )
rŽ   r´  r¶  rµ  r–  r—  ry  rK   rœ  r©   )
rV   rr  rp  rq  rÉ  ry  rÊ  rM   rË  r±   s
   &         r0   r˜  Ú#ValueAxis._calcStepAndTickPositions$  s  € Ü˜DÐ!5°dÓ;ˆ	ßØÐ'Ø'�Oà×ÑÔ!ØŸ™ˆIØ—>‘>ˆØ—>‘>ˆØ�I�~ˆØ—_‘_ˆ
Ü”�x“ Õ*Ó+ˆØ�LˆØÐ)Ô)Ø˜$•Œ  a¥ øØ˜�}Œ_˜b A�g˜bÜ”�x“ Õ*Ó+ˆØ�LˆØÐ+Ô+Ø˜$•Œ  a¥ øØ˜�}Œ_˜b A�g˜bØ¬u°R¸1½¬~Ó>©~¨!˜IŸ+˜+©~Ñ>Ð>Ð>ùÒ>s   Ä+E c                ó0   € V P                  4       ^,          # r±  )r˜  r˜  s   &r0   Ú_calcTickPositionsÚValueAxis._calcTickPositions<  s   € Ø×-Ñ-Ó/°Õ2Ð2r3   c                ó   € \        V R 4      '       g   V P                  4        V P                  p\        V R4      '       Eg'   V P                  P                  pVR,          R8X  d
   ^ p\
        pMRpR pV Uu. uF  p\        VR^4      '       g   K  VNK  	  pp. P                  p\        V P                  4      p\        V4      p	V	^8  d
   . V n
        EM’V	^8X  d   V^,          V^ ,          ,
          p
McV	^8X  d8   \        V^,          V^ ,          ,
          V^,          V^,          ,
          4      p
M%V	^,          p	Wi^,           ,          Wi,          ,
          p
W£,          pV P                  V,           pV P                  V,
          pV^ ,          V8”  d!   VP                  ^ V^ ,          V
,
          4       VR,          V8  d    VP                  VR,          V
,           4       V
\        V^,           4      ,          p
\!        VRR 4       FK  w  rž\#        V4       F7  pWä! V^,           V
,          4      ,           pVV8:  g   VV8¼  d   K/  V! V4       K9  	  KM  	  VP$                  V n
        V P                  V n        V# u upi )	r^   rÐ  r!  r#  r¹   c                 ó   € V # r*   r+   r`   s   &r0   r1   Ú)ValueAxis._calcSubTicks.<locals>.<lambda>J  s   € ¡r3   Ú_doSubTicksNr­  )re   rf   r^   r  rq   rK   rŽ   r5  r  r;   rÐ  rG   r–  r—  Úinsertrœ  Ú	enumerater©   r6  )rV   r  r  ÚiFuzzÚdCnvr­   ÚOTVr,   Únstr±   ÚdstrÉ  ÚvnÚvxr-   Újr¿   s   &                r0   r  ÚValueAxis._calcSubTicks?  sü  € Ü�t˜M×*Ò*Ø×"Ñ"Ô$Ø×ÑˆÜ�tÐ,×-Ó-Ø—.‘.×)Ñ)ˆCØ�3�x˜Ô&Ø�Ü‘à�Ù!�á #ÓC¡˜"¤w¨r°-À×'B—2�2¡ˆCÐCØ—	‘	ˆAÜ�d—o‘oÓ&ˆCÜ�C“ˆAØ�ŒsØ&(�Ö#à�a”4Ø˜a�&  Q¥�-‘CØ˜”TÜ˜c !�f S¨¥V�m¨C°­F°3°qµ6­MÓ:‘Cà˜!•G�AØ �c�( S¥VÕ+�CØ•y�Ø—^‘^ DÕ(�Ø—^‘^ DÕ(�Ø�q•6˜"”9˜cŸj™j¨¨3¨q­6°#­:Ô6Ø�r•7˜2”:˜sŸz™z¨#¨b­'°#­+Ô6Ø”u˜S �U“|Õ#�Ü$ S¨¨" XÖ.‘C�AÜ" 3žZ˜Ø˜d A a¥C¨¥9›oÕ-˜Ø˜bœ5 A r¤E©8Ù˜!žó (ñ /ð
 '(§j¡j�Ô#Ø×.Ñ.ˆÔØˆ
ùò7 Ds   Á8I;ÂI;c                óÄ   € \        V RR4      V n        V P                  '       d   V P                  # V P                  4       V n        V P                  4        V P                  # )zKCalculate a list of tick positions on the axis.  Returns a list of numbers.rs  N)rŽ   r^   rÞ  rÕ  r˜  s   &r0   r¤  Ú ValueAxis._calcTickmarkPositionsi  sS   € ä" 4¨°TÓ:ˆÔØ××Ð D×$4Ñ$4Ð4Ø×2Ñ2Ó4ˆÔØ×ÑÔØ×ÑÐr3   c                óD  € V P                   f�   V P                  V P                  ,
          pV\        \	        V P
                  ^,
          4      \	        V P                  4      V P                  ,          4      ,          p\        V4      V n	        R# V P                   V n	        R# )ú8Calculate _valueStep for the axis or get from valueStep.N)
rr  r—  r–  rC   rœ  rl  r�   rk  r#   r¶  )rV   ÚrawRangeÚrawIntervals   &  r0   rµ  ÚValueAxis._calcValueStepq  sk   € à�>‰>Ò!Ø—~‘~¨¯©Õ6ˆHØ"¤S¬¨t×/@Ñ/@ÀÕ/BÓ)CÄUÈ4Ï<É<ÓEXÐY]×YpÑYpÕEpÓ%rÕrˆKÜ-¨kÓ:ˆDŽOà"Ÿn™nˆDŽOr3   c                ó,   € \        V P                  4      # r*   )rN   r^   r˜  s   &r0   Ú_allIntTicksÚValueAxis._allIntTicksz  s   € Ü�t×'Ñ'Ó(Ð(r3   c                óT  € \        4       pV P                  '       g   V# V P                  pVf>   V P                  ;'       g)    V P	                  4       ;'       d    R;'       g    \
        pMPV\        J d   V P	                  4       '       d   RpM-\        VR4      '       d   VP                  V P                  4       V P                  pV P                  pV P                  V P                  .pV P                  pV P                  4       V^V,
          &   V P                   pV P"                  R8w  dj   V P$                  '       d   V P                  pMV P                  pV P"                  R8X  d   V.pM+WˆV P&                  ,           .pV P"                  R8X  d   V^  M. p\)        V P                  4      p	V	^,
          p
\+        V P                  4       EFV  w  r¼W¹,
          pW×9   d
   W},          pMW{,          pV'       g   K/  VP,                  '       g   KC  V P/                  V4      pV'       d$   V F  p\1        Wþ,
          4      R8  g   K  R p M	  Vf   K…  Ve
   WÄ,          pMTp\3        V\        4      '       d   VV,          pMz\5        V4      '       d   V\)        V4      8  d
   W+,          pMPRpMM\        VR4      '       d*   \3        V\6        4      '       d   V! V V4      pMV! V4      pM\9        R	V,          4      hV'       d
   VV,          pWåV&   VP:                  ! V!   VP=                  V4       V P>                  '       dÐ   \3        V \@        4      '       dº   V P                  pV'       gG   VPC                  4       w  ppppVV8  d+   VPE                  VPF                  V,           V,
          R
7      pWº8X  dZ   VV P&                  ,           pVPC                  4       w  ppppVV8”  d+   VPE                  VPF                  V,
          V,           R
7      pVPI                  V4       EKY  	  V# )Nz%.0fÚ
calcPlacesrŒ  r�   r‚   r®  r3  rm   zInvalid labelTextFormat %s)rG  )%r   r[  r—  rm  r÷  Ú_defaultLabelFormatterÚstrre   rú  r^   rn  ro  ri   rj   r  rã  rn  r~  r$  r�   r;   rå  r=  rg   r½   rª   r&   rb  Ú
ValueErrorr5  r6  r†  Ú
XValueAxisÚ	getBoundsÚclonerG  r¬   )rV   rï   r9   ÚpostÚsclr  rŒ   rn  ÚskÚnticksÚnticks1r±   Útickr:  rM   Úskvr¿   ÚtxtÚa_xrÜ   rÖ   rØ   r×   Úa_x1s   &                       r0   r@  ÚValueAxis.makeTickLabels}  s<  € Ü‹GˆØ×!×!Ð!¨! 8à×!Ñ!ˆØŠ9Ø×$Ñ$×bÐb¨×):Ñ):Ó)<×)GÐ)GÀ×)aÐ)aÔKa‰AØ”#‹X˜$×+Ñ+×-Ò-°6©qÜ�Q�|×$Ò$Ø�L‰L˜×)Ñ)Ô*Ø×'Ñ'ˆØ×!Ñ!ˆØ�w‰w˜Ÿ™Ð ˆØ�O‰OˆØ×%Ñ%Ó'ˆˆAˆa�C‰Ø—‘ˆØ�=‰=˜&Ô Ø�|�|ˆ|Ø—W‘W‘à—W‘W�Ø�}‰}˜gÔ%Ø�T‘à˜DŸL™L�Ð)�Ø—=‘= %Ô'Ø˜1˜øàˆBä�T×%Ñ%Ó&ˆØ˜1•*ˆÜ × 0Ñ 0×1‰FˆAØ•HˆEØŒØ�‘à�	�ß‰q�U—]—]’]Ø—J‘J˜tÓ$�ßÛ!˜Ü˜s�u›: dž?Ø $˜AÙ!ñ  "ð ”=Ø’Ø �H™à ˜Ü! !¤S×)Ò)°°Qµ©3Ü˜qŸšàœs 1›vœ:Ø"#¥$™Cà"$™CÜ   :×.Ò.Ü% a¬×5Ò5Ù"# D¨£)™Cá"# A£$™Cä(Ð)EÈÕ)IÓJÐJß 4¨#¥:˜SØ˜‘FØ—O’O SÒ)Ø—M‘M #Ô&ð ×0×0Ð0Ü% d¬J×7Ò7Ø"&§'¡'˜Cß#$Ø16·±Ó1B¡  B¨¨BØ#%¨¤8Ø,1¯K©K¸5¿8¹8Àc½>ÈBÕ;N¨KÓ,O EØ œzØ'*¨D¯L©LÕ'8 Ø16·±Ó1B¡  B¨¨BØ#%¨¤9Ø*/¯+©+¸¿¹À"½ÀTÕ9I¨+Ó*J EØ—E‘E˜%—Lñe 2ðh ˆr3   c                ó6  € V P                   '       g   Q R4       hVf   ^ pV P                  V P                  3V P                  ,          pV P                  pV P
                  '       d   V) pW P                  ,          pW#WP                  ,
          ,          ,           # )zfConverts a numeric value to a plotarea position.
The chart first configures the axis, then asks it to
ú1Axis cannot scale numbers before it is configured)r‰  ri   rj   r  rÙ  rt  r�   r–  )rV   rü  ÚorgrÌ  s   &&  r0   rg   ÚValueAxis.scaleÓ  s�   € ð ××ÐÐTÐ!TÓTÐØŠ= !˜%ð �w‰w˜Ÿ™Ð  §¡Õ1ˆØ×ÑˆØ× × Ð Ø�ˆBØ—<‘<ÕˆCØ˜§¡Õ/Õ0Õ0Ð0r3   )r²  r³  r±  r�  rœ  r´  r‰  r�   rÙ  rÐ  r^   r—  r–  r¶  ri   rj   r+   )(rq   rr   rs   rt   ru   rQ  rR  r   r   r
   r   r	   r   r   r   r   r   rS  rX   rŸ  rª  r�  r   r™  r¡  rŽ  rf   r·  rÕ  r“  r˜  rÞ  r  r¤  rµ  r÷  r@  rg   rv   rw   rx   s   @r0   rh  rh  Ž  sÙ  ø‡ € Ù.áò F
Ù ¡¨9±U¸6³]Ð*CÓ!DÐKjÕkðF
á˜yÐ/PÕQðF
ñ # 9Ð3PÕQðF
ñ % YÐ5TÕUð	F
ñ
 $ IÐ4RÕSðF
ñ # 9Ð3PÕQðF
ñ # 8Ð2QÕRðF
ñ # =Ð7VÕWðF
ñ 'Ð'<ÐCcÕdðF
ñ %¡U¨1¨Q¨q£\Ð7\Õ]ðF
ñ &¡e¨A¨a°£lÐ8^Õ_ðF
ñ (¨Ð6\Õ]ðF
ñ ' xÐ6LÕMðF
ñ ' }Ð;QÕRðF
ñ +Ð+@ÐGhÕiðF
ñ  )©¨q°°1«Ð;eÕfð!F
ñ" *©%°°!°A«,Ð<gÕhð#F
ñ$  ,¨HÐ:eÕfð%F
ñ& ! Ð6[Õ\ð'F
ñ( ˜~Ð4WÕXð)F
ñ* $ IÐ4cÕdð+F
ñ, *¨(Ð9dÕeð-F
ñ. $ HÐ3MÕNð/F
ñ0 ˜dÐ)EÕFð1F
ñ2 %¡U¨6°%¸Ó%?ÐFrÕsð3F
ñ4 ' tÐ2gÕhð5F
ñ6 +¨4Ð6PÕQð7F
ñ8 & nÐ;[Õ\ð9F
ñ:   Ð5MÕNð;F
ñ<   Ð5MÕNð=F
ñ> ! Ð6UÕVð?F
ñ@ "Ð"7Ð>fÕgðAF
ñB &¡h°¹zÈ(Ð[\Ð`aÐefÔ?gÐ/hÓ&ið  qaõ  bðCF
ñD '¡x°Á
È8Ð\]ÐabÐfgÔ@hÐ0iÓ'jð  rSõ  TðEF
ñF '¡x±¸	Ó1BÁ:ÈiÐ`aÐefÐjkÔClÐ0mÓ'nð  vEõ  FðGF
ñH  ¡ f¨V°I¸gÓ FÐGeÔfðIF
ñJ " .Ð7ZÕ[ðKF
ñL ™U 8¨I°mÓDÐE^Ô_ðMF
ñN  ¡ f¨W°U¸6Ó BÐIdÕeðOF
ñP $ NÐ9]Õ^ðQF
ñR $ NÐ9SÕTðSF
ñT !-¨^ÐB[Õ \ðUF
ñV $¡E¨&°°vÓ$>ÐEkÕlðWF
ñX (¨	Ð8]Õ^ðYF
ñZ # 4Ð-BÕCð[F
ñ\ ˜hÐ-YÕZð]F
ñ^ ˜hÐ-VÕWð_F
ñ` " (Ð1RÕSðaF
ñb ! Ð0GÕHðcF
ñd ! Ð0FÕGðeF
ñf ' yÐ7YÕZðgF
ñh & iÐ6WÕXðiF
ñj *¨(Ð9OÕPðkF
ñl *¨-Ð>TÕUðmF
ñn ".Ð.CÐJkÕ!lðoF
ñp  ,©E°!°A°a«LÐ>hÕiðqF
ñr !-©U°1°Q°q«\Ð?jÕ kðsF
ñt #/¨xÐ=hÕ"iðuF
ñv $ NÐ9^Õ_ðwF
ñx " .Ð7ZÕ[ðyF
ñz ' xÐ6TÕUð{F
ñ| *¨(Ð9[Õ\ð}F
ñ~ *¨-Ð>`ÕaðF
ñ@ ' }Ð;YÕZðAF
ñB  ,¨IÐ<}Õ~ðCF
ñD  ¡ f¨U°6¸(Ó CÐDmÔnðEF
ñF % ^Ð:YÕZðGF
ñH %Ð%5Ð<aÕbðIF
ñJ )Ð)>ÐEqÕrðKF
€HòPVòp%òò ñ
 ƒ[ñ,ó ð,ò!ò(_òBòòò!ò?ò03ò(òT ò-ò)òT÷l1ð 1r3   rh  c                   óÊ   a € ] tR tRt o Rt]! ]]! ]RR7      ]! ]RR7      ]! RRR7      ]! ]	! RR	R
RR4      RR7      ]! ]
RR7      R7      t^ tR tR tRR ltR tR tRtV tR# )rþ  iâ  zX/value axisrú  rG  rû  Nrq  r�  r�  rü  rý  rþ  rs  )rI  rä  rå  rƒ   r–  rr  c                óà   € \         P                  ! V 3/ VB  R V P                  n        ^ V P                  n        RV P                  n        ^ V n        ^V n        RV n        RV n	        RV n
        R# r   )rh  rX   rn  r  rG  r  rä  rå  rƒ   r–  rr  rN  s   &,r0   rX   ÚXValueAxis.__init__õ  s\   € Ü×Ò˜4Ñ% "Ò%à #ˆ�‰ÔØˆ�‰ŒØˆ�‰ŒàˆŒØˆŒàˆŒØ ˆÔØˆÖr3   c                óŠ   € V P                  ^^2^–4       V P                  R.4       \        ^È^d4      pVP                  V 4       V# )r	  r  ©rŸ  rª  r   r¬   r  s   & r0   r  ÚXValueAxis.demo  s@   € Ø×Ñ˜˜R Ô%Ø�‰Ð(Ð)Ô*ä�C˜ÓˆØ	�‰ˆdŒØˆr3   c                ó<  € \        V4       VR8X  d   VP                  R,          V n        R# VR8X  d,   VP                  VP                  ,           R,          V n        R# VR8X  d    VP                  V4      R,          V n        R# VR8X  d   VR,          V n        R# R# )r  r�  rN  r�  rü  rý  Nr  r  s   &&&&r0   r  ÚXValueAxis.joinToAxis  su   € ä�UÔØ�8ÔØ—h‘h •nˆDŽGØ�UŒ]Ø—x‘x %§-¡-Õ/°3Õ6ˆDŽGØ�WŒ_Ø—k‘k #Ó&¨Õ,ˆDŽGØ�XÔØ˜C•iˆDŽGñ r3   c                óà   € V P                   pV'       dZ   V P                  ;'       g    R pVR9   d   V P                  WR7       R# VR9   d    V P                  WV P                  R7       R# R# R# r  r#  r$  s   &  r0   r'  ÚXValueAxis._joinToAxis  sa   € Ø�]‰]ˆßØ×#Ñ#×/Ð/ xˆCØÐ'Ô'Ø—‘ �Ö-ØÐ+Ô+Ø—‘ °$×2BÑ2B�ÖCñ ,ñ	 r3   c                ó¼  € \        4       pV P                  4        V P                  '       g   V# \        V P                  V P
                  ,
          V P                  V P                  V P                  ,           V P                  ,           V P                  4      pV P                  Vn	        V P                  Vn
        V P                  Vn        VP                  V4       V# r*   r-  r.  s   &  r0   r>  ÚXValueAxis.makeAxis   r0  r3   )rj   rƒ   r–  rr  rå  rä  r>  ©rq   rr   rs   rt   ru   rQ  rh  rR  r   r
   r   rS  r  rX   r  r  r'  r>  rv   rw   rx   s   @r0   rþ  rþ  â  s‰   ø‡ € Ùá˜IÙ˜hØ+ô-á Ø-ô/á Ø*ô,á#¡E¨(°E¸7ÀHÈdÓ$SØ\ô^á" >Ø=ô?ô
€Hð €Jò òô
 òD÷ð r3   rþ  c                óÒ   € V P                  R4      w  r\        V4      pVP                  4       p\        P	                  V4      ^,           pV\
        V^,
          ,          8:  g   Q hW43# )zøThis accepts and validates strings like "31-Dec" i.e. dates
of no particular year.  29 Feb is allowed.  These can be used
for recurring dates.  It returns a (dd, mm) pair where mm is the
month integer.  If the text is not valid it raises an error.
Ú-)ÚsplitrK   ÚlowerÚ_monthsÚindexÚ_maxDays)ÚdmstrÚdstrÚmstrÚddÚmms   &    r0   ÚparseDayAndMonthr)  9  sX   € ð —‘˜SÓ!�J€DÜ	ˆT‹€BØ�:‰:‹<€DÜ	�‰�tÓ	˜qÕ	 €BØ”˜"˜Q�$•ÔÐÐØˆ8€Or3   c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )Ú_isListOfDaysAndMonthsiG  z˜This accepts and validates lists of strings like "31-Dec" i.e. dates
of no particular year.  29 Feb is allowed.  These can be used
for recurring dates.
c                ór   € \        V4      '       d   R pV F  p \        V4      w  rEK  	  V# R#    Rp K   ; ir¼   )r&   r)  )rV   r-   ÚanswerÚelementr'  r(  s   &&    r0   ÚtestÚ_isListOfDaysAndMonths.testL  sC   € Ü��8Š8ØˆFÛ�ð#Ü-¨gÓ6‘F�B™ñ ð
 ˆMáøð	#Ø"“Fús   š/¯6c                ó   € V# r*   r+   )rV   r-   s   &&r0   Ú	normalizeÚ _isListOfDaysAndMonths.normalizeX  s   € àˆr3   r+   N)	rq   rr   rs   rt   ru   r/  r2  rv   rw   rx   s   @r0   r+  r+  G  s   ø‡ € ñò
÷ð r3   r+  c                   ó   a € ] tR tRt o Rt]! ]]! ]RR7      ]! ]	RR7      ]! ]	RR7      ]! ]	RR7      ]! ]
RR7      ]! RR	R7      ]! ]! ]^ ^^R
7      RR7      ]! ]! ]^ ^^R
7      RR7      ]! ]	RR7      ]! ]! ]! ]4      4      RR7      ]! ]	RR7      ]! ]! RRRR4      R4      R7      t]P$                  tR tR tR tR tR tR tR tRtV tR# )ÚNormalDateXValueAxisi_  zÇAn X axis applying additional rules.

Depending on the data and some built-in rules, the axis
displays normalDate values as nicely formatted dates.

The client chart should have NormalDate X values.
z.Fractional amount used to adjust label spacingrG  z$Flag for displaying months 'nicely'.z0Flag for enforced displaying of last date value.z1Flag for enforced displaying of first date value.Nz3Label format string (e.g. '{mm}/{yy}') or function.ru  zWeekday names.zMonth names.zATrue if we are to assume daily data to be ticked at end of month.z/Actual tick values to use; no calculations donez@clear rather than delete close ticks when forced first/end datesrŒ  r�  rŽ  r�  r�  )rI  ÚbottomAxisLabelSlackÚ	niceMonthÚforceEndDateÚforceFirstDateÚforceDatesEachYearÚxLabelFormatÚdayOfWeekNameÚ	monthNameÚ	dailyFreqÚspecifiedTickDatesÚspecialTickClearr‹  c                óä   € \         P                  ! V 3/ VB  R V n        ^V n        ^ V n        ^ V n        . V n        ^ V n        RV n        . ROV n	        . ROV n
        ^ V n        R;V n        V n        R# )r©  z	{mm}/{yy}N)ÚMondayÚTuesdayÚ	WednesdayÚThursdayÚFridayÚSaturdayÚSunday)ÚJanuaryÚFebruaryÚMarchÚAprilÚMayÚJuneÚJulyÚAugustÚ	SeptemberÚOctoberÚNovemberÚDecember)rþ  rX   r6  r7  r8  r9  r:  r>  r;  r<  r=  r@  rs  r?  rN  s   &,r0   rX   ÚNormalDateXValueAxis.__init__{  sv   € Ü×Ò˜DÑ& 2Ò&ð %(ˆÔ!ØˆŒØˆÔØˆÔØ"$ˆÔØˆŒØ'ˆÔÚkˆÔòVˆŒà !ˆÔØ48Ð8ˆŒ˜$Ö1r3   c                óH   € V P                  4       pVP                  V4       V# )z'Convert a scalar to a NormalDate value.)Ú_valueClassr2  )rV   r-   rŒ   s   && r0   Ú
_scalar2NDÚNormalDateXValueAxis._scalar2NDŒ  s    € à×ÑÓˆØ	�‰�AŒØˆr3   c                ó’  € \        V\        P                  4      '       g   V P                  V4      p\        P                  \        P
                  r2 V P                  V P                  u\        n        \        n        VP                  V P                  4      W#u\        n        \        n        #   Y#u\        n        \        n        i ; i)z(Create a formatted label for some value.)
rª   r   Ú
NormalDaterX  Ú_dayOfWeekNameÚ
_monthNamer<  r=  ÚformatMSr;  )rV   rM   rŒ   rŸ  s   &&  r0   Ú_dateFormatterÚ#NormalDateXValueAxis._dateFormatter’  sŽ   € ä˜!œJ×1Ñ1×2Ò2Ø—‘ Ó"ˆAÜ×(Ñ(¬*×*?Ñ*?ˆ1ð	DØ?C×?QÑ?QÐSW×SaÑSaÐ<ŒJÔ%¤zÔ'<Ø—:‘:˜d×/Ñ/Ó0à?@Ð<ŒJÔ%¤zÕ'<ø¸qÐ<ŒJÔ%¤zÕ'<ús   ÁAB. Â.Cc                óè  a € S P                   pS P                  pS P                  p\        V\        4      '       d   V 3R lpS P
                  '       g
   V^ ,          MV! S P
                  4      pS P                  '       g
   VR,          MV! S P                  4      pS P                  pVP                  VP                  VP                  r©pVP                  VP                  VP                  rÜp\        V! V4      P                  R4      TYš;'       g
    RV	,          W¼4      p\!        V^ ,          V^,          V^,          V^,          V4      pV^,          V^ ,          ,
          pV^,          V^,          ,
          p\#        Y÷P$                  ;'       g    ^ S P&                  4      pVVS P(                  ,          ,           p. p. pS P*                  pS P,                  '       EdL   S P,                   Uu. uF  pV! V4      NK  	  ppV Uu. uF  pV! V4      NK  	  ppS P.                  '       du   VV^ ,          8X  dg   V\1        VR,          V^ ,          ,
          4      ,          V^,          V^ ,          ,
          ,          V8:  d   S P2                  '       d   RV^&   MV^ V^ S P4                  '       dx   VVR,          8X  dj   V\1        VR,          V^ ,          ,
          4      ,          VR,          VR,          ,
          ,          V8:  d"   S P2                  '       d
   RVR&   VV3# VR VR VV3# S P6                  '       Ed    \9        \;        \<        S P6                  4      4      pVP?                  4       pVP?                  4       p. p. pTpVV8:  dk   V FY  w  pp\@        PB                  ! VVV34      pVV8¼  g   K(  VV8:  g   K1  VPE                  V4       VPE                  V! V4      4       K[  	  V^,          pKq  S P.                  '       dŸ   VV^ ,          8w  d‘   VPG                  ^ V4       VPG                  ^ V! V4      4       V\1        VR,          V^ ,          ,
          4      ,          V^,          V^ ,          ,
          ,          V8:  d   S P2                  '       d   RV^&   MV^ V^ S P4                  '       d    VVR,          8w  d’   VPE                  V4       VPE                  V! V4      4       V\1        VR,          V^ ,          ,
          4      ,          VR,          VR,          ,
          ,          V8:  d"   S P2                  '       d
   RVR&   VV3# VR VR VV3# WVV3R lp\I        V4      p\J         EFG  pVV,          p V V8:  g   K  V V,          V8:  g   K&  V^,
          p!S PL                  '       dh   VPO                  4       V^8*  ;'       d    T;'       g    ^,          p"V"'       d2   S P4                  '       d   V! V!4       ^ V^ ,          n(        V!V",          p! VPO                  4       V^,          PO                  4       8H  p#T!T#8¼  d   T! T!4       T!T,          p!K  S P.                  '       d‹   T^ ,          T8w  d}   T! ^ 4       ^ T^ ,          n(        T\1        TR,          T^ ,          ,
          4      ,          T^,          T^ ,          ,
          ,          T8:  d   S P2                  '       d   RT^&   MT^ T^ S P4                  '       d�   S PL                  '       do   X"'       dg   T\1        TR,          T^ ,          ,
          4      ,          TR,          TR,          ,
          ,          T8:  d   S P2                  '       d   RTR&   MTR TR  T^ ,          '       d   T^ ,          T^,          8X  d   T^ T^ TT3u # 	  \U        R4      hu upi u upi    ^ p# EL—; i  \R         d     L4i ; i)	z¨Complex stuff...

Needs explanation...

Yes please says Andy :-(.  Modified on 19 June 2006 to attempt to allow
a mode where one can specify recurring days and months.
c                 ó(   <€ SP                  SV 4      # r*   )r_  )r  rV   s   &€r0   Ú	formatterÚ4NormalDateXValueAxis._xAxisTicker.<locals>.formatter©  s   ø€ Ø×*Ñ*¨4°Ó5Ð5r3   Ú
r¤  r3  c                 ór   € VP                  ^ W,          4       VP                  ^ V! W,          4      4       R# )r(   N)rä  )r±   ÚxValsrc  Úticksrn  s   &&&&&r0   ÚaddTickÚ2NormalDateXValueAxis._xAxisTicker.<locals>.addTickö  s'   € Ø�L‰L˜˜5�8Ô$Ø�M‰M˜!™I e¥hÓ/Ö0r3   z6Problem selecting NormalDate value axis tick positionsr­  r4  )+rW  r�   r_  rª   rb  rp  rq  rn  ÚfontNameÚfontSizeÚleadingÚ
textAnchorr  r  r   r  r   rG   r§   rk  r6  rl  r?  r9  rœ  r@  r8  r:  r6   r7   r)  Úyearr   ÚNDr5  rä  r;   Ú_NDINTMr7  Úmonthrã  rÃ   rý  )$rV   rg  ÚVCÚ
axisLengthrc  Ú	firstDateÚendDatern  rk  rl  rm  rn  r  r  ÚRBLÚxLabelWÚxLabelHr  ÚWrh  rl  r-   rŒ   ÚforcedPartialDatesÚ	firstYearÚlastYearÚyyyyr'  r(  ÚtheDateri  r®  r›   r±   rí  Úwfds$   f&                                  r0   Ú_xAxisTickerÚ!NormalDateXValueAxis._xAxisTicker�  s¼  ø€ ð ×ÑˆØ—\‘\ˆ
Ø×'Ñ'ˆ	Ü�i¤×-Ò-õ6à$(§M§M M�E˜!–H±r¸$¿-¹-Ó7Hˆ	Ø#'§=§= =�%˜–)±b¸¿¹Ó6GˆØ—‘ˆØ&,§o¡o°v·±ÈÏÉ˜GˆØ'-×'8Ñ'8¸&×:JÑ:JÈFÏLÉL˜uˆ
Ü™Y yÓ1×7Ñ7¸Ó=¸hØ×4Ð4¨¨H­°ZóKˆä  A¥ s¨1¥v¨c°!­f°S¸µV¸UÓCˆØ�a•&˜˜Q�•-ˆØ�a•&˜˜Q�•-ˆÜ�Ÿ™×)Ð)¨¨$×*AÑ*AÓBˆàˆa�×)Ñ)Õ)Õ)ˆØˆØˆØ×(Ñ(ˆà×"×"Ñ"Ø$(×$;Ò$;Ó<Ñ$;˜q‘R˜–UÑ$;ˆEÐ<Ù,1Ó2©E q‘i –l©EˆFÐ2Ø×"×"Ð" y°%¸µ(Ô':À
Ì5ÐQVÐWYÕQZÐ[`ÐabÕ[cÕQcÓKdÕ@dÐglÐmnÕgoÐpuÐvwÕpxÕgxÕ?yÐ{|Ô?|Ø×(×(Ð(Ø "�F˜1’Ià˜a˜ &¨ )Ø× × Ð  W¨e°B­iÔ%7¸ZÌÈeÐTVÍiÐX]Ð^_ÕX`ÕN`ÓHaÕ=aÐdiÐjlÕdmÐnsÐtvÕnwÕdwÕ<xÐz{Ô<{Ø×(×(Ð(Ø!#�F˜2‘Jð ˜&�=Ð ð ˜b˜	 6¨" :Ø˜&�=Ð ð
 ×"×"Ñ"Ü!%¤cÔ*:¸D×<SÑ<SÓ&TÓ!UÐð "Ÿ™Ó(ˆIØ—|‘|“~ˆHØˆEØˆFØˆDð ˜(Ô"Û 2‘H�R˜Ü(Ÿmšm¨T°2°r¨NÓ;�GØ )Ö+°¸7Ö0BØŸ™ WÔ-ØŸ™¡i°Ó&8Ö9ñ	 !3ð
 ˜•	’ð ×"×"Ð" y°%¸µ(Ô':Ø—‘˜Q 	Ô*Ø—‘˜a¡	¨)Ó 4Ô5Øœu U¨2¥Y¨u°Q­xÕ%7Ó8Õ8¸5À½8ÀEÈ!ÅHÕ;LÕMÈqÔPØ×,×,Ð,Ø$&˜˜qš	à! !˜H f¨Q iØ× × Ð  W¨e°B­iÔ%7Ø—‘˜WÔ%Ø—‘™i¨Ó0Ô1Øœu U¨2¥Y¨u°Q­xÕ%7Ó8Õ8¸5À½9ÀUÈ2ÅYÕ;NÕOÐQRÔRØ×,×,Ð,Ø%'˜˜r™
ð
 ˜&�=Ð ð " "˜I v¨b zð ˜&�=Ð à"¸uÈVô 	1ô �‹Jˆ÷ �ˆAØ�!•ˆAØ�,Ž 1 Q¥3¨*Ö#4Ø�a•C�Ø—>—>�>ØŸ™›¨1¨b©5¯;¨;°Q×+<Ð+<¸"Õ=�AßØ×,×,Ð,Ù# AœJØ12˜E !�HÔ0Ø˜Q�˜ðØ#Ÿ/™/Ó+¨u°Q­x¯~©~Ó/?Ñ?�Cð ˜”fÙ˜A”JØ˜•F’Aà×&×&Ð&¨5°­8°YÔ+>Ù˜A”JØ)*�E˜!•HÔ(Ø"¤5¨¨r­°5¸µ8Õ);Ó#<Õ<¸uÀQ½xÈÈaÍÕ?PÕQÐSTÔTØ×0×0Ð0Ø(*˜F 1šIà % a ¨&°¨)Ø×$×$Ð$¨¯¯¨¿AØ"¤5¨¨r­°5¸µ8Õ);Ó#<Õ<¸uÀR½yÈÈrÍÕ?RÕSÐUVÔVØ×0×0Ð0Ø)+˜F 2šJà % b 	¨6°"¨:ðØ˜a—y”y V¨A¥Y°°qµ	Ô%9Ø! !˜H f¨Q ið ˜f�}Ò$ñU ôV ÐQÓRÐRùòW =ùÚ2øð\Ø“Cûô. "ô Ùðús0   Ç0_È_Ø!(_Þ_#Þ!_#ß_ ß#_1ß0_1c                ó¸   € V P                   pV FG  p\        \        V4      4       F,  pW4,          w  rV\        WR4      '       d   K   V! V4      V3W4&   K.  	  KI  	  R# )z1Convert all XValues to a standard normalDate typeN)rW  r©   r;   rª   )rV   Údatars  r7  r±   r-   rb   s   &&     r0   Ú
_convertXVÚNormalDateXValueAxis._convertXV*  sN   € ð ×ÑˆÛˆAÜœ3˜q›6–]�Ø•t‘�Ü! !×'Ô'Ù˜q›E !˜9�A“Dó #ó r3   c                ó`  € V P                   '       dˆ   . p^ pV^ ,          pV F6  pVP                  4       pW68w  d   V'       d   VP                  V4       TpTpK8  	  VR,          pVR,          X8w  d   VP                  V4       V P                  V4      w  rxWx3# V P                  V4      w  rxWx3# )r(   r­  )r>  rr  r5  r�  )	rV   rg  ÚxEOMÚpmÚpxr-   rŸ  Ústepsrn  s	   &&       r0   Ú_getStepsAndLabelsÚ'NormalDateXValueAxis._getStepsAndLabels4  s§   € Ø�>�>ˆ>ØˆDØˆBØ�q•ˆBÛ�Ø—G‘G“I�Ø”5ß˜4Ÿ;™; rœ?Ø�BØ’ñ ð �r•ˆBØ�B�x˜Œ{˜DŸK™K¨œOØ ×-Ñ-¨dÓ3‰MˆEð ˆ}Ðð !×-Ñ-¨eÓ4‰MˆEØˆ}Ðr3   c                ó"  € V P                  V4       \        4       pV F$  pV F  pVP                  V^ ,          4       K  	  K&  	  \        V4      pVP	                  4        V P
                  pV P                  V4      w  rgV P                  V P                  r˜Vf
   V^ ,          MV! V4      pV	f
   VR,          MV! V	4      p	W‰uV n	        V n
        W`n        Wpn        V P                  \        W˜,
          4      ,          V n        W`n        ^V n        R# )r(   Nr­  )r…  Úsetr¬   r6   ÚsortrW  rŒ  rp  rq  r–  r—  r^   r—  r�   rœ  rÙ  r‰  )
rV   r„  rg  r-   Údvrs  r‹  rn  rp  rq  s
   &&        r0   rª  ÚNormalDateXValueAxis.configureF  sâ   € Ø�‰˜ÔÜ“ˆÛˆAÛ�Ø—	‘	˜"˜Q�%Ö ó ñ ô �U“ˆØ�
‰
ŒØ×ÑˆØ×.Ñ.¨uÓ5‰ˆØ!Ÿ]™]¨D¯M©M�(Ø (Ò 0�5˜–8±b¸³lˆØ (Ò 0�5˜–9±b¸³lˆØ)1Ð&ˆŒ˜œØ ÔØ &Ôà ŸL™L¬5°Õ1DÓ+EÕEˆÔØ ÔØˆÖr3   )r‰  r—  rÙ  r^   r—  r–  r6  r>  r<  r:  r8  r9  r=  r7  r@  r?  rs  r;  zÖList of dates in format "31-Dec","1-Jan".  If present they will always be used for tick marks in the current year, rather than the dates chosen by the automatic algorithm. Hyphen compulsory, case of month optional.)rq   rr   rs   rt   ru   rQ  rþ  rR  r   r   ÚisListOfDaysAndMonthsr   r   r   r   r
   rS  r   rp  rW  rX   rX  r_  r�  r…  rŒ  rª  rv   rw   rx   s   @r0   r5  r5  _  s  ø‡ € ññ ˜jÙ+¨HÐ;kÔlÙ  Ð1WÔXÙ# IÐ4fÔgÙ% iÐ6iÔjÙ)Ð*?ð Gkô lñ $ DÐ/dÔeÙ$¡Z°ÀÀaÈ1Ô%MÐTdÔeÙ ¡¨H¸QÀ"ÈÔ!KÐR`ÔaÙ  Ð1tÔuÙ)©&±¸LÓ1IÓ*Jð  RCô  DÙ'¨	Ð8zÔ{Ù¡ f¨U°6¸(Ó CÐDmÓnô
€Hð" —-‘-€Kò9ò"ò	DòKSòZ%ò÷$ð r3   r5  c                   óÂ   a € ] tR tRt o Rt]! ]]! ]RR7      ]! ]RR7      ]! RRR7      ]! ]	! R4      RR7      ]! ]
R	R7      R
7      t^tR tR tRR ltR tR tRtV tR# )Ú
YValueAxisi[  zY/value axisrB  rG  rC  Nrq  rD  rs  )rI  rõ  rô  rƒ   r–  rr  c                óÜ   € \         P                  V 4       R V P                  n        RV P                  n        ^ V P                  n        ^ V n        ^V n        RV n        RV n	        RV n
        R# rF  )rh  rX   rn  r  rG  r  rô  rõ  rƒ   r–  rr  r˜  s   &r0   rX   ÚYValueAxis.__init__n  sW   € Ü×Ñ˜4Ô à #ˆ�‰ÔØˆ�‰ŒØˆ�‰ŒàˆŒØˆŒàˆŒØ ˆÔØˆÖr3   c                óŽ   € R.pV P                  ^d^
^P4       V P                  V4       \        ^È^d4      pVP                  V 4       V# )r  )r  r	  r  é*   r  )rV   r„  Údrawings   &  r0   r  ÚYValueAxis.demo|  sE   € Ø Ð!ˆØ×Ñ˜˜b "Ô%Ø�‰�tÔä˜#˜sÓ#ˆØ�‰�DÔØˆr3   c                ó<  € \        V4       VR8X  d   VP                  R,          V n        R# VR8X  d,   VP                  VP                  ,           R,          V n        R# VR8X  d    VP                  V4      R,          V n        R# VR8X  d   VR,          V n        R# R# rL  rP  rQ  s   &&&&r0   r  ÚYValueAxis.joinToAxis…  st   € ä�UÔØ�6Œ>Ø—h‘h •nˆDŽGØ�WŒ_Ø—x‘x %§-¡-Õ/°3Õ6ˆDŽGØ�WŒ_Ø—k‘k #Ó&¨Õ,ˆDŽGØ�XÔØ˜C•iˆDŽGñ r3   c                óÌ   € V P                   pV'       dP   V P                  pVR9   d   V P                  WR7       R# VR9   d    V P                  WV P                  R7       R# R# R# rU  r#  r$  s   &  r0   r'  ÚYValueAxis._joinToAxis‘  r)  r3   c                ó¼  € \        4       pV P                  4        V P                  '       g   V# \        V P                  V P
                  V P                  ,
          V P                  V P
                  V P                  ,           V P                  ,           4      pV P                  Vn	        V P                  Vn
        V P                  Vn        VP                  V4       V# r*   rZ  r.  s   &  r0   r>  ÚYValueAxis.makeAxisš  s�   € Ü‹GˆØ×ÑÔØ××Ð¨ ä�D—G‘G˜TŸW™W T§[¡[Õ0°$·'±'¸4¿7¹7ÀTÇ\Á\Õ;QÐRV×R]ÑR]Õ;]Ó^ˆØ×+Ñ+ˆÔØ×+Ñ+ˆÔØ#×3Ñ3ˆÔØ	�‰ˆdŒØˆr3   )ri   rƒ   r–  rr  rõ  rô  r_  r`  r  rx   s   @r0   r•  r•  [  s‚   ø‡ € Ùá˜IÙ Ø0ô2á  Ø1ô3á Ø*ô,á#¡EÐ*TÓ$UØ\ô^á" >Ø=ô?ô
€Hð €Jò òô
 òD÷
ð 
r3   r•  c                   óZ   a € ] tR tRt o ^<t^<],          t^],          tR tR tR t	Rt
V tR# )ÚTimeValueAxisi¦  c                óZ   € V P                   '       g   V P                  V n         / V n        R # r*   )rm  ÚtimeLabelTextFormatterÚ_saved_tickInfo©rV   ÚargsrW   s   &*,r0   rX   ÚTimeValueAxis.__init__«  s$   € Ø×#×#Ð#Ø#'×#>Ñ#>ˆDÔ Ø!ˆÖr3   c                óz  € V P                   Ef   V P                  V P                  ,
          pV\        \	        V P
                  ^,
          4      \	        V P                  4      V P                  ,          4      ,          pW P                  8¼  d   V P                  pRV n	        MQW P                  8¼  d   V P                  pRV n	        M-W P                  8¼  d   V P                  pRV n	        M	^pRV n	        W0n        V^8”  d   \        W#,          4      p\        V4      V,          V n        R# V P                   V n        R# )rò  NÚdaysÚhoursÚminutesÚseconds)rr  r—  r–  rC   rœ  rl  r�   rk  Ú_dcÚ_unitÚ_hcÚ_mcÚ_unitdrK   r#   r¶  )rV   ró  rô  rŒ   s   &   r0   rµ  ÚTimeValueAxis._calcValueStep°  sâ   € à�>‰>Ó!Ø—~‘~¨¯©Õ6ˆHØ"¤S¬¨t×/@Ñ/@ÀÕ/BÓ)CÄUÈ4Ï<É<ÓEXÐY]×YpÑYpÕEpÓ%rÕrˆKàŸh™hÔ&Ø—H‘H�Ø#�•
Ø§¡Ô(Ø—H‘H�Ø$�•
Ø§¡Ô(Ø—H‘H�Ø&�•
à�Ø&�”
ØŒKØ�ŒsÜ! +¥-Ó0�Ü-¨kÓ:¸QÕ>ˆDŽOà"Ÿn™nˆDŽOr3   c                ó,  € V P                   pV\        V P                  4      3pW0P                  9   d   V P                  V,          pEM6\	        V4      pV P                   Uu. uF  qfV,          NK  	  ppV P
                  ^ ,          p\        V4      '       d   WX3R lpMÑV Uu. uF  pRV,          NK  	  p	p\        R V	 4       4      p
V^8X  d   VRV
,          3R lpM‘W P                  8X  d   ^M^<pV Uu. uF  qf\        V4      ,
          V,          NK  	  pp\        V4      '       d7   W P                  8X  d   RMW P                  8X  d   RMRpW[R	W�3,          3R
 lpMVRW¨3,          3R lpW@P                  V&   V! V4      # u upi u upi u upi )r(   c                 ó$   € R W,          V3,          # )z%.0f%sr+   )r-   Úufr—   s   &&&r0   r1   Ú6TimeValueAxis.timeLabelTextFormatter.<locals>.<lambda>Ó  s   € ¨H¸½¸Q°xÖ,?r3   z%.10fc              3   ó�   "  € T F<  p\        VP                  R 4      4      VP                  R4      ,
          ^,
          x € K>  	  R# 5i)Ú0Ú.N)r;   Úrstripr"  )Ú.0rM   s   & r0   Ú	<genexpr>Ú7TimeValueAxis.timeLabelTextFormatter.<locals>.<genexpr>Ö  s2   é € ÐLÉÀ1œC §¡¨£Ó.¨q¯w©w°s«|Õ;¸A×=Ò=Ëùs   ‚AAz%%.%dfsc                 ó    € W V,          ,          # r*   r+   ©r-   r·  Úfmts   &&&r0   r1   r¸  Ø  s
   € ¸sÈÅd¾|r3   ÚhrŸ  r—   z%%d%s%%d%%sc           	      óŽ   € V\        W,          4      \        W,          \        W,          4      ,
          V,          4      3,          # r*   rJ   )r-   r·  ÚfmrÂ  s   &&&&r0   r1   r¸  ß  s8   € ÐPSÔWZÐ[\Õ[_ÓW`ÔadÐfgÕfjÔmpÐqrÕquÓmvÕfvÐxzÕezÓa{ÐV|ÖP|r3   z%%.%df%sc                 ó    € W V,          ,          # r*   r+   rÁ  s   &&&r0   r1   r¸  á  s   € ÈÐQSÍtÎr3   )r³  Útupler^   r¦  rœ  r°  rN   rG   r¯  rK   r²  )rV   ÚvalrÍ  r›   rÂ  r·  rM   r­   r—   ÚstvÚstvlrÅ  ÚfvÚs1s   &&            r0   r¥  Ú$TimeValueAxis.timeLabelTextFormatterÉ  s^  € Ø�K‰KˆØŒu�T×%Ñ%Ó&Ð'ˆØ×$Ñ$Ô$Ø×&Ñ& qÕ)ŠCä�q“ˆBØ $× 0Ò 0Ó1Ñ 0˜1�B—$�$Ñ 0ˆBÐ1Ø—
‘
˜1•ˆAÜ�r�{Š{Ø#%Ó?‘á,.Ó/©B q�w —{�{©B�Ð/ÜÑLÉÓLÓL�Ø�a”4Ø&(¨Y¸Õ-=ÓK‘Cð  !§(¡(œ{™°�BÙ35Ó6±2¨aœs 1›v�: rŸ/˜/±2�BÐ6Ü˜r—{’{Ø$%§x¡x¤K™S¸QÇÁ¼[±cÈc˜Ø*,¸ÈÈÕ8NÓ|™à*,°¸t¸hÕ1FÓT˜Ø&)× Ñ  Ñ#á�3‹xˆùò) 2ùò
 0ùò 7s   Á"FÂ$FÃ8!F)r¦  r°  r³  r¶  rm  N)rq   rr   rs   rt   r²  r±  r¯  rX   rµ  r¥  rv   rw   rx   s   @r0   r£  r£  ¦  s0   ø‡ € Ø
€CØ
ˆS�&€CØ
ˆS�&€Cò"ò
-÷2ð r3   r£  c                   ó&   a € ] tR tRt o R tRtV tR# )ÚXTimeValueAxisiè  c                ón   € \         P                  ! V .VO5/ VB  \        P                  ! V .VO5/ VB  R # r*   )rþ  rX   r£  r§  s   &*,r0   rX   ÚXTimeValueAxis.__init__é  s2   € Ü×Ò˜DÐ. $Ò.¨Ò.Ü×Ò˜tÐ1 TÒ1¨DÔ1r3   r+   N©rq   rr   rs   rt   rX   rv   rw   rx   s   @r0   rÏ  rÏ  è  s   ø‡ € ÷2ð 2r3   rÏ  c                   ó¬   a € ] tR tRt o Rt]! ]]! ]RR7      ]! ]	RR7      ]! ]	RR7      ]! ]
! ]]34      RR7      ]! ]	RR7      R	7      tR
 tR tRtV tR# )ÚAdjYValueAxisií  zˆA Y-axis applying additional rules.

Depending on the data and some built-in rules, the axis
may choose to adjust its range and origin.
z+When true add percent sign to label values.rG  r€  r‚  z8Skip/Keep lowest tick label when true/false.
Or skiplistzadd this to the labels)rI  ÚleftAxisPercentÚleftAxisOrigShiftIPCÚleftAxisOrigShiftMinÚleftAxisSkipLL0ÚlabelVOffsetc                ó–   € \         P                  ! V 3/ VB  ^V n        ^V n        RV n        ^V n        ^ ;V n        V n        RV n        R# )r  g333333Ã?N)	r•  rX   r‡  rÕ  rÖ  r×  rØ  rÙ  rs  rN  s   &,r0   rX   ÚAdjYValueAxis.__init__û  sL   € Ü×Ò˜DÑ& 2Ò&ØˆÔØ ˆÔØ$(ˆÔ!Ø$&ˆÔ!Ø34Ð4ˆÔ˜tÔ0ØˆŽr3   c           
     ó¬  € ^ RI HpHp V P                  V P                  rCV P
                  p\        \        V3R l. RO4      4      pV'       g   V.pV P                  V P                  r‡V'       d¶   WC,
          V8  d©   V! W4WgR7      R,          w  ršW©,
          V8  d{   Wš,           R,          p\        W¸R,          ,
          V4      p	\        W¸R,          ,           V4      p
V^d8¼  d   V	^d8  d   V
^d,           V	,
          p
^dp	MV^ 8¼  d   V	^ 8  d   W©,
          p
^ p	WšuV n        V n        V! V P                  V P                  ^W`P                  WpP                  R7      w  rÍV P                  pV'       Ed   V^,          V^ ,          ,
          p\        V4      '       g   Wþ,          ;ppMWþ^ ,          ,          pWþ^,          ,          p\!        V RV^ ,          4      p\!        V RVR,          4      pVV^ ,          ,
          V8  d   V P                  V,
          V n        VR,          V,
          V8  d   V P                  V,           V n        V! V P                  V P                  ^W`P                  WpP                  R7      w  rÍV^ ,          V n        VR,          V n        WÀn        V P$                  f   WÐn        MV P$                  V n        \)        V P                  ^d,
          4      R
8  d‘   V P+                  4        V P                  V P                  pp\        V P,                  V P.                  ,          VV,
          V P0                  ,          V P2                  ,          4      pV P                  V,
          V n        V P4                  '       d<   \        V P4                  4      '       d   V P4                   F	  p RVV&   K  	  RV^ &   R	# R	#   \6         d     K$  i ; i)z$Adjusts the value range of the axis.)Úfind_good_gridrh  c                 ó
   € W8*  # r*   r+   )r-   rŸ  s   &&r0   r1   Ú,AdjYValueAxis._rangeAdjust.<locals>.<lambda>
  s   €  a¢dr3   )r®  Úgrid:Nr¨  NrL  )r  r®  Úpercentrà  rÙ  rœ  r�  Nr®  r3  )r  é   é   é   é   é	   r­  )Úreportlab.graphics.charts.utilsrÝ  rh  r–  r—  rl  r6   r:   rr  r‡  rC   rG   rÕ  rÙ  rt  r&   rŽ   r^   rm  r—  r½   rµ  rÖ  r¶  r×  r�   rØ  rÃ   )rV   rÝ  rh  Úy_minÚy_maxrŸ  r®  rr  r‡  r×   r   Úymr,   rš   r¾  rË  rÊ  Ú_nri   ÚvMaxÚvMinr-   s   &                     r0   r·  ÚAdjYValueAxis._rangeAdjust  s  € ÷ 	JØ—~‘~ t§~¡~ˆuØ×ÑˆÜ” 1Ó*ª=Ó9Ó:ˆß�q�c�!à#'§>¡>°4×3EÑ3E�=ß˜U�]¨]Ô:Ù# E°1ÔDÀRÕH‰FˆBØ�w˜Ô&Ø•e˜S•[�Ü˜¨#Õ-Õ-¨eÓ4�Ü˜¨#Õ-Õ-¨eÓ4�Ø˜#”: " S¤&Ø˜c� B��BØ‘BØ˜A”X " Q¤$Ø��BØ�BØ-/Ð*ˆDŒN˜DœNá�T—^‘^ T§^¡^¸1À×K_ÑK_Ðen÷  ~Oñ  ~Oô  P‰ˆØ×!Ñ!ˆßˆ3Ø�A•$�q˜•t•)ˆBÜ˜—:’:Ø�&Ð �‘Rà˜A�•Y�Ø˜A�•Y�Ü˜˜l¨1¨Q­4Ó0ˆBÜ˜˜l¨1¨R­5Ó1ˆBØ�A�a•D�y˜2Œ~°·±ÀÕ0C˜tœ~Ø��u�R�x˜"Œ}¨t¯~©~ÀÕ/B˜dœnÙ˜Ÿ™¨¯©¸qÀA×OcÑOcÐir÷  BSñ  BSô  T‰DˆAà˜1�ˆŒØ˜2�ˆŒØÔØ×ÑÒ'Ø$%Õ!à$(×$8Ñ$8ˆDÔ!äˆt�~‰~˜cÕ!Ó" 4Ô'Ø×ÑÔ!ØŸ™¨¯©�$ˆDÜ�D×-Ñ-¨d¯o©oÕ=Ø˜$•Y × 9Ñ 9Õ9¸$¿,¹,ÕFóHˆAà!Ÿ^™^¨aÕ/ˆDŒNà××ÐÜ�T×)Ñ)×*Ò*Ø×-Ô-�AðØ!˜˜!›ñ .ð
 ˆAˆa‹Dñ  øô
 &ô Úðús   Î2OÏOÏO)r—  r^   r—  r–  rÙ  rÖ  r×  rÕ  rØ  r‡  rs  N)rq   rr   rs   rt   ru   rQ  r•  rR  r   r   r   r   rS  rX   r·  rv   rw   rx   s   @r0   rÔ  rÔ  í  so   ø‡ € ññ
 ˜jÙ& yÐ7dÔeÙ+¨HÐ;_Ô`Ù+¨HÐ;UÔVÙ&¡x°¸?Ð0KÓ'Lð  TOô  PÙ# HÐ3KÔLô
€Hò÷=ð =r3   rÔ  c                   ó8   a € ] tR tRt o R tR tR tR tRtV t	R# )ÚLogValueAxisiC  c                ó¶   € V P                   \        \        V P                  4      \        V P                  4      ,
          4      ,          V n        V P
                  # rØ  )r�   rœ  Ú
math_log10r—  r–  rÙ  r˜  s   &r0   r“  ÚLogValueAxis._calcScaleFactorE  sD   € ð
 !ŸL™L¬5Ü�t—~‘~Ó&¬°D·N±NÓ)CÕCó,Eõ EˆÔà× Ñ Ð r3   c                óX  € V P                   pV P                  p\        WP                  ^ V P                  R7      p\        WP                  ^ V P                  R7      pVf   TpVf   TpW#8”  d)   \        RV P                  P                  V3,          4      hV^ 8:  d(   \        V P                  P                  : RV: R24      hV P                  pV'       dÆ   \        V4      p\        V4      p\        V4      '       g   Wf3pV^ ,          ;'       g    ^ p	V^,          ;'       g    ^ p
V P                  Wš,           ,
          pW‡,
          \        V4      ,          pWyV,          ,          pWŠV,          ,          p\        V^
V,          4      p\!        V^
V,          4      pW n        W0n        R# )r(   )r>   Nz7%s: valueMin=%r should not be greater than valueMax=%r!z: valueMin=z! negative values are not allowed!)rp  rq  rE   r  r>   rH   rý  r  Ú_LogValueAxis__name__valueMinrq   rw  rò  r&   r�   rœ  rC   rG   r–  r—  )rV   r�  rp  rq  ÚaMinÚaMaxrÄ  ÚlMinÚlMaxÚa0Úa1rš   rÌ  s   &&           r0   rŽ  ÚLogValueAxis._setRangeO  sg  € Ø—=‘=ˆØ—=‘=ˆÜ˜
§?¡?°1Àt×G]ÑG]Ô^ˆÜ˜
§?¡?°1Àt×G]ÑG]Ô^ˆØÒ¨˜XØÒ¨˜XØÔÜÐVÐZ^×ZhÑZh×ZyÑZyð  |Dð  ZEõ  Eó  Fð  FØ�QŒ;ÜÐSW×SaÑSa×SjÔSjÓksÐtÓuÐuØ×"Ñ"ˆßÜ˜dÓ#ˆDÜ˜dÓ#ˆDÜ˜—:’: S X˜sØ�Q•—�˜1ˆBØ�Q•—�˜1ˆBØ—‘ ¥Õ(ˆAØ•)œU 1›XÕ%ˆBØ�r•E�MˆDØ�r•E�MˆDÜ˜8 B¨¥HÓ-ˆHÜ˜8 B¨¥HÓ-ˆHØ!ŒØ!Žr3   c                óØ  € \        V P                  4      ;r\        V P                  4      ;r4V P                  pV'       dG   VR9   d   \	        V4      pWc8  d
   V^,           MTpVR9   d   \	        V4      pWa8”  d
   V^,
          MTp. P
                  p\	        V4      pW�8  d
   V^,          p\	        V4      V,
          ^,           p	\        \	        W�P                  ,          4      ^4      pWi,          V P                  8”  d
   V^,          pW`n         Wƒ8”  d   MW�8¼  d   V! ^
V,          4       W†,          pK'  W8w  d   ^
V,          V n        W48w  d   ^
V,          V n        VP                  # )rŽ  r°  r¯  )
rò  r–  r—  ry  rK   r5  rG   rl  Ú	_powerIncr6  )
rV   rp  r¼  rq  r½  rž  r±   r,   r­   r®  s
   &         r0   rÞ  ÚLogValueAxis._calcTickPositionsj  s#  € ä$ T§^¡^Ó4Ð4ˆÜ$ T§^¡^Ó4Ð4ˆØ�_‰_ˆßØÐ'Ô'Ü˜“M�Ø%&¤Z˜A žE°Q�ØÐ%Ô%Ü˜“M�Ø%&¤Z˜A žE°Q�à�I‰IˆÜ�‹]ˆØŒ;˜˜a�˜Ü�‹M˜BÕ Õ"ˆÜ”�A×'Ñ'Õ'Ó(¨Ó+ˆØ�3ˆt× Ñ Ô  ! q¥& !ØŒØØŒ{˜EØŒ|™Q˜r 2�vœYØ�GŠBØŒ>¨B°­L˜4œ>ØŒ>¨B°­L˜4œ>Ø�z‰zÐr3   c                óÜ  € \        V R 4      '       g   V P                  4        V P                  p\        V R4      '       Egš   . P                  p\	        V P
                  4      p\	        V P                  4      ^,           p\        V4      pV P                  pV^8X  d¡   ^
\        V P                  4      ,          p^pV P                  ^
8X  d   ^pWT8  di   \        W€P                  4       FE  p	Wy,          ^
V,          ,          p
W P
                  8”  g   K+  W P                  8  g   K=  V! V
4       KG  	  WV,          pKn  M�\        V P                  ^,           V^,
          4      pV'       d"   Wk,          ^ 8X  d
   Wk,          pMV^,          pK)  ^p\        V4      p ^
V,          p
W P                  8¼  d   MW¡9  d	   V! V
4       WV,          pK3  VP                  V n        V P                  V n        V# )r^   rÐ  )re   rf   r^   r5  rò  r–  r—  Úroundrþ  rœ  r  r©   rC   r6  rÐ  )rV   r  r,   rp  rq  r­   r±   Úfacr�   rí  rM   Úngs   &           r0   r  ÚLogValueAxis._calcSubTicks†  s€  € Ü�t˜M×*Ò*Ø×"Ñ"Ô$Ø×ÑˆÜ�tÐ,×-Ó-Ø—	‘	ˆAÜ! $§.¡.Ó1ˆHÜ! $§.¡.Ó1°!Õ3ˆHÜ�x“ˆBØ—‘ˆAØ�!ŒtØœ5 §¡Ó1Õ1�Ø�Ø—?‘? bÔ(°!¨%Ø”mÜ" 5¯©Ö9˜Ø�E 2 r¥6�N˜ØŸ~™~Ö-°!·n±nÖ2DÙ˜ažDñ :ð •G’Bð $ô ˜Ÿ™¨Õ*¨1¨Q­3Ó/�ßØ� ”{Ø�˜ØØ˜!•G’Bà�AÜ˜8“_�ØØ˜B��AØŸN™NÔ*¨EØ”|Ù˜!œØ•G’BØ"#§*¡*ˆDÔØ×.Ñ.ˆÔØˆ
r3   )rþ  rÙ  rÐ  r^   r—  r–  N)
rq   rr   rs   rt   r“  rŽ  rÞ  r  rv   rw   rx   s   @r0   rð  rð  C  s   ø‡ € ò!ò"ò6÷8&ð &r3   rð  c                   ó&   a € ] tR tRt o R tRtV tR# )ÚLogAxisTickLabelleri¯  c                ó’   € \        V4      p\        V^ 8  d
   VR,
          MVR,           4      pV^ 8X  d   R# V^8X  d   R# RV,          # )r(   çü©ñÒMbP?Ú1Ú10z10<sup>%s</sup>)rò  rK   )rV   rk   rü  r8   s   &&& r0   rm   ÚLogAxisTickLabeller.__call__°  sC   € Ü�uÓˆÜ˜1˜Qœ3��%– A e¥GÓ,ˆØˆaŒ4™ØˆaŒ4™Ø  1Õ$Ð$r3   r+   N)rq   rr   rs   rt   rm   rv   rw   rx   s   @r0   r  r  ¯  s   ø‡ € ÷%ð %r3   r  c                   ó*   a € ] tR tRt o RtR tRtV tR# )ÚLogAxisTickLabellerSi·  zVsimple log axis labeller tries to use integers
and short forms else exponential formatc                ó&  € \        V4      p\        V^ 8  d
   VR,
          MVR,           4      pV^ 8X  d   R# V^ 8”  d   RVR,          ,           MR^V,           ) R,          ,           R,           pRV,          p\        V4      \        V4      8  d   V# T# )r(   r  r	  rº  z0.z%.0e)rò  rK   r;   )rV   rk   rü  r8   Úpr—   Úses   &&&    r0   rm   ÚLogAxisTickLabellerS.__call__º  sz   € Ü�uÓˆÜ˜1˜Qœ3��%– A e¥GÓ,ˆØˆaŒ4™Ø˜1œˆC��#•ŽI $¨!¨A­#¨¨s­
Õ"3°CÕ"7ˆØ�e�^ˆÜ˜“WœS ›V”^ˆrÐ*¨Ð*r3   r+   Nre  rx   s   @r0   r  r  ·  s   ø‡ € ñ/÷+ð +r3   r  c                   ó&   a € ] tR tRt o R tRtV tR# )ÚLogAxisLabellingSetupiÂ  c                ón  € \         ež   \        \        4      V n        V P                  ^8X  d5   RV P                  n        RV P                  n        ^ V P                  n        M3RV P                  n        ^ V P                  n        RV P                  n        \        4       V n	        R # \        4       V n	        R # )Nr8   r®  r  )r"   r   r!   rn  r  r  rG  r  r  rm  r  r˜  s   &r0   rX   ÚLogAxisLabellingSetup.__init__Ã  sz   € ÜÒ)Ü1´&Ó9ˆDŒKØ�‰ Ô!Ø(+�—‘Ô%Ø!#�—‘”Ø!"�—‘•à(+�—‘Ô%Ø!"�—‘”Ø!#�—‘”Ü#6Ó#8ˆDÖ ä#7Ó#9ˆDÖ r3   )rm  rn  NrÒ  rx   s   @r0   r  r  Â  s   ø‡ € ÷:ð :r3   r  c                   ó>   a € ] tR tRt o ]! ]R7      tR tR tRt	V t
R# )ÚLogXValueAxisiÒ  ©rI  c                óZ   € \         P                  V 4       \        P                  V 4       R # r*   )rþ  rX   r  r˜  s   &r0   rX   ÚLogXValueAxis.__init__Õ  ó   € Ü×Ñ˜DÔ!Ü×&Ñ& tÖ,r3   c                óN  € RpV P                   '       g   Q V4       hVf   ^ pVR8X  d8   V P                  V P                  \        V P                  4      ,          ,
          # V P                  V P                  \        V4      \        V P                  4      ,
          ,          ,           # ©zÒConverts a numeric value to a Y position.

The chart first configures the axis, then asks it to
work out the x value for each point when plotting
lines or bars.  You could override this to do
logarithmic axes.
r  r¥  )r‰  ri   rÙ  rò  r–  ©rV   rü  Úmsgs   && r0   rg   ÚLogXValueAxis.scaleÙ  ó‚   € ð BˆØ××ÐÐ$ Ó$ÐØŠ=ØˆEØ�BŒ;Ø—7‘7˜T×.Ñ.´¸D¿N¹NÓ1KÕKÕKÐKØ�w‰w˜×*Ñ*¬j¸Ó.?Ä*ÈTÏ^É^ÓB\Õ.\Õ]Õ]Ð]r3   r+   N)rq   rr   rs   rt   rQ  rþ  rS  rX   rg   rv   rw   rx   s   @r0   r  r  Ò  s    ø‡ € Ù˜JÔ'€Hò-÷^ð ^r3   r  c                   ó>   a € ] tR tRt o ]! ]R7      tR tR tRt	V t
R# )ÚLogYValueAxisiê  r  c                óZ   € \         P                  V 4       \        P                  V 4       R # r*   )r•  rX   r  r˜  s   &r0   rX   ÚLogYValueAxis.__init__ì  r  r3   c                óN  € RpV P                   '       g   Q V4       hVf   ^ pVR8X  d8   V P                  V P                  \        V P                  4      ,          ,
          # V P                  V P                  \        V4      \        V P                  4      ,
          ,          ,           # r  )r‰  rj   rÙ  rò  r–  r  s   && r0   rg   ÚLogYValueAxis.scaleð  r!  r3   r+   N)rq   rr   rs   rt   rQ  r•  rS  rX   rg   rv   rw   rx   s   @r0   r#  r#  ê  s    ø‡ € Ù˜JÔ'€Hò-÷^ð ^r3   r#  rC  )ÚjanÚfebÚmarÚaprÚmayÚjunÚjulÚaugÚsepÚoctÚnovÚdec)é   é   r4  r  r4  r  r4  r4  r  r4  r  r4  )rÒ   r¨  é   rã  é   é   é<   éx   é´   éð   i,  ih  i¤  ià  i  iX  iÐ  iH  iÀ  i8  i°  i`	  )YÚ__version__ru   Úmathr   rò  Ú	functoolsr   Úreportlab.lib.validatorsr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   Úreportlab.lib.attrmapÚreportlab.libr   Úreportlab.graphics.shapesr   r   r   r   r   r   r   r   Úreportlab.graphics.widgetbaser   r   Ú$reportlab.graphics.charts.textlabelsr   r    r!   r"   rç  r#   Ú reportlab.graphics.widgets.gridsr$   Úreportlab.lib.colorsr%   Úreportlab.lib.utilsr&   r@   rE   rH   rN   rP   r{   rž   r¶   rÇ   rF  rU  rÀ  rÃ  rÅ  rð  rù  rA  rb  rû  rh  rþ  r!  r#  r)  r+  r“  rq  r5  r•  r£  rÏ  rÔ  rð  r  r  r  r  r#  r+   r3   r0   Ú<module>rI     s  ðð €ð	€õ< %Ý ÷G÷ G÷ G÷ Gñ Gô $Ý $ß }× }Ó }ß Iß ]Ó ]Ý ;Ý 7Ý &Ý %ô
Gôaôbò÷"ñ "÷<Gñ G÷RCñ C÷J7ñ 7ô$jˆVô jôXˆhô ôB6�6ô B6òHeòe÷;ñ ;ôzˆgô ô,o�G˜Lô oôbo�G˜Lô o÷b0ñ 0ñ /Ð ôR	1�ô R	1ôhI�˜ô Iòj T€Ú;€òô˜Yô ñ* /Ó0Ð à
Y€ôz˜:ô zôxI�˜ô I÷V>ñ >ôD2�] :ô 2ô
T�Jô Tôli�9ô iôX%˜,ô %ô	+˜<ô 	+÷:ñ :ô ^�LÐ!6°zô ^ô0^�LÐ!6°zö ^r3   