
    Q?h             
          S r SrSrSSKJrJr  SSKJr  SSKJ	r	J
r
Jr  SSKJr  SSKJrJrJrJrJrJrJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJ r J!r!  SSKJ"r"  SSK#J$r$  SSSSSS.r%SSSSSS.r& " S S\	5      r' " S S5      r(S r)S r*S r+SKS jr,\RZ                  4S jr.S r/S r0S  r1S\RZ                  4S! jr2 " S" S#\35      r4 " S$ S%\35      r5\$" S&S'5      r6\$" S(S)5      r7S*r8 " S+ S,\5      r9S-S.S.S/S0S1S2S3S4.r: " S5 S6\95      r;\<" \:R{                  5       5      r> " S7 S85      r?S9 r@S: rA\(" S;S<S=S>\R                  4S?/5      rC\(" S@S<S=SA\R                  4S?/5      rD\(" SBS<S=S>\R                  4S@S<S=S\R                  4SCS<SDS\R                  4SES<SFS\R                  4S?/5      rE\(" SBS<S=S>\R                  4S@S<S=S\R                  4SCS<SDS\R                  4SES<SFS\R                  4S?/5      rG\(" SGS<SDS\R                  4SGSHS=S>\R                  4SCSFS=S\R                  4S?/5      rI\JSI:X  a  SSJKKJLrL  \L" 5         gg)L)Table
TableStyle	CellStyle	LongTablez3.5.21a  
Tables are created by passing the constructor a tuple of column widths, a tuple of row heights and the data in
row order. Drawing of the table can be controlled by using a TableStyle instance. This allows control of the
color and weight of the lines (if any), and the font, alignment and padding of the text.

None values in the sequence of row heights or column widths, mean that the corresponding rows
or columns should be automatically sized.

All the cell values should be convertible to strings; embedded newline '\n' characters
cause the value to wrap (ie are like a traditional linefeed).

See the test output from running this module as a script for a discussion of the method for constructing
tables and table styles.
    )FlowablePreformatted)	rl_config)PropertySetParagraphStyle_baseFontName)colors)annotateExceptionIdentStrflattenisStrasNativestrTypes	__UNSET__)isListOfNumbersOrNone)fp_str)ABag)stringWidth)IndenterNullActionFlowable)
LIIndenter)
namedtupleN      )Nbuttround
projectingsquared)Nmitermitrer    bevelc                   h    \ rS rSr\rSrSrSrSr	Sr
SrSrSrSrS	rS
rSrSrSrSrSS jrSS jrSrg)r   *   
            r   blackLEFTwhiteBOTTOMNc                 :    Xl         Ub  UR                  U 5        g g N)namecopy)selfr2   parents      K/var/www/html/env/lib/python3.13/site-packages/reportlab/platypus/tables.py__init__CellStyle.__init__;   s    	KK     c           	          Uc  [        U R                  5      n[        U 5       H0  nUR                  S5      (       a  M  [	        X[        X5      5        M2     U$ )N_)r   r2   dir
startswithsetattrgetattr)r4   resultr2   s      r6   r3   CellStyle.copy?   sJ    >tyy)FIDs##XF'$"56  r9   )r2   r1   )__name__
__module____qualname____firstlineno__r   fontnamefontsizeleadingleftPaddingrightPadding
topPaddingbottomPaddingfirstLineIndentcolor	alignment
backgroundvalignhref	directionshapingdestinationr7   r3   __static_attributes__ r9   r6   r   r   *   s\    HHGKLJMOEIJFDIGKr9   r   c                   0    \ rS rSrSS jrS rS rS rSrg)	r   G   Nc           	      <   U(       aU  UR                  5       S S  nUR                  U l        S H*  n[        X%5      (       d  M  [        X[	        X%5      5        M,     O/ nU[        U=(       d    / 5      -   U l        0 U l        U R                  R                  U5        g )NspaceBefore
spaceAfter)getCommands_optshasattrr>   r?   list_cmdsupdate)r4   cmdsr5   kwpcmdsas         r6   r7   TableStyle.__init__H   s|    &&(+EDJ16$$D76#45 2 ET$*"--



"r9   c                 :    U R                   R                  U5        g r1   )rb   append)r4   cmds     r6   addTableStyle.addX   s    

#r9   c                 Z    SSR                  [        [        U R                  5      5      -  $ )Nz!TableStyle(
%s
) # end TableStylez  
)joinmapreprrb   r4   s    r6   __repr__TableStyle.__repr__Z   s!    4v{{3tTZZCX7YYYr9   c                     U R                   $ r1   )rb   rr   s    r6   r^   TableStyle.getCommands\   s    zzr9   )rb   r_   NN)	rB   rC   rD   rE   r7   rl   rs   r^   rV   rW   r9   r6   r   r   G   s     Zr9   r   c                 n    [        U [        [        45      (       + =(       a    S=(       d    [        U 5      $ Nr   )
isinstancetuplera   len)xs    r6   _rowLenr~   _   s$    !U4L))/a93q69r9   c                    / nUR                   n/ nUR                   n/ nUR                   nUnS=pU  H  n[        U[        5      (       a  [        U5      R	                  5       nU(       d  SnU
S-  n
OoUR                  S5      (       a$  [        USS 5      nX-  n	U" [        U5      5        O5US:X  a  U" [        U5      5        O[        U5      nX-  nOUc  U
S-  n
OX-  nU" U5        M     [        SU5      nU[        SU	5      -  nU H  nX%==   U-  ss'   XU   -  nM     [        SU5      n[        U5      nU(       a&  U
S:H  =(       a    X-  =(       d    SnU H  nXU'   M	     U$ )	a   check list V for percentage or * values
1) absolute values go through unchanged
2) percentages are used as weights for unconsumed space
3) if no None values were seen '*' weights are
set equally with unclaimed space
otherwise * weights are assigned as None        Nr   %*g      Y@r   )	rj   rz   r   strstripendswithfloatr|   max)VavailRrIiJjswnvfms                 r6   _calc_pcr   b   s\    	A	A
A	A
A	AAJAa!!AAQC!CR&M#a&	C#a&	!HYFAFA	!' ( 	Bq	A	#d1+A			qT	  	Bq	AAAT\ac!TAaD Hr9   c                    US:X  a  U $ SU S   S   U S   S   -   -  SU S   S   U S   S   -   -  4nSU S   S   U S   S   -   -  SU S   S   U S   S   -   -  4nSU S   S   U S   S   -   -  SU S   S   U S   S   -   -  4nSUS   US   -   -  SUS   US   -   -  4nSUS   US   -   -  SUS   US   -   -  4nSUS   US   -   -  SUS   US   -   -  4nUS:X  a  U S   X%U/$ XvX@S   /$ )zRcalculate all or half of a bezier curve
kind==0 all, 1=first half else second halfr         ?r   r   r+   rW   )PkindQ0Q1Q2R0R1S0s           r6   _calcBezierPointsr      sk    Qw1Q471Q47?#C1a1a$9:1Q471Q47?#C1a1a$9:1Q471Q47?#C1a1a$9:2a5A;RU2a5[ 122a5A;RU2a5[ 122a5A;RU2a5[ 12"&'!R2>b1>r9   c                    Xc-  nU S:X  a!  US:X  a  Uu  pX-
  U	4X-
  U	4XU-   4XU-   4/n
OU S:X  a!  US:X  a  Uu  pXU-
  4XU-
  4X-
  U4X-
  U4/n
O^U S:X  a!  US:X  a  Uu  pX-   U4X-   U4XU-
  4XU-
  4/n
O7U S:X  a!  US:X  a  Uu  pXU-   4XU-   4X-   U	4X-   U	4/n
O[        SX4< 35      eUS:X  a  U
S   S   U
S   S   :  d  US	:X  a"  U
S   S
   U
S   S
   :  a  U
R                  5         [        X5      n
U
$ )Nrightbottomtopleftz&Unknown quadrant position (xpos,ypos)=
left-rightr   r   
bottom-topr   )
ValueErrorreverser   )xposyposcornerr   r   rS   r   txhiylor   yhixlos                r6   _quadrantDefr      se   	AW}xgs^SUCL3a.3a.I	w4;7^S'NSWcNSWcNK	v$+gs^SWcNS'NS'NK	v$.7^S'NSWcNSWcNKA4+QRR,1Q471R58#3y,7NSTUVSWXYSZ[\]_[`ab[cSc			!"AHr9   c                    U(       a  UR                  US5      nU(       a  XS   S   U-
  :  d  X$S   S   U-   ::  a
  U " XX#5        gSn[        U5      nXU-
  :  aW  Xg:  aR  XF   u  pXU-   ::  d  XU-
  :  a  US-  nM*  [        X5      n
[        X)5      nX:  a	  U " XX5        UnXU-
  :  a  Xg:  a  MR  XU-
  :  a
  U " XX#5        gg)z
Draw horizontal lines; do not draw through regions specified in hBlocks
This also serves for vertical lines with a suitable canvLine
Nr   r   r   )getr|   r   min)canvLinescpecpyhBlocksFUZZr   r   x0x1i0i1s               r6   _hLiner      s    
 '++a-c2;q>$..#qz!}T7I2IsLd(lqsZFBt8|rt8|QSBSBvxb+C d(lqs 4x<#.<r9   c                 `    SUS-
  -  U-  nX&-  n[        U5       H  nU" XX5        X$-  nM     g )Nr   r   )range)r   r   r   r   wscountoffsetidxs           r6   
_multiLiner      s:    %']2FKAU| 	 r9   c                      X   $ ! [          a+     [        U 5      nX&s=::  a  U::  a  O   OUs $  O!     O= ff = f[        SU SU  SU< 35      e)zLprivate converter tries map(value) low<=int(value)<=high or finally an errorzBad z value z in )KeyErrorintr   )valuerp   lowhighr2   rk   ivalues          r6   _convert2intr      sh    z 	ZF D - 	 tD6tC7;
<<s     
;22;7;;c                 4     U R                  U5      $ !    g= fNr   )r   )objr   s     r6   	_endswithr      s    ||As    c                 `   0 nU(       d  [        U 5      n[        [        S UR                  5        5       5      5       H  u  nu  pxXs:  a  M  US-  n[	        [        Xx5       V	s/ s H  oU	   UR                  U	S5      -   PM     sn	5      n
XU-
  :  a  MX  [        Xx5       V	s/ s H  oU	   b  M
  U	PM     nn	U(       d  M  Xj-  nU[        [        U5      5      -  nU H  n	UR                  U	S5      U-   XY'   M     M     UR                  5        H  u  pX==   U-  ss'   M     g s  sn	f s  sn	f )Nc              3   ,   #    U  H
  u  pX!4v   M     g 7fr1   rW   ).0ikivs      r6   	<genexpr>spanFixDim.<locals>.<genexpr>   s     %L;K%"rg;Ks   r   r   )r|   reversedsorteditemssumr   r   r   )V0r   spanConslimr   Mr   r   r   r}   r   Xs               r6   
spanFixDimr      s   
Ac"g f%L8>>;K%LMN	'27H
a%,7,Q1aeeAaj,78f9hb611Q6(		U3q6]A551:a<AD  O wwy		  86s   $!D&
#	D+0D+c                       \ rS rSrSrg)_ExpandedCellTuple   rW   N)rB   rC   rD   rE   rV   rW   r9   r6   r   r      s    r9   r   c                       \ rS rSrS rSrg)_ExpandedCellTupleEx   c                 T    [         R                  X5      nX%l        X5l        XEl        U$ r1   )r{   __new__tagTypealtTextextras)clsseqr   r   r   r4   s         r6   r   _ExpandedCellTupleEx.__new__   s$    }}S%r9   )r   r   r   N)rB   rC   rD   rE   r   rV   rW   r9   r6   r   r      s    r9   r   RoundingRectDefszx0 y0 w h x1 y1 ar SLRoundingRectLinez&xs ys xe ye weight color cap dash join)
splitfirst	splitlastinrowsplitstartinrowsplitendc                      \ rS rSrSSSSSSSSSSSSSSSSSS\S4S jrS rS rS:S jrS	 r	S
 r
S;S jrS<S jrS=S jrS rS>S jrS rS rS=S jrS rS rS rS rS rS rS rS rS rS rS rS rS rS  r S! r!S" r"S# r#S$ r$S% r%S& r&S?S' jr'S@S( jr(S@S) jr)S@S* jr*S+ r+S, r,SAS- jr-S. r.SAS/ jr/S0 r0\1" \05      r0SAS1 jr2S2 r3\4Rj                  4S3 jr6S4 r7S5 r8S6 r9S7 r:S8 r;S9r<g)Br   i  Nr   r   c                 X
   Xl         U=(       d    SU l        U=(       d    SU l        [        U[        [
        45      (       d  [        SU R                  5       -  5      eUU l        [        U5      =U l
        n/ U l        [        U[        [
        45      n[        U[        [
        45      nU(       a*  [        [        [        [        U5      5      5      =U l        nOU(       a  U(       a  [        U5      nOSnU	(       d  [         R"                  n	Uc  [%        U S[         R&                  5      OUU l        U(       a  U(       d  U	S:X  a  [        U R                  5        S35      eU	S:X  a  [*        U l        S	[        [/        5       R1                  5       5      ;  a=  [3        S	5      q[6        R8                  [4        l        [6        R<                  [4        l        [*        R@                  " U S
U R,                  RB                  UU4-  [4        5        g U	S:X  a  [D        U l        g [        U RG                  5        SU	< 35      eU(       a  Xl        OU RI                  U5      =U l        nU(       d  UU/-  nO[        U5      U:w  a|  [         RJ                  (       a<  [        U[
        5      (       a'  [        U5      nUU:  a  UU-
  US   /-  UUS & O1US U nO+[        U R                  5        SU S[        U5       S35      eU(       d  UU/-  nO:[        U5      U:w  a+  [        U R                  5        SU S[        U5       S35      e[M        U5       Ht  u  nn[        U5      nUU:w  d  M  [         RJ                  (       a#  [        U[
        5      (       a  UU-
  S/-  UUS & MQ  [        U R                  5        SU SU SU S35      e   U=U l'        U l(        U=U l)        U l*        Ucf  / n[W        U5       HM  n/ n[W        U5       H(  nURY                  [[        []        UU45      5      5        M*     URY                  U5        MO     UU l/        OXl/        / U l0        / U l1        / U l2        / U l3        / U l4        / U l5        XPl6        X`l7        Xpl8        Xl9        U(       a  U Ru                  U5        U[v        La  U Ry                  U5        Xl=        Ub  UU l>        Ub  UU l?        US :w  a=  [        U5      n U (       d  [        S5      eU U:  a  UUU -
  UR-                  S5      -  -   nUU l@        g )NCENTERMIDDLEz%s invalid data typer   _longTableOptimizeerrorz$ must have at least a row and columnindicate_emptyTableStylez	%s(%d,%d)ignorez bad emptyTableAction: r   z data error - z columns in data but z column widthsz rows in data but z row heights z
 expected z not z columns in row !zJ{self.idenity()} Supplied mismatching minimum row heights of length {lmrh}r   )AidenthAlignvAlignrz   r{   ra   r   identity	_renderCBr|   _nrows_cellvaluesr   rp   r~   _ncolsr	   emptyTableActionr?   longTableOptimizer   r   	__class__globalskeysr   r  r   red	textColoryellow	backColorr7   rB   r   	identitiynormalizeDataallowShortTableRows	enumerate_rowHeights_argH
_colWidths_argWr   rj   r   rq   _cellStyles_bkgrndcmds	_linecmds	_spanCmds_nosplitCmds	_srflcmds_sircmds
repeatRows
repeatCols
splitByRow
splitInRowsetStyler   _setCornerRadii_rowSplitRanger\   r]   _minRowHeights)!r4   data	colWidths
rowHeightsstyler'  r(  r)  r*  r  r  r  r	  normalizedData
cellStylesrowSplitRanger\   r]   r  minRowHeightscornerRadiirenderCBnrows_seqCW_seqRHncolsr   r   dcellrowscellcolsr   lmrhs!                                    r6   r7   Table.__init__  s    
(($d|,,3dmmoEFF!!$i'eIuTl3Jd|4DWT1B,C(DD$+63y>5eI4N4N!1'8'@ $+40DYE`E`#aFW 	%( DMMO#44X!YZZ!:-!-%T')..2B-CC'56H'I$17$.17$.%%d;$..:Q:QRWX]9^+^`pq
 	 "8+!3  !DNN$4#55LM]L`!abb #&*&8&8&>>Dt5)#4y^U",,Id1K1K	NU7%*1Wy}o$=IabM )&5 1I DMMO#4N5'I^_bcl_m^nn|!}~~E:,$6z_%0ugEWX[\fXgWhhtuvvT?CAaAA%x00Z$5G5G"1WrdNAabE$'8
5'qcQabcadde%fgg # )324:'00$*H5\uAOOIdAa5k$:; &)	 "
  (D) %$$$MM% i'  -+"*D!(DOD }%D !mnne -uTz=;R;RSW;X.X X+r9   c                     [        U SS5      n[        U SS5      n[        U SS5      nSSKnUR                  U5      nUR                  SS5      nU R                  R
                  < S	U< S
U< SU< S3$ )z#incomplete, but better than nothingr  z	[unknown]r  r  r   N
z
  z(
 rowHeights=z,
 colWidths=z,
z
) # end table)r?   pprintpformatreplacer  rB   )r4   r   ccvrD  s        r6   rs   Table.__repr__x  si    D{3Dk2T-4^^BZZf%LPNNLcLcdefghjkkr9   c                 |    S n/ nU H+  nU Vs/ s H
  oR" U5      PM     nnUR                  U5        M-     U$ s  snf )z|Takes a block of input data (list of lists etc.) and
- coerces unicode strings to non-unicode UTF8
- coerces nulls to ''
-

c                 D    U c  g[        U 5      (       a  [        U 5      $ U $ )Nr  )r   r   )stuffs    r6   normCell%Table.normalizeData.<locals>.normCell  s"    }u&r9   )rj   )r4   r/  rM  outDatarowcelloutRows          r6   r  Table.normalizeData  sH    	 C145htnF5NN6"   6s   9c                    U R                   (       a  U R                   $ Sn[        U SS5      n[        U SS5      n[        U SS5      n[        U SS5      nU(       Ga*  SX44;  Ga"  Sn[        U5       GH  n[        U5       H  n	XX   U	   n
[        U
[        [
        [        45      (       ag  [        U
[
        [        45      (       d  U
4n
SnU
 H(  nUR                  U5      nU(       d  M  US	S S
:w  d  M(    O   U(       a  US	S S
:w  a  XUS4u  pp'OZU
SL =(       a    S=(       d    [        U
5      n
XU
p.nU=(       a    [        U
[        5      =(       a    S=(       d    SnU(       a  USU nU(       d  M    O   U(       d  GM    O   U(       a  S[        [        U5      5      -  nOSnU(       a  SWW[        U5      4-  nOSnSU R                  R                  [        U 5      X4X4-  $ )z'Identify our selves as well as possibleNr  unknownr  r  r  r   r  z>...r   z(tallest row %d)z with cell(%d,%d) containing
%sz...z"<%s@0x%8.8X %s rows x %s cols%s>%s)r  r?   r   rz   ra   r{   r   r
  r   r   r   r   rq   r  rB   id)r4   maxLenvxnrncrH  rhbr   r   r   r   vijixjxtallests                   r6   r
  Table.identity  s   ::djj(T(9-T(9-T--T=$/)B7*A2YrAaA!!T%$9::)!U4L99t1#$C #V 4A qQrsVV^ % $% 23,-!QJMBBI,"6A%&1:Jq$:AFQ!7F2q%! #" 1e% & (3s2w<7GG3r"T"X6FFBB3t~~7N7NPRSWPXZ\bi6nnnr9   c              #      #    [        U SS 5      nU H8  n[        USS 5      (       a  UR                  XBU5       H  nUv   M	     M4  Uv   M:     g 7f)Ncanv__split_only__)r?   splitOn)r4   CaWaHrd  rG  r=  s          r6   _cellListIterTable._cellListIter  sN     tF4(Aq)$//42.AG /  s   AAc           	         [        U[        5      (       a  UnU$ [        U[        5      (       a  U4O
[        U5      nS n/ R                  nU R                  XBU5       H  n[        U[        5      (       aF  U(       d
  [        SSS9nUR                  U5        UR                  S:  a  UR                  S:  a  S nM^  U(       a&  U" [        XuR                  UR                  S95        M  U" U5        M     [        US5      (       a8  [        UR                  UR                  UR                   UR"                  5      nU$ [        UR                  5      nU$ )Nr   )_leftExtraIndent_rightExtraIndentg:0yE>)
leftIndentrightIndentr   )rz   r   r   r   rj   rj  r   	CellFrameframeActionrm  rn  r   r`   r   __self__r   r   r   )r4   r   rh  ri  rg  framer   rG  s           r6   _cellListProcessTable._cellListProcess  s   a*++A, ) #1X..GAJAE		A''R0a))  )1q QMM%(--d2u7N7Nt7S $j.D.DQVQhQhijaD 1 q##(AIIaiiQ  'qzz2r9   c                 r   U(       d  gX#R                   -
  UR                  -
  nXcR                  -
  UR                  -
  nSnSn[	        U SS 5      n	S n
[        U[        5      (       aH  U R                  X5      n[        UR                  S5      5      UR                  -  S-  n[        X+5      U4$ U H{  nUR                  XU5      u  pUR                  5       nUR                  5       nUb  UR                  U5        Ub  UR                  U5        [        X+5      nXU-   U-   -  nU
b  My  Un
M}     X(U
-
  W-
  4$ )Nr   r   r   rd  rC  333333?)rI   rJ   rK   rL   r?   rz   r   _elementWidthr|   splitrG   r   wrapOngetSpaceBeforegetSpaceAfterrj   )r4   r   r   r   WHri  rh  r   rd  sb0vwvhr   sbsas                   r6   _listCellGeomTable._listCellGeom  s"   /,,0tF4(a##A)BQWWT]#AJJ.s2Bq:r>!AXXd+FB!!#B"B}ahhrl}ahhrlA	Ab2A{  c'B,r9   c           
          U(       d  gSnSn[        U SS 5      n[        U Vs/ s H  owR                  XcU5      S   PM     sn5      $ s  snf )Nrx  r   rd  )r?   r   r|  )r4   r   ri  rh  r   r   rd  r   s           r6   _listValueWidthTable._listValueWidth  sJ    tF4(Q7QHHTR(+Q7887s   Ac                    [        U SS 5      (       a  g U(       d  [        U R                  U5      nS U;   Ga  [        U SS 5      nS nU R                  (       a  U R                  nU R
                  nOSn0 n0 nX R                  L a  UnUS S  nOUS S  nU R                  n	U R                  n
S U;   Ga  UR                  S 5      nSn[        U	5       H  u  pX   nX   U   nX4nUR                  US 5      nUU;   a
  U(       d  SnOU R                  UU5      nUc4  [        SUR                  5        SU SU S	U R                  S
5       35      eUUR                  UR                  -   -  nU(       a5  US   nUS   nUU:w  a%  UU4n[!        UR                  UU5      U5      UU'   SnUU:  d  M  UnM     XU'   S U;   a  GM  U(       a   [#        XU5        X l        SnS/U l        U H#  nUU-   nU R(                  R+                  U5        M%     UU l        SU l        g !   [%        SU R                  5       < SU< SU< SU< 35         Nu= f)N_width_calculated_oncerd  rW   r   r   	Flowable 	 in cell(,) can't have auto width
   r   
spanning problem in z
W0=z W=

spanCons=r   )r?   r   r  r#  _colSpanCells_spanRangesr  r   indexr  r   rz  r   r
  rI   rJ   r   r   r   r  _colpositionsrj   _widthr  )r4   
availWidthr  rd  savedcolSpanCells
spanRangesr   W0r   Sr   r   r   Vir   r   jispanr   c0c1r}   widths                           r6   _calc_widthTable._calc_width   sn   4066htzz*5!194t,DE~~#11!--
!
HJJaDqT  A  A!)GGDM%aLDAAQAB%>>"T2D\)$ ..q39",yiPQsRSTUSVVpquq~q~  @B  rC  qD  .E  #F  FQ]]1>>99!%aB!%aB!2v$&rE.1(,,q2CA.F$%sA' )* !1 !)4 }rH- SAAIE%%e,  &'#}%]a]j]j]lmopqrz&{|s   H +I	c           
         [        U[        [        45      (       a.  SnU H$  nU R                  XB5      nUc    g [	        X55      nM&     U$ [        U[
        5      (       a  UR                  (       a  [        US5      (       a1  [        UR                  [        [        45      (       a  UR                  $ [        US5      (       a1  [        UR                  [        [        45      (       a  UR                  $ [        US5      (       a   [        US5      " U5      S   $ [        US5      (       a/   UR                  5       n[        U[        [        45      (       a  U$  Uc  g [        U5      R!                  S5      nUR"                  nUR$                  n[	        U Vs/ s H  n['        XU5      PM     sn5      $ !    N= f! [         a     Npf = f!    g= fs  snf )Nr   r  	drawWidth__styledWrap__minWidthrC  )rz   ra   r{   rz  r   r   _fixedWidthr`   r  r   r   r  r?   r  AttributeErrorr   r{  rF   rG   r   )	r4   r   r   r   eewfontNamefontSizer}   s	            r6   rz  Table._elementWidth?  s   ae%%A'',:dI  H(##}}1g&&:aggs5k+J+JSTSZSZN1k**z!++s5k/R/R[\[f[fTfq)**"1%56q9!<< 1j!!JJLas,,Qh, 9FLL& ::::a@aK84a@AA) "  As0   F8 -,F?  G G8F<?
GGGc                 
   U R                   nU(       d  [        U R                  U5      n[        U5      =pVU R                  nS U;   Gam  U R
                  n[        U SS 5      n	S n
U R                  (       a1  U R                  nU R                  nU R                  nU R                  nOS=p0 nU	(       a#  U	R                  U	R                  U	R                  4n
UnUS S  nX0l        0 n[         R"                  nS U;   Ga  UR%                  S 5      nU R&                  U   nU R(                  U   nSnSn[+        [-        [/        UUU5      5      5       GH  u  nu  nnnUU4nUR1                  US 5      nUU;   a	  U(       d  M0  [3        U[4        [,        [6        45      (       Ga  U R9                  UUS 5      =nUU'   UcM  U R;                  U5      (       d7  [=        SUS   R?                  5        SU SU SU R?                  S5       35      eU	(       aJ  UR@                  URB                  URD                  =(       d    S	URB                  -  sU	l        U	l        U	l        UU;   a1  U(       d  GM  [G        WUS
   S-      UUS      -
  U=(       d    S5      nU RI                  UU=(       d    U RK                  U5      U5      u  nnU	(       a  U
u  U	l        U	l        U	l        UURL                  -   URN                  -   n[         RP                  (       dZ  UU:  aT  SSK)J*n  U" SUS   R?                  S5      [W        U5      [W        U5      UU[W        U5      U R?                  S5      4-  5      eO\US L=(       a    [Y        U5      =(       d    SR[                  S5      nURD                  =(       d    S	URB                  -  [        U5      -  nUUR\                  UR^                  -   -  nU(       a5  US   nUS   n UU :w  a%  UU 4n![G        UR1                  U!U5      U5      UU!'   SnUU:  d  GM  UnGM     U(       a  [G        UU   U5      OUUU'   U(       aG  US-   n[a        US U 5      n"U"U:  a.  U(       a'  [G        S URc                  5        5       5      n#UU#:  a  O	S U;   a  GM  S U;  a  UnU(       a   [e        XU5        / =U l4        nS=n"n$[k        US-
  SS5       H+  nURm                  U"5        UU   U$-
  n%U"U%-   nUU"-
  U%-
  n$Un"M-     URm                  U"5        U"U l7        URq                  5         XPl9        g !   [g        SU R?                  5       < SU< SU< SU< SU< SU< SU< SU< 35         N= f)Nrd  rW   r   r  r  r  r  r  ry  r   r   )LayoutErrorzGFlowable %s (%sx%s points) too wide for cell(%d,%d) (%sx* points) in
%sr  rC  r+   c              3   *   #    U  H	  oS    v   M     g7f)r   NrW   )r   r}   s     r6   r   %Table._calc_height.<locals>.<genexpr>  s     %DOqdOs   r  z hmax=z lim=z avail=z x z
H0=z H=r  r   ):r  r   r  r|   r   r.  r?   r#  _rowSpanCellsr  r  r  	_fontname	_fontsize_leadingr  r	   _FUZZr  r  r   r  ra   zipr   rz   r{   r   ru  _canGetWidthr   r
  rF   rG   rH   r   r  r  rI   rJ   allowTableBoundsErrorsreportlab.platypus.doctemplater  r   r   r{  rL   rK   r   r  r   r   _rowpositionsr   rj   _heightr   _hmax)&r4   availHeightr  r  r  hmaxr   	longTabler6  rd  r  rowSpanCellsr  r  colpositionsH0r   r   r   r   r  hr   r   r   r   r  r  dWr   r  r0r1r}   heightmsrrG  r   s&                                         r6   _calc_heightTable._calc_heightd  s   JJhtzz*5!V++	19 //M4t,DE~~#11#11!--
#11.00
T^^T^^T]]JUB!A H??D!)GGDM$$Q'$$Q'#,T#aA,-?#@KAiq!Q1B%>>"T2D\)$ %atH(=>>'+'<'<Qq'FFA! y1B1B11E1E&09QqT]]_<MYWXVYYZ[\Z]]wx|  yF  yF  GI  yJ  xK  2L  'M  !M#UVU_U_abakakmnmvmv  nIz}~  I  I  {I%RT^T^T]!\1'+X$'T!WQY(?TRSW@U(UVWV\[\$]#'#5#5a8TT=Q=QRS=TUV#WDBq#UZ%RT^T^T]!#amm!3ann!DB#,#C#C1 V&12|  AB  CD  AE  AN  AN  OQ  AR  SY  Z\  S]  ^d  ef  ^g  hi  jk  ms  tu  mv  x|  xE  xE  FH  xI  @J  3J  'K  !K!"$!93q6!?R F Ft LA!"!<c!**nc!f DAQ__Q\\99!%aB!%aB!2v$&rE.1(,,q2CA.F$%sA? $AB 3@s=+A.Q!Q3D 5D]F+#"%%DHMMO%D"DC#Cx %c !)d 1}SdzrH-
 "$#QtAvb$AHHV!qA
AVq AF % 	
			
z%z~  {H  {H  {J  KO  PS  T^  _j  km  no  px  'y  zs   *T1 1;U.c                    S U R                   ;   d  SU R                   ;   a'  U R                  5       (       a  U R                  U5      nOS nU R                  (       a/  U R	                  5         S U R
                  ;   a  U R                  XS9  U R                  (       a  U R                  5         U R                  X!US9  U R                  XS9  U R                  (       a  U R                  5         g g )Nr   )r  )r  _hasVariWidthElements_calcPreliminaryWidthsr#  _calcSpanRangesr  r  r$  _calcNoSplitRangesr  _calcSpanRects)r4   r  r  r  s       r6   _calcTable._calc  s     DOO#sdoo'=4C]C]C_C_++J7AA
 >>  "tzz!   0##% 	+15 	(>>! r9   c                 \    U R                   n[        U5      nUR                  U5      nSU-  $ )zReturn a string describing the tallest element.

Usually this is what causes tables to fail to split.  Currently
tables are the only items to have a '_culprit' method. Doctemplate
checks for it.
ztallest cell %0.1f points)r  r   r  )r4   r\  ra  rowNums       r6   _culpritTable._culprit  s3     b''" +W44r9   c                     Uc  U R                   n[        [        U R                   U5      5       HJ  n[        U R                  5       H.  nU R                  U   U   nU R                  U5      (       a  M-      g   ML     g)zCheck for flowables in table cells and warn up front.

Allow a couple which we know are fixed size such as
images and graphics.r   r   )r  r   r   r  r  r  )r4   upToRowrP  colr   s        r6   r  Table._hasVariWidthElements  sl    
 ?dkkGT[['23CT[[)((-c2((// * 4
 r9   c                     [        U[        [        45      (       a"  U H  nU R                  U5      (       a  M    g   g[        U[        5      (       a  UR
                  $ g)z"Can we work out the width quickly?r   r   )rz   ra   r{   r  r   r  )r4   thingelems      r6   r  Table._canGetWidth  sT    eT5M**((..  x(($$$ r9   c                 P	   [        U R                  5      nSnSnSnSnSnU Hi  nUc  US-  nM  US:X  a  US-  nUS-  nM  [        US5      (       a  US-  nU[        USS 5      -  nMH  [	        U[
        [        45      (       d   eX8-   nMk     / n	/ n
/ n0 nSnU R                  n[        U R                  5       GH   nX/   nUb  US:X  d  [        US5      (       a  SnSn[        U R                  5       H{  nU R                  U   U   nU R                  U   U   nU" UU5      =(       d    SnUUR                  UR                  -   -  n[        UU5      nU=(       a    U R                  U5      nM}     U(       a  U
R!                  U5        OUR!                  U5        UX'   UU-  nM  U	R!                  U5        GM     [#        U	5      U R                  :X  a  gXU-   -
  nUS:  Ga  U[        U5      -  S-  nUU-  nU(       a6  US:  a0  U=(       d    UnSU-
  [        U5      -  nSnU[        U5      -  U-  nOS=nn/ nSnUnUR%                  5        H  u  nnX/   n[        US5      (       a  [        USS 5      U-  U-  nO"US:X  a  UnOU(       + =(       a    U=(       d    SnUU::  a  UX/'   M^  UR!                  UU-
  UUU45        UU-  nUU-  nM     U(       a  U[        U5      -  n UR'                  5         / n!U HN  u  n"nnnU U-  n#U#U:  a'  UX/'   UU-  nUU-  nU(       a  U[        U5      -  n M8  M:  U!R!                  UUU45        MP     U! H  u  nnnU U-  n#U#U:  d   eU#X/'   M     GO%US:  a  / n$UR%                  5        HJ  u  pUR)                  S5      (       d  M  U[        USS 5      -  U-  =X/'   nX8-  nU$R!                  U5        ML     U$ H  nX	 M     A$[+        UR-                  5       5      nXU-   -
  nUS:  a[  U[.        R0                  -  U-   S:  aA  U* U-  n%[3        U5       H"  u  pX;  d  M  U%U-  n&X/==   U&-  ss'   UU&-  nM$     XU-   -
  nSn%OX-
  nUS::  a  SOUU-  n%UR%                  5        H  u  nnUU%-  X/'   M     U=U l        U l        U$ )	zFallback algorithm for when main one fails.

Where exact width info not given but things like
paragraphs might be present, do a preliminary scan
and assign some best-guess values.r   r   Nr   r   r   r   d   )ra   r  r   r   rz   r   rz  r   r  r  r  r   rI   rJ   r   r  rj   r|   r   sortr   r   valuesr	   defCWRFr  r  )'r4   r  r  totalDefinedpercentDefinedpercentTotalnumberUndefinednumberGreedyUndefinedr   givensizeable
unsizeableminimumstotalMinimumelementWidthcolNosizfinalrowNor   r2  new	remainingdefinedPercentage	undefineddefaultWeightdefaultDesireddesiredWidthstotalDesiredeffectiveRemainingminimumdesired
proportionfinalSetdisappointmentadjustedr=  adjdws'                                          r6   r  Table._calcPreliminaryWidths  s?     !Ay1$c1$%*%1S!!!#af-!!SK0000+/  
))4;;'EAyAsFi#&6&6"4;;/E ,,U3E:E ,,U3E:E&uU38qC5,,U-?-???CsOE:$"3"3E":C 0 OOE*%%e,"'%U#) (* u:$ "=>	q=!-eJ.?!? D--L<##51D_	!$\!153C C""/l0C"CZ!O122
 ML!*"*.."2wHQs##$QsV}\9:EG#X,G"77JNOaGg%&AH!(( '7EBD G+L&'1& #3 , 0l0CC
 ""$?L;NGWe)G3H')#*$/*g5*');E,<O)OJ ( !'5(AB @M 08+GWe)G3H#w...'AH 08
 A~ ( 0HEzz#'1%#2-'?'LL1$)	 !1
 E  "8??#45&*EF	 {|I,=,==iGJ j- )!HE, UB$*	 !-
 '*EF	 &5	$a<aY|-C"*.."2w"S= #3 ()(
T_r9   c                    [        U R                  5      nSnU R                  n[        U R                  5      nU R
                  nU R                  n[        [        U5      5       H{  nX   nUb  US:X  d  [        US5      (       aL  Sn	U H>  n
XZ   U   nXj   U   nU" X5      UR                  -   UR                  -   n[        X5      n	M@     X)-  nMm  U[        U5      -  nM}     U$ )Nr   r   r   )ra   r  rz  r   r  r  r   r|   r   rI   rJ   r   r   )r4   r  r  r  rowNosr  stylesr  r   r  r  r   r2  r  s                 r6   r  Table.minWidth  s    ))t{{#!!!!3q6]EAyAsFi#&6&6#E"M%0E"M%0E'4 ,,--2-?-?@COE $ q! # r9   c                 n   0 =U l         n[        U R                  5       H'  n[        U R                  5       H  nX#X#4XU4'   M     M)     / U l        / U l        U R                  R                  nU R
                  R                  nU R                   GH!  u  pgnUu  pUu  pU	S:  a  XR                  -   n	US:  a  XR                  -   nU
S:  a  XR                  -   n
US:  a  XR                  -   nX:  a  XpX:  a  XpX:w  d  X:w  d  My  X:w  a3  [        XS-   5       H!  n[        XS-   5       H  nU" X#45        M     M#     X:w  a3  [        XS-   5       H!  n[        XS-   5       H  nU" X#45        M     M#     [        XS-   5       H  n[        XS-   5       H	  nSXU4'   M     M      XX4XU
4'   GM$     g)ac  Work out rects for tables which do row and column spanning.

This creates some mappings to let the later code determine
if a cell is part of a "spanned" range.
self._spanRanges shows the 'coords' in integers of each
'cell range', or None if it was clobbered:
(col, row) -> (col0, row0, col1, row1)

Any cell not in the key is not part of a spanned region
r   r   N)r  r   r  r  r  r  rj   r#  )r4   r  r}   r   csarsark   startstopr   y0r   y1s                r6   r  Table._calcSpanRanges  s    )+*:t{{#A4;;'#$,
Q3 ( $    ''  ''"&..SFBFB AvB,rAvB,rAvB,rAvB,rwBwBv6"2!t_!&rQ$AJ "0 - 6"2!t_!&rQ$AJ "0 - ra4A"2d^*.
Q3 , ) &(R$4
b5!5 #1r9   c                 n   0 =U l         n[        U R                  5       H'  n[        U R                  5       H  nX#X#4XU4'   M     M)     / U l        / U l        U R                  R                  nU R
                  R                  nU R                   GH!  u  pgnUu  pUu  pU	S:  a  XR                  -   n	US:  a  XR                  -   nU
S:  a  XR                  -   n
US:  a  XR                  -   nX:  a  XpX:  a  XpX:w  d  X:w  d  My  X:w  a3  [        XS-   5       H!  n[        XS-   5       H  nU" X#45        M     M#     X:w  a3  [        XS-   5       H!  n[        XS-   5       H  nU" X#45        M     M#     [        XS-   5       H  n[        XS-   5       H	  nSXU4'   M     M      XX4XU
4'   GM$     g)a*  
This creates some mappings to let the later code determine
if a cell is part of a "nosplit" range.
self._nosplitRanges shows the 'coords' in integers of each
'cell range', or None if it was clobbered:
(col, row) -> (col0, row0, col1, row1)

Any cell not in the key is not part of a spanned region
r   r   N)_nosplitRangesr   r  r  _colNoSplitCells_rowNoSplitCellsrj   r$  )r4   nosplitRangesr}   r   r  r  rk   r  r  r   r  r   r  s                r6   r  Table._calcNoSplitRanges
  s    /10mt{{#A4;;'&'A\c" ( $ !# "##**##**"&"3"3SFBFB AvB,rAvB,rAvB,rAvB,rwBwBv6"2!t_!&rQ$AJ "0 - 6"2!t_!&rQ$AJ "0 - ra4A"2d^-1c* , ) )+'7e$9 #4r9   c                    [        U S0 5      n[        U SS5      nU R                  nU(       a  U(       a  X R                  :X  d  U(       d  gU R                  nU R                  n0 n0 n[        U5      S-
  nU R                  R                  5        H  u  pU
c  SX'   M   U
u  ppX:  a  M  U	u  nnX-
  S:  aF  [        US-   US-   5       H0  nUR                  UU   / 5      R                  X^S-      X\   45        M2     X-
  S:  aF  [        US-   US-   5       H0  nUR                  UU   / 5      R                  XK   XMS-      45        M2     XK   nX^S-      nXMS-      U-
  nX\   U-
  nUUUU4X'   M     Xv4 H*  nUR                  5        H  n
U
R                  5         M     M,     Xl        X`l        Xpl        X l        g!   [        SU R                  5       < 35         GMQ  = f)ay  Work out rects for tables which do row and column spanning.

Based on self._spanRanges, which is already known,
and the widths which were given or previously calculated,
self._spanRects shows the real coords for drawing:

    (col, row) -> (x, y, width, height)

for each cell.  Any cell which 'does not exist' as another
has spanned over it will get a None entry on the right

_spanRectsr  Nr   r   r  )r?   r   _hmax_spanRectsr  r  r|   r  r   r   
setdefaultrj   r   r
  r  r  r  _vBlocks_hBlocks)r4   	spanRectsr  r  r  rowpositionsvBlocksr   rlimcoordr   col0row0col1row1r  rP  r;   r}   r   r  r  s                         r6   r  Table._calcSpanRects:  s    Db1	tGD)++	).B.B(B)))))< ""..446NU}#'	 W-2*Dz8#GCy{!&tAvd1f!5A#..|ArBII<]^X^K_`l`rJst "6y{!&tAvd1f!5A#..|ArBII<K]^jpqkq^rJst "6$*A$!V,A(a014E)/!3F()1eV'<I$% 7, !A

 $ " $#W%DMMO&UVVs   
F>+CF>>G!c           	         [        U[        5      (       d  [        U5      nUR                  5        H  n[        U5      S:  a  USS u  nu  pEu  pg[        U[        5      (       dS  [        U[        5      (       d>  [        U[        5      (       a
  U[
        ;  d  [        U[        5      (       a!  U[
        ;  a  [        SU< S[
        < 35      eU R                  U5        M     UR                  R                  5        H  u  p[        XU	5        M     S H<  n
[        X
5      (       a  M  [        X5      (       d  M'  [        X
[        X5      5        M>     g )Nr+   r   zbad style command zN illegal of invalid string coordinate
only rows may be strings with values in r[   )rz   r   r^   r|   r   _SPECIALROWSr   _addCommandr_   r   r>   r`   r?   )r4   tblstylerk   rG  scsrecerkr   rg   s              r6   r+  Table.setStylen  s   (:..!(+H'')C3x{&)!Ah#7BGRr#&&*R*<*<"2c**r/E"2c**r/E$);C7 C))5(8&< = =S! * >>'')CAD1 *-A4??wx':':wx23 .r9   c                 2   US:  a  XR                   -   nUS:  a  X R                   -   nUS:  a  X0R                  -   nUS:  a  X@R                  -   n[        SU5      [        U R                   S-
  U5      [        SU5      [        U R                  S-
  U5      4$ )z0ensure cell range ends are with the table boundsr   r   )r  r  r   r   )r4   r0  r2  r1  r3  s        r6   normCellRangeTable.normCellRange  s    6[[(26[[(26[[(26[[(21Ry#dkk!mB/QrCAb<QQQr9   c           	      R   US   S;   a  U R                   R                  U5        g US   S:X  a  U R                  R                  U5        g US   S:X  a  U R                  R                  U5        g [	        U5      (       Gac  [        U5      n[        U5      S:  a  [        SU< 35      e[        U5      S:  a  UR                  S5        O[        US   [        SS	S
U5      nX!S'   [        U5      S:  a  UR                  S 5        [        U5      S:  a  UR                  S5        O[        US   [        SS	SU5      nX1S'   [        U5      S:  a  UR                  S5        OUS   nUc  SnXAS'   US:  d   e[        U5      S:  a  UR                  US   5        OUS   nUc	  US   nXQS'   [        U5      S:X  d   eU R                  R                  [        U5      5        g US   S:X  a  U R                  US   5        g US S USS  su  nu  pxu  pnU[        ;   a1  US   S:X  a  U R                  OU R                   R                  U5        g U R#                  XyX5      u  pypU	S-  n	[%        XS-   5       H,  n[%        Xy5       H  n['        U R(                  XXk5        M     M.     g )Nr   )
BACKGROUNDROWBACKGROUNDSCOLBACKGROUNDSSPANNOSPLIT   zbad line command r*   r   r   cap      ro   	   r(   r+   ROUNDEDCORNERSr   )r!  rj   r#  r$  _isLineCommandra   r|   r   r   LINECAPS	LINEJOINSr"  r{   r,  r-  r%  r&  r7  r   _setCellStyler   )r4   rk   r@  ro   	lineCountspaceopr0  r1  r2  r3  r  r   r   s                 r6   r.  Table._addCommand  sr   q6EE##C(VvNN!!#&Vy $$S)C  s)C3xz.?w,G!HH 3xz

1"3q68Q5#FA 3xz3::d+ 3xz3::a=#CFIq!VSIA 3xz3::a=F	$ !I&F A~%~ 3x{CJJs1v.A=FE"Fs8r>!>NN!!%*-V%%  Q(/22AwQR,$R"8Bf\!#%a5#:4==HHM!%!3!3B"!@ara4A"2]%d&6&6bI + )r9   c                 T  ^^^^^^^^ Su  pnU R                   nUR                  5         U R                  mT(       a<  TR                  n/ US S & UR                  mUR
                  mUUUUUUUU4S jnXdl         U R                   H  u
  nu  pu  pmmmmmp[        U	[        5      (       a  U	[        ;   a  M2  TS :w  a  UT:w  a  UR                  T5        TnTb  T/ :X  a  Ub  UR                  5         S nOTU:w  a  UR                  T5        TnTb  UT:w  a  UR                  T5        TnU R                  XX5      u  pp[        U [        R!                  US5      5      " X4X4TTX5        M     T(       a  TUl        UR#                  5         S U l        g ! T(       a  TUl        f f = f)N)NNNc                    > X:X  a   U T
R                   :  d5  U T
R                  ::  d%  X:X  a8  UT
R                  :  d  UT
R                  ::  a  T" [	        XX#TTTTT5	      5        g T	" XX#5        g r1   )r   r   r  r  r   )xsysxeyeaSLr@  rN   dashro   	ocanvlinerrdweights       r6   
rcCanvLine$Table._drawLines.<locals>.rcCanvLine  sY    VSVVr366zVSVVr366z(rVE#d4PQbB*r9   _drawUnknown)rd  	saveState_roundingRectDefSLlinerj   r"  rz   r   r-  
setLineCapsetDashsetLineJoinr7  r?   
_LineOpMapr   restoreState	_curcolor)r4   ccapcdashcjoinrd  r]  rX  rK  r0  r1  r2  r3  r   rJ  rS  r@  rN   rT  ro   rU  rV  rW  s                 @@@@@@@@r6   
_drawLinesTable._drawLines  s   -Uyy##BBqE		I))C+ + #I	&VZVdVdRGRWbfeS$eb**r\/A89sOOC(D<42:( $U]LL& E#t$$T* E!%!3!3B"!@Z^^B@AB8bXW]_dfks! We$ %	 %	 s   :C6F F'c                 d    SS K nUR                  S5      R                  S   n[        SU< 35      e)Nr   r   rK  zUnknown line command )sys	_getframef_localsr   )	r4   r  endrW  rN   r   rJ  rk  rK  s	            r6   rZ  Table._drawUnknown  s1    ]]1&&t,0788r9   c                 P    U R                  XX4XV5        U R                  XX4XV5        g r1   )_drawBox_drawInnerGrid)r4   r  rn  rW  rN   r   rJ  s          r6   	_drawGridTable._drawGrid  s$    u6%?UEr9   c                     Uu  pxUu  pU R                  Xx4X4X4XV5        U R                  XzS-   4XS-   4X4XV5        U R                  Xx4Xz4X4XV5        U R                  U	S-   U4U	S-   U
4X4XV5        g ry   _drawHLines_drawVLinesr4   r  rn  rW  rN   r   rJ  r0  r1  r2  r3  s              r6   rq  Table._drawBox  s    "B8VEI"dbQ$ZM"B8VEI"Q$bdBZMr9   c                 z    Uu  pxUu  pU R                  XxS-   4X4X4XV5        U R                  US-   U4X4X4XV5        g ry   rv  ry  s              r6   rr  Table._drawInnerGrid  sJ    "dbXveK"Q$bXveKr9   c                     U(       a0  X R                   :w  a!  U R                  R                  U5        X l         U(       a2  XR                  :w  a"  U R                  R	                  U5        Xl        g g g r1   )rd  rd  setStrokeColor
_curweightsetLineWidth)r4   rW  rN   s      r6   	_prepLineTable._prepLine  sO    UNN*II$$U+"Nfoo-II""6*$O .6r9   c                    Uu  pxUu  pU R                   XyS-    nU R                  XS-    n[        U5      S::  d  [        U5      S:  a  g U R                  X45        US   nUS   n[	        U S0 5      nU R
                  R                  nUS:X  a  U H  n[        XUUU5        M     g XU-   U4S jnU H  n[        UXUU5        M     g )Nr   r   r   r   r!  c                     [        XXXV5      $ r1   r   r   r  r   r  r   r   r   s          r6   <lambda>#Table._drawHLines.<locals>.<lambda>"      U_`bfhrtU{r9   )r  r  r|   r  r?   rd  r^  r   )r4   r  rn  rW  rN   r   rJ  r0  r1  r2  r3  r   rpr   r   r   r   lfs                     r6   rw  Table._drawHLines  s      qD)a4(s8Q;#b'!)Vv%!f"g$z"-99>>A:xc1g6  .6,e{Br3Q0 r9   c                 L    Uu  pxUu  pU R                  XxS-   4XS-   4X4XV5        g ry   )rw  ry  s              r6   _drawHLinesBTable._drawHLinesB&  s0    "dbQ$ZMr9   c                    Uu  pxUu  pU R                   XS-    nU R                  XyS-    n[        U5      S::  d  [        U5      S:  a  g U R                  X45        US   nUS   n[	        U S0 5      nU R
                  R                  4S jnUS:X  a  U H  n[        XUUU5        M     g XU-   U4S jnU H  n[        UXUU5        M     g )Nr   r   r   r   r   c                     U" XX25      $ r1   rW   )r  r   r  r   _lines        r6   r  #Table._drawVLines.<locals>.<lambda>5  s    bB@Rr9   c                     [        XXXV5      $ r1   r  r  s          r6   r  r  :  r  r9   )r  r  r|   r  r?   rd  r^  r   )r4   r  rn  rW  rN   r   rJ  r0  r1  r2  r3  erpcpsrpr$  r   r}   r  s                     r6   rx  Table._drawVLines+  s      qD)  qD)s8Q;#b'!)Vv%!f"g$z"-04		RA:xc1g6  .6,e{Br3Q0 r9   c                 P    Uu  pxUu  pU R                  US-   U4U	S-   U
4X4XV5        g ry   )rx  ry  s              r6   _drawVLinesATable._drawVLinesA>  s4    "Q$bdBZMr9   c                 `    U R                  X5        Xl        U R                  U R                  4$ r1   )r  r  r  r  )r4   r  r  s      r6   wrap
Table.wrapC  s&    

:+$T\\**r9   c                     g)zn
This method will be called when the Table is split.
Special purpose tables can override to do special stuff.
NrW   )r4   TbyRows      r6   onSplitTable.onSplitH  s    
 	r9   c           	         U R                   nU H  nUSS u  u  pu  pU	[        ;   a  U	S   S:X  ae  U R                  U5        U	S:X  aL  U(       aE  US:  a  X-  nU
S:  a  X-  n
U R                  US   4XS-
  4XS-
  44-   [        USS  5      -   5        M  U(       d  M  U R                  U5        U	S:X  a  M  US-
  =pU	S:  a  X-  n	X:  a  M  X:  a  US-
  nU R                  US   4X4X44-   [        USS  5      -   5        M     g )Nr   r+   r   r   r   r   )r  r-  r.  r{   )r4   r   rd   nr0doInRowSplit	_srflModer<  rG  r0  r1  r2  r3  s               r6   _cr_0Table._cr_0O  s)    A 1vGRWb\!a5#:$$Q',,a4a4((!A$2s)bA#Y1G)GaPQPRe)TU (  #|#XA#!tRYRuhu1Q3badWrh%99%!",FG# r9   c                 J   [        U5      n[        U5      nU R                  n	U GH  n
U
SS u  u  pu  pU[        ;   a  US   S:X  a_  U R	                  U
5        US:X  aF  U(       a?  US:  a  X-  nUS:  a  X-  nU R	                  U
S   4X4X44-   [        U
SS  5      -   5        M  U(       d  M  U R	                  U
5        US:X  a  M  U=pUS:  a  X-  nUS:  a  X-  n[        [        XS-   5      5      U-  nU(       af  [        U5      nU R	                  U
S   4XR                  [        U5      5      4XR                  [        U5      5      44-   [        U
SS  5      -   5        X:  a  GMJ  [        X-
  S5      U-   n[        X-
  S5      U-   nU R	                  U
S   4X4X44-   [        U
SS  5      -   5        GM     U R                  nU(       aP  Uu  pUS:  a  X-  nUS:  a  X-  nX:  a  S U l        g [        X-
  S5      U-   n[        X-
  S5      U-   nX4U l        g g Nr   r+   r   r   r   r   )r|   setr  r-  r.  r{   r   ra   r  r   r   r-  )r4   r   nRowsr'  rd   r  r  nrrrrSr<  rG  r0  r1  r2  r3  cSs                   r6   _cr_1_1Table._cr_1_1f  s9   *o*oA 1vGRWb\!a5#:$$Q'?*|a4a4((!A$2)bY1G)GaPQPRe)TU (  #{?H!tR[R!tR[RU2d^$s*B"X  !A$2/?/?B/H*IBP`P`adegahPiKj)k!klqrstutvrwlx!xytXRT!SBRT!SBadWrh%99%!",FG1 2   FB!tR[R!tR[Rt&*#a[_a[_&(e# r9   c           	      &   U GH
  nUSS u  u  pgu  pU[         ;   a  US   S:X  ak  U R                  U5        US:X  aR  U(       aK  US:  a	  U[        -  nUS:  a	  U[        -  nU R                  US   4US4US44-   [        USS  5      -   5        M  U(       d  M  U R                  U5        US:X  a  M  U=pyU	S:  a  X:  a  M  US:  a  Xq:  a  SnXq:  a  Xq-  nX:  a  X-  n	U R                  US   4Xg4X44-   [        USS  5      -   5        GM     g r  )r-  r.  r<  r{   )
r4   r   rd   r  r  rG  r0  r1  r2  r3  s
             r6   _cr_1_0Table._cr_1_0  s'   A 1vGRWb\!a5#:$$Q'?*|a4Ua4U((!A$2q'B71C)CE!AB%L)PQ (  #{?H1ux1u!rubgbubgbadWrh%99%!",FG% r9   c                 r    [        U SS 5      nUc  U$ UR                  UR                  -
  UR                  -
  $ )N_frame)r?   r  _topPadding_bottomPadding)r4   defaultr   s      r6   _getPossibleHeightTable._getPossibleHeight  s7    D$')wUQ]])BQEUEU)UUr9   c                    XBR                   -
  nX2R                   U-   -
  n[        U[        [        45      (       Ga~  / n/ n	Sn
/ nU R	                  XX+S9S   nUR
                  S:X  a  X<-
  S-  nOSn[        X5       GH#  u  p[        USU5      nU
(       a"  UU::  a  U	R                  U5        UU-  nM8  / s  $ UU-   UR                  5       -   U::  a:  UR                  U5        UUUR                  5       -   UR                  5       -   -  nM  UR                  XVU-
  UR                  5       -
  5      nU(       a)  UR                  US   5        U	R                  US   5        O<U(       d  UR
                  S:w  a!  UU::  a  U	R                  U5        UU-  nO/ s  $ / s  $ S	n
GM&     [        U5      [        U	5      4$ [        U[        5      (       Ga  UR                  S
5      nSUR                  -  nUR                  =(       d    U[        U5      -  nUR
                  S:X  a
  UU::  a  US4$ UR
                  S:X  a
  UU::  a  SU4$ UR
                  S:X  a  Xv:  a  SU4$ US4$ [        U5      S:  a  / $ UR
                  S:X  a  UU-  nO/UR
                  S:X  a  [        U5      UU-  -
  nOXg-
  U-   SU-  -  n[!        U5      nS
R#                  US U 5      S
R#                  UUS  5      4$ g)NF)r  r   r   r   r   r  TOPTrC  ry  r  r/   )r  r  )rK   rz   r{   ra   r  rQ   r  r?   rj   r}  r~  r{  r   rG   rH   r|   r   ro   )r4   r   r2  	oldHeight	newHeightr  height0height1newCellContentpostponedContentr{  FH
cellHeight
usedHeightflowable_fhflowable_heightsplitsrows
lineHeightcontentHeight
splitPoints                         r6   
_splitCellTable._splitCell  s   ...//);<eeT]++N!EB++E%+EaHJ||x''49

 #E")(8C"@&'1(//9?2  "	/1H4K4K4MMQXX"))(3/H4K4K4M"MPXPfPfPh"hhJ &^^E:3EhF]F]F_3_`F&--fQi8(//q	: *U\\U-B.'9 0 7 7 A '? : (*	 $&I EI !.L .)51A+BCCs##;;t$Du~~-J"]]8jCIEM||u$')Ar{")mw.FE{")$;&!2;&TQ	||u$$
2
) Y'Z*?@
%/-?Q^T
ZJIId;J/0$))D<M2NOO r9   c                    U R                   nU R                  n/ nU R                   GH&  u
  nu  pxu  pppnnn[        U[        5      (       ab  U[
        ;   aX  UR                  XgU4X4XXUUU4
5        US:X  a  US-
  =pO0US:X  a  UnUn
O%US:  a  Xt-  nU	S:  a  X-  n	XgU4X4XXUUU4
US'   M  US:  a  Xt-  nU	S:  a  X-  n	US:  a  X-  nU
S:  a  X-  n
US;   GaH  X:  a  X:  d  U(       Ga  X:X  Ga  UR                  SXx4X4XXUUU4
5        UR                  SXx4Xz4XXUUU4
5        UR                  S	X4X4XXUUU4
5        UR                  S
Xz4X4XXUUU4
5        US:X  a  U(       a<  UR                  SXx4XS-
  4XXUUU4
5        UR                  SXq4X4XXUUU4
5        GM  UR                  S
XqS-
  4XS-
  4XXUUU4
5        UR                  SXq4X4XXUUU4
5        UR                  SXx4X4XXUUU4
5        GM  GM  UR                  XgU4X4XXUUU4
5        GM  US:X  ak  X:  aH  X:  aC  U(       d<  UR                  S
XqS-
  4XS-
  4XXUUU4
5        UR                  SXq4X4XXUUU4
5        UR                  XgU4X4XXUUU4
5        GMp  US
:X  aF  X:  a#  XS-
  :  a  UR                  SXq4X4XXUUU4
5        UR                  XgU4X4XXUUU4
5        GM  US:X  aI  X::  a&  X:  a!  UR                  S
XqS-
  4XS-
  4XXUUU4
5        UR                  XgU4X4XXUUU4
5        GM  UR                  XgU4X4XXUUU4
5        GM)     U$ )Nr   r   r   r   r   )BOXOUTLINEGRID	LINEABOVE
LINEBEFORE	LINEAFTER	LINEBELOWr  	INNERGRID)r  r  r"  rz   r   r-  rj   )r4   r   r  r9  r<  ArK  r0  r1  r2  r3  rW  rN   r@  rT  ro   r   rJ  s                     r6   _splitLineCmdsTable._splitLineCmds  s   RVR`R`NB"&D%"X&&2+="WrgvcuV[\]{?cMB%BBAvr{rAvr{rB"&DRWY^_AbEAvr{rAvr{rAvr{rAvr{r--DRUHHk2'B7F3VZ\achijHHlB7RGVCW[]bdijkHHk2'B7F3VZ\achijHHk2'B7F3VZ\achij6z'HHk2'Bs8VTW_cejlq%rsHHk2&2'6RU]achjo%pqHHk2c(R!HfUX`dfkmr%stHHk2&2&&QT\`bgin%opHHk2'B7FSV^bdikp%qr " HHbR2'6#TSXZ_`a{"4BE,HHk2c(R!HfSX\^cejklHHk2&2&&TXZ_afgh"WrgvcuV[\]{"4B1IHHk2&2&&TXZ_afgh"WrgvcuV[\]{"5RUHHk2c(R!HfSX\^cejkl"WrgvcuV[\]"WrgvcuV[\]e Sah r9   c                 \   / R                   nU H  nUSS u  nu  pxu  pU[        ;   d
  U
[        ;   a
  U" U5        M.  U
S:  a  X-  n
US:  a  X-  nX:  a  U
S-  n
OX:X  a  X:  d  X:X  a  US:w  a  U
S-  n
X:  d  X:X  a  US:X  a  US-  nU" XgU4X44USS -   5        M     UR                  $ )a  Stretches the commands when a row is split

The row start is sr, the row end is er.

 sr   | er  | result
---------------------------------------------------------------------
  <n  |  <n | Do nothing.
      | >=n | A command that spans the break, extend end.
---------------------------------------------------------------------
 ==n  | ==n | Zero height. Extend the end, unless it's a LINEABOVE
      |     | commands, it's between rows so do nothing.
      |     | For LINEBELOW increase both.
      |  >n | A command that spans the break, extend end.
---------------------------------------------------------------------
  >n  |  >n | This command comes after the break, increase both.
---------------------------------------------------------------------

Summary:
1. If er > n then increase er
2. If sr > n then increase sr
3. If er == n and sr < n, increase er
4. If er == sr == n and cmd is not line, increase er

r   r+   r   r  r  N)rj   r-  rs  )r4   r   rd   oldrowcount	stretchedrG  rk   r0  r1  r2  r3  s              r6   _stretchCommandsTable._stretchCommands@  s    2 II	A$%aF!C"'2\!R<%7!Av!Av!va'6bg#*<!GBv"'c[&8asGbW-!"56+ . !!!r9   c                 V'   U R                  XS9nU R                  n[        U[        5      (       a  UO[	        U5      S-   nU(       a  X5:  d  U(       d  X5::  a  / $ [        U R                  5      nX6:X  a  U /$ U R                  nU(       aL  Uu  pxUS:  a  Xv-  nUS:  a  X-  nX8:  a(  U R                  U[        U R                  X 5      -
  US9$ X7:  a  / $ U R                  n	U(       d  U n
U R                  nGOU R                   Vs/ s H  oS S  PM	     nnU R                  (       a  XR                  U   :  a  / $ [        U R                  S U 5      nU R                  U   nU R                  U   nU R                  nU R                  U   nSnSnSn[        [!        XU5      5       GH2  u  nu  nnnU R"                  (       a!  U R$                  R'                  UU4S 5      c  M=  [        U[(        [*        45      (       a>  U R-                  UUU5      u  nnUUR.                  UR0                  -   -  nUU:  a  UnM  M  [        U[2        5      (       d  M  UR5                  S5      nSUR6                  -  nU[        U5      -  UR.                  -   UR0                  -   n[	        UUUR.                  -   5      n[	        UUUR0                  -   5      nUU:  d  GM0  UnGM5     UU-   U:  d	  UX-
  :  Ga  U R"                  (       d  / $ [9        5       n[;        U R<                  5       H  nUU4nUU R>                  ;   d  M  U R$                  R'                  UU4S 5      b  M:  U R$                  RA                  5        HD  u  nnUc  M  Uu  n n!n"n#UU :  d  M  UU"::  d  M"  UU!:  d  M*  UU#::  d  M2  URC                  U5          M     M     U(       d  / $ / n$U R"                   Hy  u  n%u  n&n'u  n(n)U&S:  a  U&U R<                  -  n&U(S:  a  U(U R<                  -  n(U'S:  a  U'U RD                  -  n'U)S:  a  U)U RD                  -  n)U$RG                  U%U&U'4U(U)445        M{     U R                   Vs/ s H  oS S  PM	     n*nU RH                  n+U GH<  nU R$                  U   u  n,n-n.n/U RJ                  U   n0U0S   n1[        U R                  U-U 5      n2U*U-   U,   n3U RM                  U R                  U-   U,   U3U1U2W5      n4U4(       d  / s  $ U4S   UU-   U,'   U4S   X   U,'   / n5U$ H}  u  n%n6n7U,U-4U6:X  aZ  U.U/4U7:X  aR  US-
  U-:  d  U,U.:w  a  U5RG                  U%U,U-4U.US-
  445        UU/:  d  U,U.:w  a  U5RG                  U%U,U4U.U/445        Mg  Mi  U5RG                  U%U6U745        M     U5n$/ n8U+ Hc  u  n%n6n7n9U6U,U-4:X  a>  U8RG                  U%U6U7S   US-
  4U945        U8RG                  U%U6S   U4U7S   U4U945        MN  U8RG                  U%U6U7U945        Me     U8n+U3RO                  5       n:U3RP                  S:X  a  U4S   (       a  U4S   (       a  S	U3l(        S
U:l(        OlU R-                  W;S   =(       d    U;S   UU35      S   n<UU<-
  S-  n=U;S   (       a  U3=R.                  U=-  sl        OU;S   (       a  U:=R0                  U=-  sl        U:U*U   U,'   GM?     U RS                  XR                  U R                  U R                  U R                  U RT                  U RV                  SU*U RX                  [[        U SS 5      U R\                  [[        U SS 5      [[        U SS 5      S9n
U+U
l$        U$U
l        U R^                  U
l/        U R`                  U
l0        U Rb                  U
l1        U Rd                  U
l2        U Rf                  U
l3        U
Ri                  5         U
Rk                  5         U
Rm                  5         / n>U Rn                   GHq  n?U?u
  n@u  n&n'u  n(n)nAn9nBnCnDnEnFU)S:  a  U)U
RD                  -  n)U(S:  a  U(U
R<                  -  n(W@S:X  d%  W@S:X  a  U'U::  d  U)U:  d  W@S:X  Ga   U'U:  d  U)U:  a  W@S;   af  U>RG                  SU&U'4U(US-
  4WAU9WBWCWDWEWF4
5        U>RG                  SU&U4U(U)4UAU9UBUCUDUEUF4
5        U>RG                  SU&US-
  4U(US-
  4UAU9UBUCUDUEUF4
5        W@S;   a  U>RG                  SU&U'4U(U'4WAU9WBWCWDWEWF4
5        U>RG                  SU&U)4U(U)4UAU9UBUCUDUEUF4
5        U>RG                  SU&U'4U&U)4UAU9UBUCUDUEUF4
5        U>RG                  SU(U'4U(U)4UAU9UBUCUDUEUF4
5        GM]  GM`  U>RG                  U?5        GMt     U GHX  n/ nGU> GHI  n?U?u
  n@u  n&n'u  n(n)nAn9nBnCnDnEnFU R$                  U   u  n,n-n.n/U@S:X  a  U)U-:  a  U'U/::  d  W@S:X  a  U)U-:  a  U'U/:  a  U&U.::  a  U(U,:  a  W@S:X  a  U-nHU/S-   nIOU-S-
  nHU/nIU'WH::  a  WGRG                  W@U&U'4U(WH4WAU9WBWCWDWEWF4
5        U,U&:  a6  WGRG                  W@U&[	        WHU'5      4U,S-
  [q        U)WI5      4WAU9WBWCWDWEWF4
5        U.U(:  a6  WGRG                  W@U.S-   [	        WHU'5      4U([q        U)WI5      4WAU9WBWCWDWEWF4
5        U)WI:  a"  WGRG                  W@U&WI4U(U)4WAU9WBWCWDWEWF4
5        GM5  GM8  WGRG                  U?5        GML     WGn>GM[     U>U
l7        U
R                  USS9$ [q        X-
  UU-
  5      nJUJS-   U RV                  :  a  / $ U Rr                  WJ-
  nKUKU RV                  :  a  / $ / nLSnM/ nNSnO/ nP[!        XU5       GH  u  nnnU RM                  UUUWJU5      n;U;(       d  / s  $ URO                  5       n:URP                  S:X  a  U;S   (       a  U;S   (       a  S	Ul(        S
U:l(        OlU R-                  U;S   =(       d    U;S   UU5      S   n<UU<-
  S-  n=U;S   (       a  U=R.                  U=-  sl        OU;S   (       a  U:=R0                  U=-  sl        WLRG                  U;S   5        WNRG                  U;S   5        U R-                  U;S   UU5      S   UR.                  -   UR0                  -   nQ[	        WMUQ5      nMU R-                  U;S   UU5      S   UR.                  -   UR0                  -   nR[	        WOUR5      nOWPRG                  U:5        GM     [q        WJWM5      nS[	        WOU R                  U   US-
  5      nTU R                  S S  nUUURu                  US-   UT5        USUUU'   U R                  S S  n*U*Ru                  US-   WP5        US U WL/-   WN/-   XS-   S  -   nU RS                  XR                  UUU R                  U R                  U RT                  U RV                  SU*U RX                  [[        U SS 5      U R\                  [[        U SS 5      [[        U SS 5      S9n
U Rw                  X0Rn                  U5      U
l7        U Rw                  X0RH                  U5      U
l$        U Rw                  X0R"                  U5      U
l        U Rw                  X0R^                  U5      U
l/        U Rw                  X0R`                  U5      U
l0        U Rw                  X0Rb                  U5      U
l1        US-   nU RX                  nVUV(       a  [y        WV5      nVU
R\                  nWUW(       a  U
R                  nXOU
Rz                  nX[[        U SS 5      nY[[        U SS 5      nZU RS                  US U U
R                  WXS U XIU RT                  U RV                  SU
R                  S U WV[[        U SS 5      WWUY(       a  WYS S OS WZS9nLU
RD                  n[U
R<                  n\U
R}                  X2S9n]ULR                  UU]U[U5        ULR                  X:RH                  U[USS9  ULR                  X:R"                  U[U5        ULR                  X:R^                  U[U5        U
R`                   Hc  n^WLR                  U^5        U^S   S   S:w  a  M"  W^SS u  u  n&n'u  n(n)WLR                  U^S   4U&US-
  4U(US-
  44-   [)        U^SS  5      -   5        Me     WV(       a  [y        WV5      nVU(       Gax  [        U[        5      (       a.  US U n_WXS U n`U
R                  S U na[+        [;        U5      5      nO][+        [        U5      5      nU Vbs/ s H  nbUUb   PM
     n_nbU Vbs/ s H  nbWXUb   PM
     n`nbU Vbs/ s H  nbU
R                  Ub   PM     nanbU RS                  W_XS  -   U
R                  W`WXUS  -   [        U5      U	U RT                  U RV                  SWaU
R                  US  -   WV[[        U SS 5      WWWYWZS9nNUNR                  UW[UW]U5        UNR                  UU[XJRH                  USS9  UNR                  UU[XJR"                  U5        UNR                  UU[XJR^                  U5        OU RS                  XS  U
R                  WXUS  XIU RT                  U RV                  SU
R                  US  WV[[        U SS 5      WWWY(       a
  SS/WYSS  -   OS WZS9nNUNR                  UW]U5        UNR                  X:RH                  USS9  UNR                  X:R"                  U5        UNR                  X:R^                  U5        U
R`                   H]  n^WNR                  U^5        U^S   S   S:w  a  M"  W^SS u  u  n&n'u  n(n)WNR                  U^S   4U&S4U(S44-   [)        U^SS  5      -   5        M_     U
R                  =WLlD        WNlD        U
R                  =ULlE        UNlE        U R                  UL5        U R                  UN5        ULUN/$ s  snf s  snf s  snbf s  snbf s  snbf ) N)ignoreSpansr   r   r  rC  ry  r+   r   r/   r  r   r\   _cornerRadiir  )r0  r1  r'  r(  r)  r*  r3  r4  r  r\   r  r7  r8  r  r  r  )r  r  r  )r  r  r  r  r  FT)r  r   r]   )r0  r1  r'  r(  r)  r*  r3  r4  r  r]   r  r7  r8  r   )G!_getFirstPossibleSplitRowPositionr'  rz   r   r   r|   r  r-  
_splitRowsr   r(  r  r.  r   r  r  r  r#  r  r   r{   ra   r  rK   rL   r   r{  rG   r  r   r  r  r   rl   r  rj   r!  r  r  r3   rQ   r  r)  r*  r  r?   r   r$  r%  r&  r  r  r  r  r  r"  r   r  insertr  r   r  r  r  r.  r   r  r  r  r	  r  )cr4   r  r  r   r'  	maxrepeatr   lohir(  r  r/  r;   usedHeights
cellvaluesr4  
cellWidthscurRowHeightminSplitmaxSplit	maxHeightcolumnr   r2  r  r   r  r  r  
splitCellsrQ  r  	start_col	start_rowend_colend_rowspanCmdsrk   r0  r1  r2  r3  newCellStyles
bkgrndcmdsspan_scspan_srspan_ecspan_erspanRectr  r  oldStyleresnewSpanCmdsr  rn  newbkgrndcmdsrN   newStyler   r  marginnewlinecmdslinecmdrK  rW  r@  rT  ro   r   rJ  
moddedcmdsstartrowendrowr  r  r   R0Heightr   R1HeightR1Stylesh0h1r  newRowHeightnewRowHeightsr  ltosplitHr7  r8  r9  r<  r"  rG  iRowsiRowHiCSr   sc                                                                                                      r6   r  Table._splitRowss  s    
0
0
0
V __
",Z"<"<J#j/RSBS	AK|I $""#64&=  FB!tRYR!tRYRt{S9I9I"9O5P'P_kll	__
A##D"&"2"23"2QaD"2D3 ""{5H5H5K'K	d..r23K))!,J))!,JJ++A.L HHI1:3zWa;b1c--u>>d&6&6&:&:FA;&M&UeeT]33 $ 2 25% GIAve..1D1DDDF	)$*	 *s++ ;;t,D!$u~~!5J'#d)3e6F6FFI\I\\F  #8Z%:J:J-JKH"8Z%:M:M-MNH	)$*	+ 2d. H$|3k78 ~~I U
#DKK0F"A;D 2 22((,,fa[$?G +/*:*:*@*@*BJD$#| (EIBIy'7 &) 3 &' 1 !I !W *t 4 % +C 1" "I/3~~+C"b8BAvdkk)Avdkk)Avdkk)Avdkk)OOS2r(RH$=> 0> 04/?/? @/?!1/? @!--

 'D9=9I9I$9O6GWgw#t4H (I #D$4$4WQ$? @I  -W5g>H//$*:*:7*CG*L*2Iy%QC!	 .1VDM'*'*1vDGG$
 #%K+3UC$g.%7$g.#5 sW}70B + 2 2C'79KgWXYZWZ^3\ ] 7{g.@ + 2 2C'1QXGY3Z [ /A (..UC/@A ,4  +H$&M2<.UC Wg$66 *00#us1vqsmU1ST)00#a!}s1vqkSX1YZ)00#uc51IJ 3= "/J  (}}H(2q6c!f.6HO.3HO !% 2 21Q4<1Q4 QRS TA&2Q&6!%;F t ( 3 3v = 3!"1 ( 6 6& @ 608M!$W-A 'F NNDOO#//DOO#4??#q,DJJ ']4 @&*&=&= '^D A$T+d; # 	 !+&!%!2!2"nn!]]
"&"4"4"&"4"4$$&!!#  " !#~~GY`VBB"R&%dD%QVAvahhAvahhu",B!GrAv{*Q"q&!66'..RGb1XvW\^acgimotv{/|}'..RFRGVUZ\_aegkmrty/z{'..R!Hr!A#hPVX]_bdhjnpuw|/}~0 (..bWr"gvW\^acgimotv{/|}'..bWr"gvW\^acgimotv{/|}'..r"g2wPVX]_bdhjnpuw|/}~'..bWr"gvW\^acgimotv{/|} 1 $**73 1  .8 'D!#J#.]dZGRWbfeS$eUZ=A=M=Md=S:'7 K/BLR7]+-"-BL'MbGm  "[0+2)01+2Q;)0!X~ * 1 1%'"bB>65RUW[]achjo$p!"
  '| !+ 1 1%'"c(B.?)@719cRTV\oB^`fhmortxz~  AF  HM  %N!"  '| !+ 1 1%''!)S25F)G"cRTV\oI^`fhmortxz~  AF  HM  %N!"  "V| * 1 1%'"fBxPSUY[_afhm$n!"  , '--g6W $/Z #-Ka 'd *||KU|CC [6	H8LMJ!|doo- 	z1I4??* 	BHBHH),ZZ)P%uOOE5,
ERI ::<<<8+t!'/*/ !..qt|qtUEJ1M"."2a!7Q4!,,6,qT$22f<2		!A$		!A$''!eU;A>AQAQQTYTgTggx,''!eU;A>AQAQQTYTgTggx,)7 *Q< Z2Jx)9)9!)<z)IJL ,,Q/M  Q5)M! ,,Q/M  Q18rd?bT)D1J6D(T__??t??1(

#Dt<"&"9"9#D= k$7  	A //>>3GAK 11!5E5EsKAM//>>3GAK!2216G6GMAN//>>3GAK..q--EAJAA 

(5/%""]]FWWFd>$74D1^^T"1X&QSRS*%??1WYXYIZ#Dt<"%/:KO!   $$Q$B	
9U<0
==|dC
;;u\2
>>%5ANN1tAw#X 1vGRWbNNAaD7R1IAaCy#99%!",FG	  (5/%*S))[j){
+mmKZ0!%
"34
 "&"45
*45*Qa*5,67JqJ71;<Aq}}Q'<d2h$VABZ/"::#4??#$"1==#44&tL>&)"-'   B JJqz)LAJJqz--tJTJJqz++lCJJqz..F RALLVTUTVZ)#4??#$qr1B&tL>&)?JAa5;qr?#:PT'   	B JJq<0JJq|dJCJJq\2JJq5ANN1tAw$h 1vGRWbNNAaD7RGb!W#55eAabElBC	  !"(	BI !(	BIRR2wm 4j !Af	 67<s&   AN&ANC%ANC:AN!DAN&c                     U HK  nX#   nUS :w  d  M  US   US   peXV:w  d  M  [        XV5      n[        XV5      nUS-   n	 X:  a  MB  S X	'   U	S-  n	M     g )Nr   r+   )r   r   )

impossiblecellsrangesxyr   r  y2yminymaxr   s
             r6   _getRowImpossibleTable._getRowImpossibleK  sh    BjA$wd1Q426RDRD1fA65&*
1  r9   c                 \   0 nU R                   (       a-  U(       d&  U R                  X0R                  U R                  5        U R                  (       a&  U R                  X0R
                  U R                  5        SnSnSnU R                   H  nXG-   U:  a    U$ XS;  a  UnXG-   nUS-   nM      U$ )Nr   r   )r#  r"  r  r  r$  r  r  r  )r4   r  r  r  r  r   split_atr\  s           r6   r  'Table._getFirstPossibleSplitRowPositionZ  s    
>>+"":.@.@AQAQR"":.C.CDDWDWX""BtK
 	 "dAcA # r9   c                 \   U R                  X5        U R                  (       d  U R                  (       ax  [        R                  (       d  U R
                  U:  a  / $ U R                  X R                  (       + S9nU(       a  U$ U R                  (       a  U R                  X R                  S9$ / $ )Nr  )r  r)  r*  r	   r  r  r  )r4   r  r  r@   s       r6   r{  Table.splitn  s{    

:+??doo33J8NWYPY __[???R_SF {QQ 	r9   c                    S U l         [        U SS 5      nU(       a  [        U5      U::  a  g U R                  nU R                  n[        SSUS-
  4US-
  S4US-
  US-
  445       VVVs/ s H1  u  nu  pg[        U R                  U   U R                  U   X%   5      PM3     nnnnU R                  n	U R                  n
U
S   nX   nX   nU	S   nX-
  nX-
  n[        XUUXU/ 5      U l         U R                  R                  5       nUR                  XUUU5        U R                  nUR                  S5        UR!                  USS9  UR                  S5        g s  snnnf )Nr  rx  r   r   z%begin table rect clipstrokez%end table rect clip)r\  r?   r   r  r  r  r   r  r  r  r  RoundingRectDefrd  	beginPath	roundRect
addLiteralclipPath)r4   r   r7  r9  r<  r4  r   r   arr  r  r   r  r   r  r   r  r   rG  s                      r6   _makeRoundedCornersClipTable._makeRoundedCornersClip  sp    $d>$7c+.4f$uQwK1WQK1WeAg&	& %1 $""1%dooa&8H 	  UYYUGG /1bb" MII!	BAq"%II	-.	

1A
	+,-s   )8Ec           
      0   U R                   u  pp4pVpxU(       d  g U R                  n	U	R                  5         S =n
=n=n=U l        U l        U	R
                  nU R                  nU GH  u	  nnnnnnnnnUS :w  a  U
U:w  a  U	R                  U5        Un
Ub  U/ :X  a  Ub  U	R                  5         S nOUU:w  a  U	R                  U5        UnUb  UU:w  a  U	R                  U5        UnU R                  UU5        UU:X  a  UU:  d  UU:  a  U" UUUU5        M  UU:X  a  SnUS   nUS   nOSnUS   nUS   nXU-   :  a  UUU-
  ::  a  U" UUUU5        M  XU-   :  a  [        SUUU4USSS	9OS nUUU-
  :  a  [        S
UUU4USSS	9OS nOX:  d  X:  a  U" UUUU5        GM=  X:X  a  SnUS   nUS   nOS
nUS   nUS   nUUU-   :  a  UUU-
  ::  a  U" UUUU5        GM{  UUU-   :  a  [        USUU4USSS	9OS nUUU-
  :  a  [        USUU4USSS	9OS nU	R                  5       nU(       aM  UR                  " US   6   UR                  US   S   US   S   US   S   US   S   US   S   US   S   5        OUR                  UU5        U(       d  UR                  UU5        OLUR                  " US   6   UR                  US   S   US   S   US   S   US   S   US   S   US   S   5        U	R!                  USSS9  GM     U	R#                  5         g )Nr   r   r+   r   r   r   r   r   )r   rS   r   r   r+  fill)r\  rd  r[  r  rd  r^  r  r_  r`  ra  r  r   r-  moveTocurveTolineTodrawPathrc  )r4   r   r  r   r  r   r  r1  r]  rd  re  rf  rg  r^  r7  rO  rP  rQ  rR  rW  rN   r@  rT  ro   r   r  r  r  r  r   r   s                                  r6   _restoreRoundingObscuredLines#Table._restoreRoundingObscuredLines  s   '+'<'<$bb6yyBFFFuFuFtyy''8:4R2bc$tDyT3Y$|trz$LLN ET"E4K  &NN65)2vb5BrEBr"%r6#DABAB DABAB"u9RUBr"%^`dfaf^f\&r"gr\Zlp_abdegbg_g\'$2wl[mq 5BEBr"%6!DABAB"DABABr"u9RUBr"%`bcefhch`h\$xB!|\nr]_`bce`e]e\$ubWbqLYko A"Q% 		"Q%(2a58BqE!HRU1Xr!uQx1aQBB"Q% 		"Q%(2a58BqE!HRU1Xr!uQx1aQMM!AAM.E 9;F 	r9   c                 r   U R                   nUR                  5         S =U l        =U l        U l        [        U S5      nU(       a  U" U S5        U" U S5        U R                  5         U R                  5         U(       a	  U" U S5        U R                  (       Gdf  U(       a  [        [        U R                  U R                  U R                  SS  U R                  5      5       H  u  nu  pEpgU" U SU5        [        [        XEU R                  S S U R                   5      5       H6  u  nu  ppU" U SX8XX4X45        U R#                  XX4X45        U" U S	5        M8     U" U S
5        M     GO[        U R                  U R                  U R                  SS  U R                  5       HU  u  pEpg[        [        XEU R                  S S U R                   5      5       H  u  nu  ppU R#                  XX4X45        M      MW     GONU(       a  [%        U R&                  5       H  nU" U SU5        [%        U R(                  5       Hq  nU R*                  X4   nUc  M  Uu  pnnU R                  U   U   n	U R                  U   U   n
U" U SX8XX4UU45        U R#                  XX4UU45        U" U S	5        Ms     U" U S
5        M     O[%        U R&                  5       Ht  n[%        U R(                  5       HX  nU R*                  X4   nUc  M  Uu  pnnU R                  U   U   n	U R                  U   U   n
U R#                  XX4UU45        MZ     Mv     U(       a	  U" U S5        U R-                  5         U(       a  U" U S5        U" U S5        UR/                  5         U R0                  (       a  U R3                  5         g g )Nr  
startTablestartBGendBGr   startRowr   	startCellendCellendRow
startLinesendLinesendTable)rd  r[  r  rd  _curcellstyler?   r2  _drawBkgrndr#  r  r  r  r   r  r  r  r  	_drawCellr   r  r  r  rh  rc  r\  r;  )r4   rG  r8  r  rP  rowstylerowpos	rowheightr  cellval	cellstylecolposcolwidthcellRectr}   r   r  r  s                     r6   draw
Table.draw  s   II	@DDD$.4+=4,T,'T)$$$&Xd7+~~~AJ3tO_O_aeaqaqsw  tF  tF  GH  GI  tJ  LP  L\  L\  L]  B^=E=C6T*U3IRSVWZfjfxfxy|z|f}  @D  @O  @O  TP  JQEEF k5V\Uehpg|}wF;KhMbc i0 JQ T(+ B^ 9<D<L<LdN^N^`d`r`rstsu`vx|  yI  yI  9J4C6IRSVWZfjfxfxy|z|f}  @D  @O  @O  TP  JQEEFwF;KhMbc JQ 9J "4;;/ET*U3!&t{{!3#'??5<#@#/4<1Q5&&*&6&6u&=e&DG(,(8(8(?(FI$T+uWZ[Y_bgioapq NN7vvW$T)4 "4 T(+ 0 #4;;/E!&t{{!3#'??5<#@#/4<1Q5&&*&6&6u&=e&DG(,(8(8(?(FI NN7vvW "4 0 Xd<0T*%T*%	  ..0 !r9   c                 @   U R                   nU R                  nU R                  nU R                  nU R                  nU R
                  nU R                  n[        U SS 5      nU R                   GH,  u  n	u  pu  pnU[        ;   a  M  U
S:  a  X-   n
US:  a  X-   nUS:  a  X-   nUS:  a  X-   nXJ   nX[   nU[        US-   U5         nU[        US-   U5         nUU-
  UU-
  nn[        US5      (       a  U" XUUUU5        M  U	S:X  a  [        [        [        R                  U5      5      n[!        U5      nX-
  S-   n[#        U5       HD  nUUU-     nXkU-      nU(       a&  UR%                  U5        UR'                  UUUU* SSS9  UU-
  nMF     GM'  U	S:X  a  [        [        [        R                  U5      5      n[!        U5      nX-
  S-   n[#        U5       HC  nUUU-     nXzU-      nU(       a%  UR%                  U5        UR'                  UUUUSSS9  UU-   nME     GM  U(       Ga  [)        U[        [*        45      (       Ga  US   S;   Ga  X:X  a,  X:X  a'  U(       a   UR-                  X45      nU(       a  Uu  nnnnUS   USS  nnUR/                  5         UR1                  5       nUR'                  UUUU5        UR3                  USS	9  US
:X  a  UR5                  UUUU-   UUSS9  GO US:X  a;  UUS-  -   nUR5                  UUUUUSS9  UR5                  UUUU-   UUS S S2   SS9  GOUS:X  a;  UUS-  -   nUR5                  UUUUUSS9  UR5                  UUUUU-   US S S2   SS9  GOUS:X  a  UR5                  UUUUU-   USS9  GOUS:X  a  S[!        U5      s=::  a  S::  ag  O  OdUS S u  u  n n!u  n"n#UU U-  -   n UU"U-  -   n"UU!U-  -   n!UU#U-  -   n#US   n$US   n%[!        U5      S:X  a  US   OS n&UR5                  U U!U"U#U%U&U$S9  O[7        S[8        < SU< 35      eUS:X  a  S[!        U5      s=::  a  S::  a  O  OUS   u  n'n(UU'U-  -   n'UU(U-  -   n(US   u  n)n*U*S:X  a  Un*OMU*S:X  a  Un*ODU*S:X  a  [        UU5      n*O1U*S:X  a  [;        UU5      n*O[7        SUS   < S [8        < SU< 35      eU)U*-  n)US   n$US   n%[!        U5      S:X  a  US   OS n&UR=                  U'U(U)U%U&U$S9  O[7        S[8        < SU 35      eUR?                  5         GM  [        R                  " U5      nU(       d  GM  X:X  a,  X:X  a'  U(       a   UR-                  X45      nU(       a  Uu  nnnnUR%                  U5        UR'                  UUUUSSS9  GM/     g )!Nr  r   r   __call__r;  r5  r<  )VERTICAL
HORIZONTAL	VERTICAL2HORIZONTAL2LINEARGRADIENTRADIALGRADIENTr*  rX  F)extendrZ         @r   rY  rW  r[     r?  r   r+   )	positionsr]  zWrong length for z arguments r\  r  r  r   r   zBad radius, z, for ) r  r  rd  r  r  r  r  r?   r!  r-  r   r`   ra   rp   r   toColorOrNoner|   r   setFillColorrectrz   r{   r   r[  r-  r0  linearGradientr   rK  r   radialGradientrc  )+r4   r9  r<  rd  r  r#  r1  r0  r"  rk   r0  r1  r2  r3  argr   r  r   r  r   r  
colorCycler   rowCountr   rN   colCountxywharg0pxhyhax0ay0ax1ay1r]  rg  r   xcycr   refs+                                              r6   rI  Table._drawBkgrnd(	  s'   yy))))%%
OO	Dd3	,0,<,<(C"8BS\!8AvBJrAvBJrAvBJrAvBJr!B!Bc"Q$uo.Bc"Q$uo.Bb5"R%qAs:&&Dr2q!,((
 "#f&:&:C"@A
J7Q;xA&qw/E"6*A))%0		"b!aRq	AaB ) ((!#f&:&:C"@A
J7Q;xA&qw/E!q&)A))%0		"b!Qqa	@QB ) JsD<88F 'D Dv"&Y(}}bW5+/LBAq #AAB#D NN$(AFF2r1a(MM!AM.\)++Br"Q$r#U+K.!C%Z++BBC+N++BBFBDbD	RW+X,!C%Z++BBC+N++BBQDbD	RW+Xz)++BBQE+R// c#h>>58!W2JS#
c"$s1u*C"$s1u*C"$s1u*C"$s1u*C%(VF #AA*-c(A+A4A //S#sAQR[a/b",/@kRUQX-Y"ZZ// c#h>>%(VFB!#bdB!#bdB%(VFAs"G|&'!$h&'!$e&)1Qi!$e&)!Ah&0<AzPRvU`ad`g1h&i iHA%(VF #AA*-c(A+A4A //B1RX/Y",/@kRUQV-W"XX%%'"005Eu6bf#,=="#9D#/3B1))%0		"b!Qqa	@I -=r9   c           	      
   Uu  pVUu  pxU R                   ULa  U R                   n	U	b  UR                  U	R                  :w  a%  U R                  R                  UR                  5        U	bN  UR                  U	R                  :w  d4  UR
                  U	R
                  :w  d  UR                  U	R                  :w  a;  U R                  R                  UR
                  UR                  UR                  5        X l         UR                  n
UR                  n[        U[        [        [        45      (       Ga|  [        U[        [        45      (       d  U4n/ n/ nU R                  XX,XS9u  pUS:X  a  Xh-   UR                  -
  nO<US:X  a  XbR                   -   U-   nO$XhUR                   -   UR                  -
  U-   S-  -   nU(       a  UUS   R#                  5       -  n[%        XU5       H  u  npU
S:X  a  XRR&                  -   nOaU
S:X  a  XW-   UR(                  -
  U-
  nOFU
S;   a%  XWUR&                  -   UR(                  -
  U-
  S-  -   nO[+        S	U
< S
[-        U5       35      eUUR#                  5       -  nUU-  nUR/                  U R                  UU5        UUR1                  5       -  nM     GO1U
S:X  a%  U R                  R2                  nXRR&                  -   nOU
S;   a8  U R                  R4                  nXWUR&                  -   UR(                  -
  S-  -   nOkU
S:X  a(  U R                  R6                  nXW-   UR(                  -
  nO=U
S:X  a(  U R                  R8                  nXW-   UR(                  -
  nO[+        S	U
< 35      e[;        U5      R=                  S5      n[?        U5      nUR                  nUR                  nUS:X  a  XbR                   -   UU-  -   U-
  nO[US:X  a  Xh-   UR                  -
  U-
  nO@US:X  a+  XbR                   U-   UR                  -
  UU-  -   S-  -   U-
  nO[+        SU< 35      e0 nUR@                  nU(       a  UUS'   URB                  nU(       a  UUS'   U(       a  U H  nU" UUU40 UD6  UU-  nM     OU H  nU" UUU5        UU-  nM     [E        USS 5      nU(       a(  U" U R                  URF                  URH                  5        URJ                  (       a,  U R                  RM                  URJ                  XVXW-   Xh-   4SS9  URN                  (       a.  U R                  RQ                  SURN                  XVXW-   Xh-   4SS9  g g )N)r  r  ri  r  r/   r^  r   r-   RIGHT)CENTREr   zInvalid justification z for r   DECIMALrC  r   zBad valign: rS   rT   onDrawr   )relativer  )Rectr|  ))rH  rN   rd  rb  rH   rF   rG   setFontrO   rQ   rz   r{   ra   r   r  rK   rL   r}  r  rI   rJ   r   typedrawOnr~  
drawStringdrawCentredStringdrawRightStringdrawAlignedStringr   r{  r|   rS   rT   r?   r   labelrR   linkURLrU   linkRect)r4   rN  rO  possizerP  rL  rQ  rM  curjustrQ   r  r  r   r  r   r   r}   rS  valsr   rH   rG   drawKwdsrS   rT   r{  s                               r6   rJ  Table._drawCell	  s2   "Y.$$C{ioo:		&&y7{i//3;;>)BTBTX[XdXdBdhqhzhz  B  K  K  iK		!!)"4"4i6H6H)J[J[\!*""!!guT(344guTl33zWAA%%gy%WDAu}&)=)==!222Q6i&=&==i>R>RRSTTVYYYWQZ6688w+1<V,A,A%A7]	8N8N(NQR(RA11)>)> >y?U?U UVW WY\\\A$'=dXU4PQ7)%TUUQ%%''Q1Q'Q__&& , v~yy++222--yy22Y%:%::9;Q;QQSVVVyy00%	(>(>>"yy22%	(>(>> #9$!BCCw<%%d+DD	A''G ))Hx444QwY>xG&)=)==H!55	A)BVBVVWXY`W``beeehpp <z!:;;H!++I)(;/''Gg+AAq-H-LA  AAqMLA  WXd3Ftyygmm<>>IIinnvv?PRXRd.epqr  IIr9#8#8PVPacicu?v  BC  D !r9   c                     [        U5      (       a7  U(       d  S O'[        U5      [        S[        U5      -
  S5      S/-  -   U l        g [        SU< 35      e)Nr_  r   z@cornerRadii should be None or a list/tuple of numeric radii
not )r   ra   r   r|   r  r   )r4   r7  s     r6   r,  Table._setCornerRadii
  sW     --,7T+=NRUVWX[\gXhVhijRkmnloRo=pD`al`opqqr9   )2r  r  r  r!  r   r  r  r  r  r  r  rH  rd  r  r!  r  r  r  r"  r   r.  r  r$  r  r  r  r\  r  r  r  r-  r  r&  r#  r  r  r%  r   r  r  r  r  r  r(  r'  r]   r\   r)  r*  r	  )r  )NN@ )r  r  r1   rw   )r   )Fr  )=rB   rC   rD   rE   r   r7   rs   r  r
  rj  ru  r  r  r  rz  r  r  r  r  r  r  r  r  r  r  r+  r7  r.  rh  rZ  rs  rq  rr  r  rw  r  rx  r  r  r  r  r  r  r  r  r  r  r  r"  staticmethodr  r{  r	   r  r2  r;  rS  rI  rJ  r,  rV   rW   r9   r6   r   r     s|   '+DqQY]ei4dZ^ DDX\%m,`l(&oP409=(~#BJ`D"B5"pd,-5^.8`2$h4$R;Jz,\9FNL%1&N
1&N
+
H.',RH*VZx:x1"fVp ##45(( ,5?? -<KZ91vMA^XDtrr9   r   rs  rq  rr  r  rw  rx  r  )r  r  r  r  r  r  r  r  c                       \ rS rSrSrSrSrg)r   i 
  z+Henning von Bargen's changes will be activer   rW   N)rB   rC   rD   rE   __doc__r   rV   rW   r9   r6   r   r    
  s    5r9   r   c                   Z    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rSrg)TableRenderCBi&
  zDtable render callback abstract base klass to be called in Table.drawc                     [        U[        5      (       d  [        S[        U5       S35      e[	        XS 5      nU(       d  [        SU 35      eU" U/UQ76   g )NzTableRenderCB first argument, z is not a Tablezinvalid TablerenderCB cmd )rz   r   r   rq   r?   )r4   r  rk   argsmeths        r6   rV  TableRenderCB.__call__(
  sX    !E""*7UVZ[\V]U^^m5n*o$ot%:(B3%&HIIQr9   c                     [        S5      e)Nr>  NotImplementedErrorr4   r  s     r6   r>  TableRenderCB.startTable-
      !,//r9   c                     [        S5      e)Nr?  r  r  s     r6   r?  TableRenderCB.startBG/
      !),,r9   c                     [        S5      e)Nr@  r  r  s     r6   r@  TableRenderCB.endBG1
  s    !'**r9   c                     [        S5      e)NrA  r  )r4   r  r  s      r6   rA  TableRenderCB.startRow3
      !*--r9   c                     [        S5      e)NrB  r  )r4   r  r  r  rN  rO  r  r  s           r6   rB  TableRenderCB.startCell5
  s    !+..r9   c                     [        S5      e)NrC  r  r  s     r6   rC  TableRenderCB.endCell7
  r  r9   c                     [        S5      e)NrD  r  r  s     r6   rD  TableRenderCB.endRow9
  s    !(++r9   c                     [        S5      e)NrE  r  r  s     r6   rE  TableRenderCB.startLines;
  r  r9   c                     [        S5      e)NrF  r  r  s     r6   rF  TableRenderCB.endLines=
  r  r9   c                     [        S5      e)NrG  r  r  s     r6   rG  TableRenderCB.endTable?
  r  r9   rW   N)rB   rC   rD   rE   r  rV  r>  r?  r@  rA  rB  rC  rD  rE  rF  rG  rV   rW   r9   r6   r  r  &
  s<    N
0-+./-,0..r9   r  c                     U S   [         ;   $ r   )LINECOMMANDS)rk   s    r6   rE  rE  B
  s    q6\!!r9   c                    X   U   nUS:X  aL  [        U5      nUS   Ul        US:  a0  US   Ul        US:  a  US   Ul        g UR                  S-  Ul        g g US;   a  US   Ul        g US;   a  US   Ul        g US:X  a  US   Ul        g US	:X  a6  [        R
                  " US   [        R                  " SSS5      5      Ul        g US
;   a  US   Ul        g US:X  a  US   Ul	        g US:X  a  US   Ul
        g US:X  a  US   Ul        g US:X  a  US   Ul        g US:X  a  US   Ul        g US:X  a  US   Ul        g US:X  a  US   Ul        g US:X  a  US   Ul        g US:X  a  US   Ul        g g )NFONTr   r   r   ry  )FONTNAMEFACE)SIZEFONTSIZELEADING	TEXTCOLOR)ALIGN	ALIGNMENTVALIGNLEFTPADDINGRIGHTPADDING
TOPPADDINGBOTTOMPADDINGHREFDESTINATION	DIRECTIONSHAPING)r|   rF   rG   rH   r   toColorColorrN   rO   rQ   rI   rJ   rK   rL   rR   rU   rS   rT   )r4  r   r   rK  r  r  r   s          r6   rH  rH  E
  s    -
C	V|KayQ3!!9CLs$Qi!ll3.  
#	#ay	#	#ay	yQi	{	NN6!9fll1Qq.AB		%	%q		xAY
	}	 )	~	!!9	|			"1I	v!9	}	 )	{	q		yQi 
r9   r  rx  r   r   g      ?)r  )r   r   r  rx  r  r   r  r  )r   r   r  )r   r   r  )r   r   __main__)old_tables_test)r   r   gW[?)M__all____version__r  reportlab.platypus.flowablesr   r   	reportlabr	   reportlab.lib.stylesr
   r   r   reportlab.libr   reportlab.lib.utilsr   r   r   r   r   r   r   reportlab.lib.validatorsr   reportlab.lib.rl_accelr   reportlab.lib.abagr   rq  reportlab.pdfbase.pdfmetricsr   r  r   r   r   collectionsr   rF  rG  r   r   r~   r   r   r   r  r   r   r   r   r   r{   r   r   r,  r   r-  r   rb  r   ra   r  r  r  rE  rH  r,   
GRID_STYLE	BOX_STYLELABELED_GRID_STYLEr  COLORED_GRID_STYLEgreen
LIST_STYLErB   tests.test_platypus_tablesr  rW   r9   r6   <module>r     s  

 	 @  K K   j j j : ) 0 4 G 3 "Qqa!	Dq!Qq
A	 : 0:.`?* 1: /,
= "&9?? (	 	5  /0GH01YZ KN$rH N$r`H # $,*)**.
  JOO%&. .8") V eWdFLL1')
 UGT6<<0')	  5'46UGQ-5&!V\\25&!V\\2'	)   5'46UGQ

+5&!V\\25&!V\\2'	)  5&!V\\25'4667Av||4')
 z: r9   