403Webshell
Server IP : 217.160.0.135  /  Your IP : 216.73.217.85
Web Server : Apache
System : Linux www 6.18.52-i1-ampere #1203 SMP Mon Sep 14 18:29:59 CEST 2026 aarch64
User : sws1074145052 ( 1074145052)
PHP Version : 8.3.32
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /lib/python3/dist-packages/reportlab/platypus/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/reportlab/platypus/__pycache__/tables.cpython-311.pyc
�

~G�bI��
��dZdZdZddlmZmZddlmZddlm	Z	m
Z
mZddlm
Z
ddlmZmZmZmZmZmZmZdd	lmZdd
lmZddlmZddlmZdd
lm Z m!Z!ddlm"Z"ddl#m$Z$dddddd�Z%dddddd�Z&Gd�de	��Z'Gd�d��Z(d�Z)d�Z*d�Z+dHd�Z,ej-fd�Z.d �Z/d!�Z0d"�Z1dej-fd#�Z2Gd$�d%e3��Z4e$d&d'��Z5e$d(d)��Z6Gd*�d+e��Z7d,d-d-d.d/d0d1d2d3�Z8Gd4�d5e7��Z9e:e8�;����Z<d6�Z=d7�Z>e(d8d9d:d;e
j?fd<g��Z@e(d=d9d:d>e
j?fd<g��ZAe(d?d9d:d;e
j?fd=d9d:de
j?fd@d9dAde
j?fdBd9dCde
j?fd<g��ZBe(d?d9d:d;e
j?fd=d9d:de
jCfd@d9dAde
j?fdBd9dCde
j?fd<g��ZDe(dDd9dAde
jEfdDdEd:d;e
j?fd@dCd:de
jEfd<g��ZFeGdFkrddGlHmIZIeI��dSdS)I)�Table�
TableStyle�	CellStyle�	LongTablez3.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�V�eZdZeZdZdZdZdZdZ	dZ
dZdZdZ
dZd	Zd
Zd
Zd
d�Zd
d�Zd
S)r�
���r�black�LEFT�white�BOTTOMNc�F�||_|�|�|��dSdS�N)�name�copy)�selfr2�parents   �;/usr/lib/python3/dist-packages/reportlab/platypus/tables.py�__init__zCellStyle.__init__9s/����	����K�K���������c	��|�t|j��}t|��D]7}|�d��r�t	||t||�����8|S)N�_)rr2�dir�
startswith�setattr�getattr)r4�resultr2s   r6r3zCellStyle.copy=sc���>��t�y�)�)�F���I�I�	7�	7�D����s�#�#�-�X��F�D�'�$��"5�"5�6�6�6�6��
r8r1)�__name__�
__module__�__qualname__r�fontname�fontsize�leading�leftPadding�rightPadding�
topPadding�
bottomPadding�firstLineIndent�color�	alignment�
background�valign�href�destinationr7r3�r8r6rr*s��������H��H��G��K��L��J��M��O��E��I��J�
�F��D��K����������r8rc�(�eZdZdd�Zd�Zd�Zd�ZdS)rNc	�<�|r]|���dd�}|j|_dD]1}t||��rt||t	||�����2ng}|t|pg��z|_i|_|j�|��dS�N)�spaceBefore�
spaceAfter)�getCommands�_opts�hasattrr=r>�list�_cmds�update)r4�cmdsr5�kw�pcmds�as      r6r7zTableStyle.__init__Fs����	��&�&�(�(����+�E���D�J�1�
6�
6���6�!�$�$�6��D��7�6�!�#4�#4�5�5�5��
6��E��T�$�*�"�-�-�-��
���
��
���"�����r8c�:�|j�|��dSr1)r[�append)r4�cmds  r6�addzTableStyle.addVs���
���#�����r8c�b�dd�tt|j����zS)Nz!TableStyle(
%s
) # end TableStylez  
)�join�map�reprr[�r4s r6�__repr__zTableStyle.__repr__Xs%��4�v�{�{�3�t�T�Z�CX�CX�7Y�7Y�Y�Yr8c��|jSr1)r[ris r6rWzTableStyle.getCommandsZs
���z�r8�NN)r@rArBr7rdrjrWrQr8r6rrEsX���������� ���Z�Z�Z�����r8rc�^�t|ttf��rdpt|��S�Nr)�
isinstance�tuplerZ�len)�xs r6�_rowLenrs]s)���!�U�4�L�)�)�)�/�a�9�3�q�6�6�9r8c���g}|j}g}|j}g}|j}|}dx}	}
|D]�}t|t��r�t|�����}|sd}|
dz
}
n�|�d��r5t
|dd���}|	|z
}	|t|����nA|dkr|t|����n"t
|��}||z}n
|�|
dz
}
n||z}||����td|��}|td|	��z}|D]}||xx|zcc<|||z}�td|��}t|��}
|
r|
dkr||
zpd}|D]}|||<�|S)	acheck 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�%����*gY@r)	rbror�str�strip�endswith�floatrq�max)�V�avail�R�r�I�i�J�j�s�w�n�v�f�ms              r6�_calc_pcr�`s���	�A�	��A�
�A�	��A�
�A�	��A�
�A��J�A��
�
�
���a��!�!�	��A�������A��
����Q�������C���
��!�C�R�C�&�M�M���Q�����#�a�&�&�	�	�	�	��C�����#�a�&�&�	�	�	�	��!�H�H���Q����
�Y�
��F�A�A�
��F�A�	��!������B�q�	�	�A�	�#�d�1�+�+�
�A�
����	�!�����	����	�Q�q�T�	����B�q�	�	�A��A���A���
��T�\�a��c�
!�T���	�	�A��A�a�D�D��Hr8c��|dkr|Sd|dd|ddzzd|dd|ddzzf}d|dd|ddzzd|dd|ddzzf}d|dd|ddzzd|dd|ddzzf}d|d|dzzd|d|dzzf}d|d|dzzd|d|dzzf}d|d|dzzd|d|dzzf}|dkr|d|||gn||||dgS)zVcalculate all or half of a bezier curve
    kind==0 all, 1=first half else second halfr��?rrr+rQ)�P�kind�Q0�Q1�Q2�R0�R1�S0s        r6�_calcBezierPointsr��st���Q�w�w����1�Q�4��7�1�Q�4��7�?�#�C��1��a���1��a���$9�
:���1�Q�4��7�1�Q�4��7�?�#�C��1��a���1��a���$9�
:���1�Q�4��7�1�Q�4��7�?�#�C��1��a���1��a���$9�
:���2�a�5��A��;���R��U�2�a�5�[� 1�
2���2�a�5��A��;���R��U�2�a�5�[� 1�
2���2�a�5��A��;���R��U�2�a�5�[� 1�
2��"&��'�'��!��R��2����2�b��1���>r8�
left-right�W[����?c��||z}|dkr&|dkr |\}}	||z
|	f||z
|	f||	|zf||	|zfg}
n�|dkr&|dkr |\}}|||z
f|||z
f||z
|f||z
|fg}
ny|dkr&|dkr |\}}||z|f||z|f|||z
f|||z
fg}
nM|dkr&|dkr |\}}	||	|zf||	|zf||z|	f||z|	fg}
n!tdt||f��z���|dkr|
dd|
ddks$|d	kr2|
dd
|
dd
kr|
���t|
|��}
|
S)N�right�bottom�top�leftzUnknown quadrant position %sr�rrw�
bottom-topr)�
ValueErrorrh�reverser�)
�xpos�ypos�cornerr�r��	directionr��t�xhi�ylor��yhi�xlos
             r6�_quadrantDefr��s���	�!��A��W�}�}��x������C��A�g�s�^�S��U�C�L�3��a��.�3��a��.�I���	
�w���4��;�;����C��3��7�^�S�#��'�N�S�1�W�c�N�S�1�W�c�N�K���	
�v���$��+�+����C��A�g�s�^�S�1�W�c�N�S�#��'�N�S�#��'�N�K���	
�v���$��.�.����C��3��7�^�S�#��'�N�S�1�W�c�N�S�1�W�c�N�K����7�$��T�{�:K�:K�K�L�L�L��,���1�Q�4��7�1�R�5��8�#3�#3�y�,�7N�7N�ST�UV�SW�XY�SZ�[\�]_�[`�ab�[c�Sc�Sc�	�	�	�����!�T�"�"�A��Hr8c���|r|�|d��}|r*||dd|z
ks||dd|zkr|||||��dSd}t|��}|||z
krn||krh||\}}	|	||zks	|||z
kr|dz
}�2t||��}
t||	��}|
|kr||||
|��|}|||z
kr||k�h|||z
kr|||||��dSdS)z�
    Draw horizontal lines; do not draw through regions specified in hBlocks
    This also serves for vertical lines with a suitable canvLine
    Nrwrr)�getrqr}�min)�canvLine�scp�ecp�y�hBlocks�FUZZr�r��x0�x1�i0�i1s            r6�_hLiner��sG��
�-�'�+�+�a��-�-���/�c�7�2�;�q�>�$�.�.�.�#�w�q�z�!�}�T�7I�2I�2I����Q�s�1������
����L�L���#�d�(�l�l�q��s�s��Q�Z�F�B���3�t�8�|�|�r�3�t�8�|�|��Q�����S����B��S����B��#�v�v�x�x��A�b��+�+�+��C��#�d�(�l�l�q��s�s��s�4�x�<�<���#�a��A�.�.�.�.�.�<�<r8c�p�d|dz
z|z}||z
}t|��D]}|||||��||z}�dS)Nr�r)�range)r�r�r�r��ws�count�offset�idxs        r6�
_multiLiner��s]��
�%��'�]�2�
�F���K�A��U�|�|�������a��a� � � �	�R�����r8c
���	||S#t$r/	t|��}||cxkr|krnn|cYSn#YnxYwYnwxYwtd|�d|�dt|�������)zLprivate converter tries map(value) low<=int(value)<=high or finally an errorzBad z value z in )�KeyError�intr��ascii)�valuerg�low�highr2rc�ivalues       r6�_convert2intr��s�����5�z�������	���Z�Z�F��F� � � � �D� � � � � ��-�-�-���	��D�����������*�d�d�d�5�5�5��s����D�
E�
E�Es&�
�
A� 9�A�A�=�A�Ac�>�	|�|��S#YdSxYw�Nr)r{)�objr�s  r6�	_endswithr��s'����|�|�A�������q�q���s��c�P����i�|st���}ttd�|���D������D]�\}\}}||kr�|dz
}t	��fd�t||��D����}|||z
kr�H�fd�t||��D��}	|	s�g||z}|t
t|	����z}|	D]}
��|
d��|z�|
<�������D]\}
}�|
xx|z
cc<�dS)Nc3�$K�|]\}}||fV��dSr1rQ)�.0�ik�ivs   r6�	<genexpr>zspanFixDim.<locals>.<genexpr>�s*����%L�%L�%�"�R�r�"�g�%L�%L�%L�%L�%L�%Lr8rc�N��g|]!}�|��|d��z��"S�r)r�)r�rr�Mr~s  ��r6�
<listcomp>zspanFixDim.<locals>.<listcomp>�s-���7�7�7�Q��1��a�e�e�A�a�j�j��7�7�7r8c�$��g|]}�|�
|��
Sr1rQ)r�rr�V0s  �r6r�zspanFixDim.<locals>.<listcomp>�s���6�6�6�1��1��
�Q�
�
�
r8r)rq�reversed�sorted�items�sumr�r|r�)r�r~�spanCons�limr�r�r�r�r��Xrrr�s``         @r6�
spanFixDimr��s_�����
�A���c�"�g�g���f�%L�%L�8�>�>�;K�;K�%L�%L�%L�M�M�N�N�
 �
 �	��'�2�b�
�s�7�7�H�
�a����7�7�7�7�7�%��2�,�,�7�7�7�8�8���a��f�9�9�h�6�6�6�6��b����6�6�6����(�	�Q���	�U�3�q�6�6�]�]����	 �	 �A��5�5��1�:�:�a�<�A�a�D�D�	 ��w�w�y�y�����!�	�!�����	������r8c��eZdZdS)�_ExpandedCellTupleN)r@rArBrQr8r6r�r��s�������Dr8r��RoundingRectDefszx0 y0 w h x1 y1 ar SL�RoundingRectLinez&xs ys xe ye weight color cap dash joinc��eZdZddddddddddddddddddefd�Zd�Zd�Zd:d�Zd	�Zd
�Z	d;d�Z
d<d
�Zd=d�Zd�Z
d>d�Zd�Zd�Zd=d�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd �Zd!�Zd"�Z d#�Z!d$�Z"d%�Z#d&�Z$d'�Z%d?d(�Z&d@d*�Z'd@d+�Z(d@d,�Z)d-�Z*dAd.�Z+d/�Z,dAd0�Z-d1�Z.e/e.��Z.dAd2�Z0d3�Z1e2j3fd4�Z4d5�Z5d6�Z6d7�Z7d8�Z8d9�Z9dS)BrNrrc
��
�|
|_|pd|_|pd|_t|tt
f��s$t
d|���z���t|��x|_	}g|_
t|tt
f��}t|tt
f��}|r7tttt|������x|_}n|r|rt|��}nd}|	stj}	|�t#|dtj��n||_|r|�s|	dkr$t
d|���z���|	dkr�t(|_d	tt-�������vr;t1d	��at4jt2_t4jt2_t)j|d
|jj ||fzt2��n:|	dkr
tB|_n't
|����d|	�d
����dS|
r||_
n|�"|��x|_
}|s||gz}n�t|��|kr�tj#rJt|t
��r5t|��}||kr||z
|dgz||d�<n?|d|�}n4t
d|���|t|��fz���|s||gz}nGt|��|kr4t
d|���|t|��fz���tI|��D]r\}}t|��}||krXtj#r$t|t
��r||z
dgz||d�<�Jt
d|���|||fz����s|x|_%|_&|x|_'|_(|�vg}tS|��D]\}g}tS|��D]3}|�*tWtY||f�������4|�*|���]||_-n||_-g|_.g|_/g|_0g|_1g|_2||_3||_4||_5||_6|r|�7|��|tpur|�9|��||_:|�||_;|�||_<|dkr[t|��}|s&t
d|���|fz���||kr|||z
|�d��zz}||_=dS)N�CENTER�MIDDLEz%s invalid data typer�_longTableOptimize�errorz&%s must have at least a row and column�indicate�_emptyTableStylez	%s(%d,%d)�ignorez bad emptyTableAction: "�"rwz:%s data error - %d columns in data but %d in column widthsz5%s data error - %d rows in data but %d in row heights�z(%s expected %d not %d columns in row %d!z8%s Supplied mismatching minimum row heights of length %dr�)>�ident�hAlign�vAlignrorprZr��identityrq�_nrows�_cellvaluesr}rgrs�_ncolsr	�emptyTableActionr>�longTableOptimizer�r�	__class__�globals�keysrr�r
�red�	textColor�yellow�	backColorr7r@r�
normalizeData�allowShortTableRows�	enumerate�_rowHeights�_argH�
_colWidths�_argWr�rbrrh�_cellStyles�_bkgrndcmds�	_linecmds�	_spanCmds�_nosplitCmds�	_srflcmds�
repeatRows�
repeatCols�
splitByRow�
splitInRow�setStyler�_setCornerRadii�_rowSplitRangerUrV�_minRowHeights) r4�data�	colWidths�
rowHeights�stylerrrrr�r�r�r��normalizedData�
cellStyles�
rowSplitRangerUrVr��
minRowHeights�cornerRadii�nrows�_seqCW�_seqRH�ncolsr�r��d�cellrows�cellcolsr��lmrhs                                 r6r7zTable.__init__�s�����
��(�����(�����$��d�|�,�,�	G��3�d�m�m�o�o�E�F�F�F�!�$�i�i�'���e�����I�u�T�l�3�3���J��d�|�4�4���	��D��W�T�1B�1B�,C�,C�(D�(D�D�$�+���
�	�6�	�3�y�>�>�5�5��e��N�I�4N�!1�'8�'@�$+�4�0D�Y�E`�#a�#a�#a�FW�	
���	�%�	���(�(� �!I�D�M�M�O�O�![�\�\�\�!�:�-�-�!-���%�T�'�)�)�.�.�2B�2B�-C�-C�C�C�'5�6H�'I�'I�$�17��$�.�17��$�.��%�d�;�$�.�:Q�RW�X]�9^�+^�`p�q�q�q�q�!�8�+�+�!3���� �D�M�M�O�O�O�O�Td�Td�Td�!e�f�f�f��F��	?�#�D���&*�&8�&8��&>�&>�>�D��t��		I�5�)��#4�y�y�
��^�^�U�
"�
"��,�
I��I�d�1K�1K�
I��	�N�N���U�7�7�%*�1�W�y��}�o�$=�I�a�b�b�M�M� )�&�5�&� 1�I�I� �!]�ae�an�an�ap�ap�qv�x{�}F�yG�yG�aH�"H�I�I�I��	A�E�:�,�$6�z�z�
��_�_��
%�
%��T�X\�Xe�Xe�Xg�Xg�hm�or�s}�o~�o~�W��A�A�
A��T�?�?�	o�	o�C�A�a��A���A��%�x�x��0�o�Z��$�5G�5G�o�"�1�W�r�d�N�A�a�b�b�E�E�$�%O�SW�S`�S`�Sb�Sb�ch�ij�kl�Rm�%m�n�n�n�	�
)3�2���4�:�'0�0���$�*����H��5�\�\�
*�
*�����u���<�<�A��O�O�I�d�A�a�5�k�k�$:�$:�;�;�;�;�����)�)�)�)�'�D���)�D�����������������%���$���$���$����	!��M�M�%� � � ��i�'�'�� � ��-�-�-�+����"�*�D���!�(�D�O��D� � ��}�%�%�D��
Y� �![�_c�_l�_l�_n�_n�os�^t�!t�u�u�u��e��� -�u�T�z�=�;R�;R�SW�;X�;X�.X� X�
�+����r8c��t|dd��}t|dd��}t|dd��}ddl}|�|��}|�dd��}|jj�d	|�d
|�d|�d�S)
z#incomplete, but better than nothingrz	[unknown]rr�rN�
z
  z(
 rowHeights=z
,
 colWidths=z,
z
) # end table)r>�pprint�pformat�replacer�r@)r4r��c�cvr)s     r6rjzTable.__repr__ks����D��{�3�3���D��k�2�2��
�T�-��
4�
4���
�
�
�
�^�^�B�
�
��
�Z�Z��f�
%�
%��LP�N�Lc�Lc�Lc�de�de�de�fg�fg�fg�hj�hj�hj�k�kr8c�b��d��g}|D]%}�fd�|D��}|�|���&|S)z�Takes a block of input data (list of lists etc.) and
        - coerces unicode strings to non-unicode UTF8
        - coerces nulls to ''
        -

        c�J�|�dSt|��rt|��S|S)Nr�)rr)�stuffs r6�normCellz%Table.normalizeData.<locals>.normCell|s+���}��r��u���
�����&��r8c�&��g|]
}�|����SrQrQ)r��cellr1s  �r6r�z'Table.normalizeData.<locals>.<listcomp>�s!���5�5�5��h�h�t�n�n�5�5�5r8�rb)r4r�outData�row�outRowr1s     @r6rzTable.normalizeDataus[���	�	�	����	#�	#�C�5�5�5�5��5�5�5�F��N�N�6�"�"�"�"��r8�c��|jr|jSd}t|dd��}t|dd��}t|dd��}t|dd��}|�rd||fv�r	d}t|��D]�}t|��D]�}	|||	}
t|
tt
tf��rit|
t
tf��s|
f}
d}|
D])}|�|��}|r|d	d�d
krn�*|r|d	d�d
kr||	|df\}
}}}nB|
durdpt|
��}
||	|
}}}
|rt|
t��rdpd}|r
|d|�}|rn��|rn��|r dtt|����z}nd}|rd
|
|t|��fz}nd}d|j
jt|��||||fzS)z'Identify our selves as well as possibleNr��unknownr�r�rrr����z>...rz(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�rorZrprr�ryrr�r}rhr�r@�id)r4�maxLen�vx�nr�ncr-�rh�br�r�r�r��vij�ix�jx�tallests                r6r�zTable.identity�s2���:�(�d�j�(�
��
�T�(�9�
-�
-��
�T�(�9�
-�
-��
�T�-��
-�
-��
�T�=�$�
/�
/��
�	�)�B�r�7�*�*��A��2�Y�Y�
�
���r��� � �A��1��a��A�!�!�T�%��$9�:�:�
4�)�!�U�4�L�9�9�C��t�1���#$�&�&�C� #���V� 4� 4�A� �&�Q�r�s�s�V�V�^�^� %����7��2�3�3�����,-�q�!�Q�J�M�B��B�����I�,�"�6��A����%&��1��B���:�J�q��$:�$:�A��F�Q��!�3��7�F�7��2��K�%�%�K���e�e��
�	�(�3�s�2�w�w�<�<�7�G�G��G�
�	�3�r�"�T�"�X�X�6F�F�B�B��B�3�t�~�7N�PR�SW�PX�PX�Z\�^`�bi�km�6n�n�nr8c#�K�t|dd��}|D]6}t|dd��r|�|||��D]}|V���2|V��7dS)N�canv�__split_only__)r>�splitOn)r4�C�aW�aHrHr,r#s       r6�
_cellListIterzTable._cellListIter�s������t�F�4�(�(���	�	�A��q�)�$�/�/�
����4��2�.�.���A��G�G�G�G�������	�	r8c��t|t��s�d}gj}|�|||��D]�}t|t��rA|stdd���}|�|��|jdkr
|jdkrd}�X|r&|t||j|j�������||����t|j
��}|S)Nr)�_leftExtraIndent�_rightExtraIndentg:�0�yE>)�
leftIndent�rightIndent)ror�rbrNr�	CellFrame�frameActionrPrQr�__self__)r4rKrLrM�framer�r,s       r6�_cellListProcesszTable._cellListProcess�s����!�.�/�/�	/��E��	�A��'�'��"�R�0�0�
�
���a��)�)�� �R� )�1�q� Q� Q� Q���M�M�%�(�(�(��-�d�2�2�u�7N�t�7S�7S� $������A�j��e�.D�QV�Qh�i�i�i�j�j�j�j��A�a�D�D�D�D�"�1�:�.�.�A��r8�@c��|sdS||jz
|jz
}||jz
|jz
}d}d}t	|dd��}	d}
t|t��rU|�||��}t|�	d����|j
zdz}t||��|fS|D]�}
|
�|	||��\}}|
�
��}|
���}|�|�|��|�|�|��t||��}|||z|zz
}|
�|}
��|||
z
|z
fS)N�rrrrHr(�333333�?)rFrGrHrIr>rory�
_elementWidthrq�splitrDr}�wrapOn�getSpaceBefore�
getSpaceAfterrb)r4r~r�r��W�HrMrLr�rH�sb0�vw�vhr��sb�sas                r6�
_listCellGeomzTable._listCellGeom�sX������
���
���
/��
�!�,�
���
0��
��
���t�F�4�(�(�����a����	"��#�#�A�q�)�)�B��Q�W�W�T�]�]�#�#�A�J�.�s�2�B��q�"�:�:�r�>�!��		�		�A��X�X�d�B��+�+�F�B���!�!�#�#�B����"�"�B��}�a�h�h�r�l�l�l��}�a�h�h�r�l�l�l��A�b�	�	�A�
��b��2���A��{�����!�c�'�B�,��r8c�t����|sdSd}d}t|dd���t���fd�|D����S)Nr[rrHc�J��g|]}|������d�� Sr�)r_)r�r�rMrLrHs  ���r6r�z)Table._listValueWidth.<locals>.<listcomp>�s.���7�7�7��A�H�H�T�"�R�(�(��+�7�7�7r8)r>r})r4r~rMrLr�r�rHs  ``  @r6�_listValueWidthzTable._listValueWidth�sS���������
��
���t�F�4�(�(���7�7�7�7�7�7�Q�7�7�7�8�8�8r8c��t|dd��rdS|st|j|��}d|v�r�t|dd��}d}|jr|j}|j}nd}i}i}||jur
|}|dd�}n
|dd�}|j}	|j}
d|v�r"|�d��}d}t|	��D]�\}
}||}|
|
|}||
f}|�
|d��}||vr|sd}n�|�||��}|�<td|�
d��|
||�
d��fz���||j|jzz
}|rC|d}|d}||kr-||f}t!|�
||��|��||<d}||kr|}��|||<d|v��"|rG	t#|||��n4#t%d	|�
���d
|�d|�d|����YnxYw||_d}dg|_|D]!}||z}|j�|���"||_d
|_dS)N�_width_calculated_oncerHrQrruz3Flowable %s in cell(%d,%d) can't have auto width
%sr8r�
spanning problem in z
W0=z W=�

spanCons=r)r>r�rr�
_colSpanCells�_spanRangesr�r�indexrr�r]r�r�rFrGr}r�rr�
_colpositionsrb�_widthrn)r4�
availWidthrbrH�saved�colSpanCells�
spanRangesr��W0r~�Sr�r�r��Vir�r��ji�spanr��c0�c1rr�widths                        r6�_calc_widthzTable._calc_width�s
���4�0��6�6�>����5�h�t�z�*�5�5�!��1�9�9��4��t�,�,�D��E��~�
 �#�1��!�-�
�
�!���
��H��D�J������a�a�a�D����q�q�q�T��� �A�� �A��!�)�)��G�G�D�M�M����%�a�L�L�"�"�D�A�b��1��A��!��Q��A��1��B�%�>�>�"�T�2�2�D��\�)�)�$�)���� �.�.�q��3�3���9�",�-c�gh�gq�gq�rt�gu�gu�vw�xy�z~�{H�{H�IK�{L�{L�gM�.M�#N�#N�N��Q�]�1�>�9�9���&�!%�a��B�!%�a��B�!�2�v�v�$&�r�E��.1�(�,�,�q��2C�2C�A�.F�.F����$%����s�s��A����!��1�!�)�)�4�
}�}��r�!�H�-�-�-�-��}�%�%�]a�]j�]j�]l�]l�]l�]l�mo�mo�mo�pq�pq�pq�rz�rz�&{�|�|�|�|�|����������S����	-�	-�A��A�I�E���%�%�e�,�,�,�,����&'��#�#�#s�7G	�	/G:c����t|ttf��r4d}|D]-}|�||��}|�dSt	||��}�.|St|t
��r�|jrpt|d��r(t|jttf��r|jSt|d��r(t|jttf��r|jSt|d��r'	t|d��|��dS#YnxYwt|d��rD	|�
��}t|ttf��r|Sn#t$rYnwxYw|�dS	t|���d��}n#YdSxYw|j�|j�t	��fd�|D����S)Nrr��	drawWidth�__styledWrap__�minWidthr(c�2��g|]}t|������SrQr)r�rr�fontName�fontSizes  ��r6r�z'Table._elementWidth.<locals>.<listcomp>Ns%���@�@�@��K��(�8�4�4�@�@�@r8)rorZrpr]r}r�_fixedWidthrYr�r�r|r�r>r��AttributeErrorryr^rCrD)r4r�r�r��e�ewr�r�s      @@r6r]zTable._elementWidth+s������a��e��%�%�	��A��
�
���'�'��!�,�,���:�d�d�d���"�I�I����H�
��(�
#�
#�	��}�
g��1�g�&�&�Z�:�a�g�s�5�k�+J�+J�Z�ST�SZ�N��1�k�*�*�f�z�!�+�s�5�k�/R�/R�f�[\�[f�Tf��q�)�*�*�
��6�7�1�%5�6�6�q�9�9�!�<�<����D�����1�j�!�!�	�
��J�J�L�L���a��s��,�,�6�Q�h�6��!�
�
�
���
�����9��1�
���F�F�L�L��&�&����
��q�q�����:���:���@�@�@�@�@�a�@�@�@�A�A�As*�0D�D�'1E�
E'�&E'�/"F�Fc�
�|j}|st|j|��}t|��x}}|j}d|v�r�|j}t
|dd��}	d}
|jr|j}|j	}|j
}
|j}ndx}}i}
|	r|	j|	j
|	jf}
|}|dd�}||_i}t j}d|v�r�|�d��}|j|}|j|}d}d}t+t-t/|||������D�]�\}\}}}||f}|
�|d��}||vr|s�+t3|t4t,t6f���r�t3|t6��r|f}nt9|��}|�||d��x}||<|�W|�|��sBt?d|d� d��|||� d��fz���|	r/|j!|j"|j#p	d|j"zc|	_|	_
|	_||vr4|s��$tI||ddz||dz
|pd��}|�%||p|�&|��|��\}}|	r|
\|	_|	_
|	_||j'z|j(z}t j)st||krndd	l*m+}|d
|d� d��tY|��tY|��||tY|��|� d��fz���nI|durt[|��pd�.d��}|j#p	d|j"zt|��z}||j/|j0zz
}|rC|d}|d
} || kr-|| f}!tI|�|!|��|��||!<d}||kr|}���|rtI|||��n|||<|rV|dz}tc|d|���}"|"|kr4|r2tId�|�2��D����}#||#krnd|v���d|vr|}|rS	tg|||��n@#tid|� ���d|�d|�d|�d|�d|�d|�d|����YnxYwgx|_5}dx}"}$tm|dz
dd��D]1}|�7|"��|||$z
}%|"|%z}||"z
|%z
}$|}"�2|�7|"��|"|_8|�9��||_:dS)NrHrQrz6Flowable %s in cell(%d,%d) can't have auto width in
%sr8r\rr)�LayoutErrorzGFlowable %s (%sx%s points) too wide for cell(%d,%d) (%sx* points) in
%sr�r(r+c3�&K�|]}|dV��
dS)rNrQ)r�rrs  r6r�z%Table._calc_height.<locals>.<genexpr>�s&����%D�%D�q�a��d�%D�%D�%D�%D�%D�%Dr8roz hmax=z lim=z avail=z x z
H0=z H=rprw);rr�rrqr�rr>r�
_rowSpanCellsrqrrrt�	_fontname�	_fontsize�_leadingrr	�_FUZZrsr�rrrZ�zipr�rorprrrX�_canGetWidthr�r�rCrDrEr}rirlrFrG�allowTableBoundsErrors�reportlab.platypus.doctemplater�rryr^rIrHr�r�r�r�
_rowpositionsr�rb�_heightr��_hmax)&r4�availHeightrvrcrb�hmaxr��	longTablerrHrw�rowSpanCellsrxry�colpositions�H0r�r�r�r~r{�hr�r�r�r�r}r~�dWr�r��r0�r1rr�height�msrr,r�s&                                      r6�_calc_heightzTable._calc_heightPsh���J���5�h�t�z�*�5�5�!���V�V���s��+�	��1�9�9� �/�M��4��t�,�,�D��E��~�
 �#�1��#�1��!�-�
�#�1���.0�0��|��
��J�T�^�T�^�T�]�J�U��B��!�!�!��A� �D���H��?�D��!�)�)��G�G�D�M�M���$�Q�'���$�Q�'������#,�T�#�a��A�,�,�-?�-?�#@�#@�!"�!"�K�A�i�q�!�Q��1��B�%�>�>�"�T�2�2�D��\�)�)�$�)� �%�a��t�H�(=�>�>�E�)�!�H�5�5�1�A�4�q�q�&-�a�j�j�!�'+�'<�'<�Q�q��'F�'F�F�A��!�� �y��1B�1B�1�1E�1E�y�&0�1j�no�pq�nr�n{�n{�|~�n�n�AB�CD�EI�ER�ER�SU�EV�EV�nW�2W�'X�'X�!X�#�I�UV�U_�ab�ak�mn�mv�nI�z}�~�I�{I�%R�T�^�T�^�T�]�!�\�1�1�'+� 5�X�$'��T�!�W�Q�Y�(?��T�RS�W�@U�(U�VW�V\�[\�$]�$]��#'�#5�#5�a��8T�T�=Q�=Q�RS�=T�=T�UV�#W�#W�D�B�q�#�Z�UZ�%R�T�^�T�^�T�]�!#�a�m�!3�a�n�!D�B�#,�#C�K��1��� V� V� V� V� V� V�&1�k�2|�AB�CD�AE�AN�AN�OQ�AR�AR�SY�Z\�S]�S]�^d�ef�^g�^g�hi�jk�ms�tu�mv�mv�x|�xE�xE�FH�xI�xI�@J�3J�'K�'K�!K��!"�$��!9�3�q�6�6�!?�R� F� F�t� L� L�A�!"��!<�c�!�*�n�c�!�f�f� D�A��Q�_�Q�\�9�9���&�!%�a��B�!%�a��B�!�2�v�v�$&�r�E��.1�(�,�,�q��2C�2C�A�.F�.F����$%����s�s��A��2?�F�s�=��+�A�.�.�.�Q��!���&��Q�3�D� ��5�D�5��]�]�F���+�+�#�&�"%�%D�%D�H�M�M�O�O�%D�%D�%D�"D�"D�C�#�C�x�x� %�g�!�)�)�h�1�}�}�S�d��
z�z��r�!�H�-�-�-�-��z�%�%�z~�{H�{H�{J�{J�{J�{J�KO�KO�KO�PS�PS�PS�T^�T^�T^�_j�_j�_j�km�km�km�no�no�no�px�px�'y�z�z�z�z�z����"$�#���Q������t�A�v�b��$�$�	�	�A�
�H�H�V�����!��q��A���
�A��V��q� �A��F�F�	����������	�	�	������
�
�
s�4R�;Sc���d|jvs	d|jvr*|���r|�|��}nd}|jr4|���d|jvr|�||���|jr|���|�	|||���|�||���|jr|�
��dSdS)Nrx)rb)r�_hasVariWidthElements�_calcPreliminaryWidthsr�_calcSpanRangesrr�r�_calcNoSplitRangesr��_calcSpanRects)r4rvr�rbs    r6�_calczTable._calc�s
��
�D�O�#�#�s�d�o�'=�'=�4�C]�C]�C_�C_�'=��+�+�J�7�7�A�A��A�
�>�	1�� � �"�"�"��t�z�!�!�� � ��a� �0�0�0���	&��#�#�%�%�%�	
���+�j�1��5�5�5�	
����a��(�(�(��>�	"����!�!�!�!�!�	"�	"r8c�b�|j}t|��}|�|��}d|zS)z�Return 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.
        ztallest cell %0.1f points)rr}rs)r4rArF�rowNums    r6�_culpritzTable._culprit�s5���
���b�'�'�����'�"�"��+�W�4�4r8c���|�|j}tt|j|����D]E}t|j��D].}|j||}|�|��sdS�/�FdS)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.Nrr)r�r�r�r�r�r�)r4�upToRowr6�colr�s     r6r�zTable._hasVariWidthElements�s���
�?�d�k�G���T�[�'�2�2�3�3�	�	�C��T�[�)�)�
�
���(��-�c�2���(�(��/�/���1�1�1��
��qr8c��t|ttf��r|D]}|�|��sdS�dSt|t��r|jSdS)z"Can we work out the width quickly?rr)rorZrpr�rr�)r4�thing�elems   r6r�zTable._canGetWidth�sp���e�T�5�M�*�*�
	��
�
���(�(��.�.���1�1���1�
��x�
(�
(�	��$�$��1r8c��t|j��}d}d}d}d}d}|D]n}|�|dz
}�
|dkr|dz
}|dz
}�t|d��r |dz
}|t|dd���z
}�Kt	|t
tf��sJ�||z}�og}	g}
g}i}d}
|j}t|j��D]�}||}|�|dkst|d��r�d}d}t|j	��D]o}|j
||}|j||}|||��pd}||j|j
zz
}t||��}|o|�|��}�p|r|
�|��n|�|��|||<|
|z
}
��|	�|����t#|	��|jkrdS||
|zz
}|dk�r�|t|��zdz}||z
}|r7|dkr1|p|}d|z
t|��z}d}|t|��z|z}ndx}}g}d}|}|���D]}\}}||}t|d��rt|dd���|z|z}n|dkr|}n|r|pd}||kr|||<�W|�||z
|||f��||z
}||z
}�~|r�|t|��z} |���g}!|D]N\}"}}}| |z}#|#|kr$|||<||z}||z}|r|t|��z} �6|!�|||f���O|!D]\}}}| |z}#|#|ksJ�|#||<�n|���D]
\}}|||<�|x|_|_|S)	z�Fallback 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.rurNrrxrvrw�d)rZrr�r|ror�r]r�r�r�r�rrFrGr}r�rbrqr��sortr)$r4rvrb�totalDefined�percentDefined�percentTotal�numberUndefined�numberGreedyUndefinedr��given�sizeable�
unsizeable�minimums�totalMinimum�elementWidth�colNo�siz�final�rowNor�r�new�	remaining�definedPercentage�	undefined�
defaultWeight�defaultDesired�
desiredWidths�totalDesired�effectiveRemaining�minimum�desired�
proportion�finalSet�disappointment�adjusteds$                                    r6r�zTable._calcPreliminaryWidthss���
�������������� !���	0�	0�A��y��1�$����c����1�$��%��*�%�%��1�S�!�!�
0��!�#����a����f�
�
�-���!�!�S��K�0�0�0�0�0�+�a�/��������
������)���4�;�'�'�	$�	$�E��%��A��y�A�s�F�F�i��#�&6�&6�F�����"�4�;�/�/�;�;�E� �,�U�3�E�:�E� �,�U�3�E�:�E�&�,�u�U�3�3�8�q�C��5�,�U�-?�?�?�C���s�O�O�E��:�$�"3�"3�E�":�":�C�C��-��O�O�E�*�*�*�*��%�%�e�,�,�,�"'������%������U�#�#�#�#��u�:�:���$�$��F��,��"=�>�	��q�=�=�!-�e�J�.?�.?�!?�� D���-�-�L��
3�<�#�#5�#5�1�D�_�	�!$�\�!1�5��3C�3C� C�
�"��"/��l�0C�0C�"C�Z�!O���12�2�
��
�M��L�!*��"*�.�.�"2�"2�
2�
2���w��e�H���Q�s�#�#�P�$�Q�s��s�V�}�}�\�9�:�E�G�G��#�X�X�,�G�G�"7�7�J�N�O�a�G��g�%�%�&�A�e�H�H�!�(�(� ���'�7�E�B�D�D�D� �G�+�L�&�'�1�&�&��+
(�,0��l�0C�0C�C�
��"�"�$�$�$���?L�	C�	C�;�N�G�W�e�)�G�3�H��'�)�)�#*��%��$��/��*�g�5�*�'�P�);�E�,�<O�<O�)O�J�� ����'�5�(A�B�B�B�B�/7�(�(�+�G�W�e�)�G�3�H�#�w�.�.�.�.�'�A�e�H�H��"*�.�.�"2�"2�
#�
#���w�"��%���'(�(��
�T�_��r8c���t|j��}d}|j}t|j��}|j}|j}tt|����D]�}||}|�|dkst|d��rUd}	|D]J}
||
|}||
|}|||��|j	z|j
z}
t|	|
��}	�K||	z
}�w|t|��z
}��|S)Nrrxrv)
rZrr]r�r�r�rrqr�rFrGr}r|)r4rbr�r��rowNos�values�stylesr�r�r�r�r�rr�s              r6r�zTable.minWidth�s�����������)���t�{�#�#���!���!���3�q�6�6�]�]�	"�	"�E��%��A��y�A�s�F�F�i��#�&6�&6�F���#�,�,�E�"�5�M�%�0�E�"�5�M�%�0�E�'�<��e�4�4� �,�-�-2�-?�@�C���s�O�O�E�E��������q���!����r8c�B�ix|_}t|j��D]$}t|j��D]
}||||f|||f<��%g|_g|_|jj}|jj}|jD�]-\}}}|\}	}
|\}}|	dkr
|	|jz}	|dkr
||jz}|
dkr
|
|jz}
|dkr
||jz}|	|kr||	}}	|
|kr||
}}
|	|ks|
|kr�|	|kr9t|
|dz��D]%}t|	|dz��D]}|||f����&|
|kr9t|
|dz��D]%}t|	|dz��D]}|||f����&t|
|dz��D]}t|	|dz��D]	}d|||f<�
� |	|
||f||	|
f<��/dS)a�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
        rrN)rrr�r�r�rqr�rbr)
r4ryrrr��csa�rsarc�start�stopr��y0r��y1s
             r6r�zTable._calcSpanRanges�sR��)+�*���:��t�{�#�#�	/�	/�A��4�;�'�'�
/�
/��#$�a��A�,�
�1�Q�3���
/�������� �'��� �'��"&�.�	5�	5��S�%���F�B���F�B���A�v�v�B���,�r��A�v�v�B���,�r��A�v�v�B���,�r��A�v�v�B���,�r��B�w�w��R�B���B�w�w��R�B���2�v�v��R����r�6�6�"�2�r�!�t�_�_�'�'��!&�r�"�Q�$���'�'�A��C��1��J�J�J�J�'��r�6�6�"�2�r�!�t�_�_�'�'��!&�r�"�Q�$���'�'�A��C��1��J�J�J�J�'��r�2�a�4���/�/�A�"�2�b��d�^�^�/�/��*.�
�1�Q�3���/�&(��R��$4�
�2�b�5�!��5	5�	5r8c�B�ix|_}t|j��D]$}t|j��D]
}||||f|||f<��%g|_g|_|jj}|jj}|jD�]-\}}}|\}	}
|\}}|	dkr
|	|jz}	|dkr
||jz}|
dkr
|
|jz}
|dkr
||jz}|	|kr||	}}	|
|kr||
}}
|	|ks|
|kr�|	|kr9t|
|dz��D]%}t|	|dz��D]}|||f����&|
|kr9t|
|dz��D]%}t|	|dz��D]}|||f����&t|
|dz��D]}t|	|dz��D]	}d|||f<�
� |	|
||f||	|
f<��/dS)ab
        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
        rrN)�_nosplitRangesr�r�r��_colNoSplitCells�_rowNoSplitCellsrbr)
r4�
nosplitRangesrrr�r�r�rcr�r�r�r�r�r�s
             r6r�zTable._calcNoSplitRanges�sY��/1�0���m��t�{�#�#�	2�	2�A��4�;�'�'�
2�
2��&'��A�q�\�
�a��c�"�"�
2� "��� "����#�*���#�*��"&�"3�	8�	8��S�%���F�B���F�B���A�v�v�B���,�r��A�v�v�B���,�r��A�v�v�B���,�r��A�v�v�B���,�r��B�w�w��R�B���B�w�w��R�B���2�v�v��R����r�6�6�"�2�r�!�t�_�_�'�'��!&�r�"�Q�$���'�'�A��C��1��J�J�J�J�'��r�6�6�"�2�r�!�t�_�_�'�'��!&�r�"�Q�$���'�'�A��C��1��J�J�J�J�'��r�2�a�4���2�2�A�"�2�b��d�^�^�2�2��-1�
�a��c�*�*�2�)+�B��B�'7�
�b��e�$��9	8�	8r8c�&�t|di��}t|dd��}|j}|r|r||jks|sdS|j}|j}i}i}t|��dz
}|j���D�]G\}	}
|
�d||	<�	|
\}}}
}||kr�|	\}}|
|z
dkrYt|dz|
dz��D]B}|�	||g���
||dz||f���C||z
dkrYt|dz|dz��D]B}|�	||g���
||||
dzf���C||}||dz}||
dz|z
}|||z
}||||f||	<��#td|�������Y��FxYw||fD]-}|�
��D]}
|
�����.||_||_||_||_dS)a�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�Nrrro)r>r��_hmax_spanRectsrtr�rqrrr�r��
setdefaultrbrr�r�r�r��_vBlocks�_hBlocks)r4�	spanRectsr�r�r��rowpositions�vBlocksr��rlim�coordr��col0�row0�col1�row1r�r6r:rrr�r�r�s                      r6r�zTable._calcSpanRectss����D��b�1�1�	��t�G�D�)�)���+�	��	�)�	��d�.B�(B�(B�)�(B��F��)���)�������<� � ��"��"�.�4�4�6�6�	W�	W�N�U�E��}�#'�	�%� � �W�-2�*�D�$��d��T�z�z�8�#�G�C���D�y��{�{�!&�t�A�v�d�1�f�!5�!5�u�u�A�#�.�.�|�A��r�B�B�I�I�<�X\�]^�X^�K_�`l�mq�`r�Js�t�t�t�t��D�y��{�{�!&�t�A�v�d�1�f�!5�!5�u�u�A�#�.�.�|�A��r�B�B�I�I�<�X\�K]�^j�ko�pq�kq�^r�Js�t�t�t�t�$�T�*�A�$�T�!�V�,�A�(��a��0�1�4�E�)�$�/�!�3�F�()�1�e�V�'<�I�e�$�$��W�%�%�D�M�M�O�O�O�&U�V�V�V�V�V�����'�!�	�	�A������
�
���
�
�����
�#�����
���
�#����s�	
F�C>F�&Gc	��t|t��st|��}|���D]}|�|���|j���D]\}}t
|||���dD]A}t||��s/t||��rt
||t||�����BdSrT)	rorrW�_addCommandrXr�r=rYr>)r4�tblstylerc�kr�r`s      r6rzTable.setStyle?s����(�:�.�.�	,�!�(�+�+�H��'�'�)�)�	"�	"�C����S�!�!�!�!��>�'�'�)�)�	�	�C�A�a��D��1�����-�	4�	4�A��4��?�?�
4�w�x��':�':�
4���Q�w�x��2�2�3�3�3��	4�	4r8c��|dkr
||jz}|dkr
||jz}|dkr
||jz}|dkr
||jz}td|��t|jdz
|��td|��t|jdz
|��fS)z0ensure cell range ends are with the table boundsrr)r�r�r}r�)r4�sc�ec�sr�ers     r6�
normCellRangezTable.normCellRangeJs���
��6�6��T�[�(�2�
��6�6��T�[�(�2�
��6�6��T�[�(�2�
��6�6��T�[�(�2��1�R�y�y�#�d�k�!�m�B�/�/��Q�r���C���A�
�b�<Q�<Q�Q�Qr8c	�:�|ddvr|j�|��dS|ddkr|j�|��dS|ddkr|j�|��dSt	|���r�t|��}t
|��dkrtdt|��z���t
|��dkr|�d��n$t|dtdd	d
|��}||d<t
|��dkr|�d��t
|��dkr|�d��n$t|dtdd	d
|��}||d<t
|��dkr|�d��n|d}|�d}||d<|dksJ�t
|��dkr|�|d��n|d}|�
|d}||d<t
|��dksJ�|j�t|����dS|ddkr|�|d��dS|dd�|dd�c\}\}}\}	}
}|dvr|j�|��dS|�||	||
��\}}	}}
|	dz
}	t#||
dz��D]-}t#||	��D]}
t%|j||
||����.dS)Nr)�
BACKGROUND�ROWBACKGROUNDS�COLBACKGROUNDS�SPAN�NOSPLIT�zbad line command r*rr�cap��rf�	r(r+�ROUNDEDCORNERS��
splitfirst�	splitlast)r	rbrr�_isLineCommandrZrqr�r�r��LINECAPS�	LINEJOINSr
rprr
rr��
_setCellStyler)r4rcrrf�	lineCount�space�opr�rrrr�r�r�s              r6r�zTable._addCommandRsO���q�6�E�E�E���#�#�C�(�(�(�(�(�
��V�v�
�
��N�!�!�#�&�&�&�&�&�
��V�y�
 �
 ���$�$�S�)�)�)�)�)�
�C�
 �
 �3	J��s�)�)�C��3�x�x��z�z��,?��c�
�
�,J�!K�!K�K��3�x�x��z�z��
�
�1�
�
�
�
�"�3�q�6�8�Q��5�#�F�F����A���3�x�x��z�z�3�:�:�d�+�+�+��3�x�x��z�z�3�:�:�a�=�=�=�=�#�C��F�I�q�!�V�S�I�I����A���3�x�x��z�z�3�:�:�a�=�=�=�=���F�	��$� !�I�&�C��F� �A�~�~�~�~��3�x�x��{�{�C�J�J�s�1�v�.�.�.�.��A����=���F�E�"�C��F��s�8�8�r�>�>�>�>��N�!�!�%��*�*�-�-�-�-�-�
��V�%�
%�
%�� � ��Q��(�(�(�(�(�/2�2�A�2�w��Q�R�R��,�$�R��"�b�8�B��f��/�/�/���%�%�c�*�*�*�*�*�!%�!3�!3�B�r�"�R�!@�!@���B��B��a����r�2�a�4���J�J�A�"�2�r�]�]�J�J��%�d�&6��1�b�&�I�I�I�I�J�J�Jr8c�r���������d\}}}|j}|���|j��r/�j}g|dd�<|j�|j���������fd�}||_	|jD�]\
}\}}	\}
}�����}}
t|	t��r|	�	d��r�?�dkr|�kr|�
����}���gkr|�|���d}n�|kr|�����}��|�kr|�����}|�
||
|	|��\}}
}	}t|t�|d����||	f|
|f��||
����	�r�|_n#�r�|_wxYw|���d|_dS)N)NNNc
����||kr|�
jks'|�
jks||kr8|�
jks|�
jkr"�t	||||������	�	��dS�	||||��dSr1)r�r�r�r�r�)�xs�ys�xe�ye�aSLrrK�dashrf�	ocanvline�rrd�weights    ��������r6�
rcCanvLinez$Table._drawLines.<locals>.rcCanvLine�s������V�V��S�V���r�3�6�z�z���V�V��S�V���r�3�6�z�z��C�(��B�r�"�V�E�#�d�4�P�P�Q�Q�Q�Q�Q��I�b��B�r�*�*�*�*�*r8r^�_drawUnknown)rH�	saveState�_roundingRectDef�SL�linerbr
rorr<�
setLineCap�setDash�setLineJoinrr>�
_LineOpMapr��restoreState�	_curcolor)r4�ccap�cdash�cjoinrHr)r%rr�rrrr�rr rrKr!rfr"r#r$s              @@@@@@@@r6�
_drawLineszTable._drawLines�sH����������-���e�U��y���������#���	#���B��B�q�q�q�E��	�I��)�C�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�#�D�I�	&�VZ�Vd�
t�
t�R��G�R��W�b��f�e�S�$��e�U��b��*�*�O�r�}�}�W�/E�/E�O�x���9�9��s����O�O�C�(�(�(��D��<�4�2�:�:��(������� $����U�]�]��L�L��&�&�&� �E��#��t����$�$�T�*�*�*� �E�!%�!3�!3�B�r�"�R�!@�!@���B��B�A���Z�^�^�B��@�@�A�A�B��8�b�RT�X�W]�_d�fk�mr�s�s�s�s�!
t�$�
&�%��	����
&�%��	�%�%�%�%�����������s
�#D F�Fc�n�ddl}|�d��jd}td|z���)NrrrzUnknown line command '%s')�sys�	_getframe�f_localsr�)	r4r��endr$rKr�rr6rs	         r6r&zTable._drawUnknown�s8���
�
�
�
�]�]�1�
�
�
&�t�
,���4�r�9�:�:�:r8c�n�|�||||||��|�||||||��dSr1)�_drawBox�_drawInnerGrid)r4r�r9r$rKr�rs       r6�	_drawGridzTable._drawGrid�sB���
�
�u�c�6�5�%��?�?�?����U�C����u�E�E�E�E�Er8c�"�|\}}|\}	}
|�||f|	|f||||��|�||
dzf|	|
dzf||||��|�||f||
f||||��|�|	dz|f|	dz|
f||||��dSrn��_drawHLines�_drawVLines�r4r�r9r$rKr�rr�rrrs           r6r;zTable._drawBox�s������2����2����"�b��B��8�V�U�E�5�I�I�I����"�b��d��b�"�Q�$�Z����u�M�M�M����"�b��B��8�V�U�E�5�I�I�I����"�Q�$���b��d�B�Z����u�M�M�M�M�Mr8c��|\}}|\}	}
|�||dzf|	|
f||||��|�|dz|f|	|
f||||��dSrnr?rBs           r6r<zTable._drawInnerGrid�sn�����2����2����"�b��d��b�"�X�v�u�e�U�K�K�K����"�Q�$���b�"�X�v�u�e�U�K�K�K�K�Kr8c���|r,||jkr!|j�|��||_|r.||jkr%|j�|��||_dSdSdSr1)r0rH�setStrokeColor�
_curweight�setLineWidth)r4r$rKs   r6�	_prepLinezTable._prepLine�sx���	#�U�D�N�*�*��I�$�$�U�+�+�+�"�D�N��	%�f�d�o�-�-��I�"�"�6�*�*�*�$�D�O�O�O�	%�	%�-�-r8c��|\}}|\}	}
|j||	dz�}|j||
dz�}t|��dkst|��dkrdS|�||��|d}
|d}t	|di��}|jj}|dkr|D]}t||
|||���dS|||z|fd�}|D]}t||
|||���dS)Nrrrrwr�c�*�t||||||��Sr1�r��r�r�r�r�r�r�r�s       r6�<lambda>z#Table._drawHLines.<locals>.<lambda>����U_�`b�ce�fh�iq�rt�uz�U{�U{�r8)rtr�rqrHr>rHr*r�)r4r�r9r$rKr�rr�rrrr��rpr�r�r�r��lfs                  r6r@zTable._drawHLines�s$�����2����2�� ��B�q�D��)��
�
��2�a�4��
(���s�8�8�Q�;�;�#�b�'�'�!�)�)�V�V����v�u�%�%�%��!�f���"�g���$�z�"�-�-���9�>���A�:�:��
7�
7���x��c�1�g�6�6�6�6�
7�
7�.6�&��,�e�{�{�{�B��
1�
1���r�3��Q��0�0�0�0�
1�
1r8c�b�|\}}|\}	}
|�||dzf|	|
dzf||||��dSrn)r@rBs           r6�_drawHLinesBzTable._drawHLinesB�sH�����2����2����"�b��d��b�"�Q�$�Z����u�M�M�M�M�Mr8c���|\}}|\}	}
|j||
dz�}|j||	dz�}t|��dkst|��dkrdS|�||��|d}
|d}t	|di��}|jjfd�}|dkr|D]}t|||
||���dS|||z|fd�}|D]}t|||
||���dS)Nrrrrwr�c��|||||��Sr1rQ)r�r�r�r��_lines     r6rMz#Table._drawVLines.<locals>.<lambda>�s����b��B�r�@R�@R�r8c�*�t||||||��Sr1rKrLs       r6rMz#Table._drawVLines.<locals>.<lambda>rNr8)r�rtrqrHr>rHr*r�)r4r�r9r$rKr�rr�rrr�erp�cp�srpr�r�rrrPs                  r6rAzTable._drawVLines�s-�����2����2�� ��B�q�D��)��� ��B�q�D��)���s�8�8�Q�;�;�#�b�'�'�!�)�)�V�V����v�u�%�%�%��!�f���"�g���$�z�"�-�-��04�	��R�R�R���A�:�:��
7�
7���x��c�1�g�6�6�6�6�
7�
7�.6�&��,�e�{�{�{�B��
1�
1���r�3��Q��0�0�0�0�
1�
1r8c�b�|\}}|\}	}
|�|dz|f|	dz|
f||||��dSrn)rArBs           r6�_drawVLinesAzTable._drawVLinesAsH�����2����2����"�Q�$���b��d�B�Z����u�M�M�M�M�Mr8c�X�|�||��||_|j|jfSr1)r�rvrur�)r4rvr�s   r6�wrapz
Table.wrap
s,���
�
�:�{�+�+�+�$�����T�\�*�*r8c��dS)z�
        This method will be called when the Table is split.
        Special purpose tables can override to do special stuff.
        NrQ)r4�T�byRows   r6�onSplitz
Table.onSplits	��
	
�r8Fc	�>�|D]�}|dd�\\}}\}}	|dvr&|s�|�|��|dkr�8|dz
x}}	|dkr||z
}||kr�Q|	|kr|dz
}	|�|df||f||	ffzt|dd���z����dS)Nrr+rrr�r�rp)
r4r�r]�nr0�	_srflModer,r�rrrs
          r6�_cr_0zTable._cr_0s����
	H�
	H�A� ��1��v��G�R��W�b���/�/�/� �*�(�� � ��#�#�#��|�#�#�X��A�#�
��R��!�t�t�R�3�Y�R��1�u�u�h��1�u�u�1�Q�3�b����a��d�W�r�2�h��R��%9�9�%��!�"�"��,�,�F�G�G�G�G�
	H�
	Hr8c��t|��}t|��}|D�]u}|dd�\\}	}
\}}|
dvr#|s�|�|��|
dkr�9|x}
}|
dkr|
|z
}
|dkr||z
}tt|
|dz����|z}
|
r�t	|
��}
|�|df|	|�t
|
����f||�t|
����ffzt|dd���z��||kr��t|
|z
d��|z}
t||z
d��|z}|�|df|	|
f||ffzt|dd���z����w|j	}
|
ra|
\}
}|
dkr|
|z
}
|dkr||z
}||kr	d|_	dSt|
|z
d��|z}
t||z
d��|z}|
|f|_	dSdS�Nrr+rrr)
rq�setr�r�rZrsr�r}rpr)r4r��nRowsrr]re�nrr�rrSr,r�rrr�cSs              r6�_cr_1_1z
Table._cr_1_1&sX���*�o�o���*�o�o���	H�	H�A� ��1��v��G�R��W�b���/�/�/� �*�(�� � ��#�#�#��{�?�?�H����R��!�t�t�R�5�[�R��!�t�t�R�5�[�R��U�2�b��d�^�^�$�$�s�*�B��
z��"�X�X��� � �!�A�$��2�z�/?�/?��B���/H�/H�*I�B�PZ�P`�P`�ad�eg�ah�ah�Pi�Pi�Kj�)k�!k�lq�rs�tu�tv�tv�rw�lx�lx�!x�y�y�y��!�t�t�X��R��T�!���S��B��R��T�!���S��B����a��d�W�r�2�h��R��%9�9�%��!�"�"��,�,�F�G�G�G�G�
�
 ��
�		,��F�B���!�t�t�R�5�[�R��!�t�t�R�5�[�R��!�t�t�&*��#�#�#���A��a�[�[��_����A��a�[�[��_��&(��e��#�#�#�		,�		,r8c	�`�|D]�}|dd�\\}}\}}|dvr#|s�|�|��|dkr�8|x}}|dkr||kr�I|dkr||krd}||kr||z}||kr||z}|�|df||f||ffzt|dd���z����dSrhrc)	r4r�r]rer,r�rrrs	         r6�_cr_1_0z
Table._cr_1_0Gs���	H�	H�A� ��1��v��G�R��W�b���/�/�/� �*�(�� � ��#�#�#��{�?�?�H����R��1�u�u��A���x��1�u�u��A���!�r��1�u�u�b�A�g�b��1�u�u�b�A�g�b����a��d�W�r�2�h��R��%9�9�%��!�"�"��,�,�F�G�G�G�G�	H�	Hr8c�j�||jz
}||j|zz
}t|ttf���rOg}g}	d}
|�|||��d}|jdkr	||z
dz}nd}|D]�}
|
r/|
j|kr |	�|
��||
jz}�/gcS||
jz|kr |�|
��||
jz
}�a|
�|||z
��}|r7|�|d��|	�|d��n@|s|jdkr/|
j|kr |	�|
��||
jz}ngcSgcSd}
��t|��t|	��fSt|t���r|�d��}d	|j
z}|jp|t|��z}|jdkr
||kr|d
fS|jdkr
||krd
|fS|jdkr||krd
|fS|d
fSt|��dkrgS|jdkr||z}n/|jdkrt|��||zz
}n||z
|zd|zz}t|��}d�|d|���d�||d���fSdS)
NFrr�rr�TOPTr(r\r�r/)r�r�)rHrorprZrirNr�rbr^ryrDrErqr�rf)r4r�r�	oldHeight�	newHeightr��height0�height1�newCellContent�postponedContentr^�
cellHeight�
usedHeight�flowable�splits�rows�
lineHeight�
contentHeight�
splitPoints                   r6�
_splitCellzTable._splitCellUsE���e�.�.���u�/�)�;�<���e�e�T�]�+�+�O	P��N�!���E��+�+�E�5�%�@�@��C�J��|�x�'�'�'�*�4��9�
�
��
�!�#
!�#
!���"!���'�1�1�(�/�/��9�9�9��8�?�2��� "�	�	�	��(�/�1�W�<�<�"�)�)�(�3�3�3��(�/�1�J�J�&�^�^�E�7�:�3E�F�F�F��&�&�-�-�f�Q�i�8�8�8�(�/�/��q�	�:�:�:�:�*�
&�U�\�U�-B�-B�'��'�9�9� 0� 7� 7�� A� A� A� '�8�?� :���(*�	�	�	�$&�I�I�I� �E�E��.�)�)�5�1A�+B�+B�C�C�
��s�
#�
#�	P��;�;�t�$�$�D��u�~�-�J�"�]�8�j�C��I�I�E�M��|�u�$�$��'�)A�)A��r�{�"����)�)�m�w�.F�.F��E�{�"����)�)��W�$�$���;�&�!�2�;�&��T���Q����	��|�u�$�$�$�
�2�
�
����)�)� ��Y�Y�'�Z�*?�@�
�
�%��/�-�?�Q��^�T�
��Z���J��I�I�d�;�J�;�/�0�0�$�)�)�D����<M�2N�2N�O�O��xr8c
�l�|j}|j}g}|jD�]�\
}\}}\}	}
}}}
}}}}t|t��rP|�d��r;|�|||f|	|f|||
||||f
��|dkr|dz
x}}
n
|dkr|}|}
|dkr||z
}|	dkr|	|z
}	|dkr||z
}|
dkr|
|z
}
|dv�r�||kr|
|ks
|�rW||k�rP|�d||f|	|f|||
||||f
��|�d||f||
f|||
||||f
��|�d	|	|f|	|
f|||
||||f
��|�d
||
f|	|
f|||
||||f
��|dkr�|rK|�d||f|	|dz
f|||
||||f
��|�d||f|	|
f|||
||||f
�����|�d
||dz
f|	|dz
f|||
||||f
��|�d||f|	|f|||
||||f
��|�d||f|	|
f|||
||||f
����|�|||f|	|
f|||
||||f
����5|dkr||krT|
|krN|sL|�d
||dz
f|	|dz
f|||
||||f
��|�d||f|	|f|||
||||f
��|�|||f|	|
f|||
||||f
�����|d
krW||kr,|
|dz
kr#|�d||f|	|f|||
||||f
��|�|||f|	|
f|||
||||f
����|dkrZ||kr/|
|kr)|�d
||dz
f|	|dz
f|||
||||f
��|�|||f|	|
f|||
||||f
����w|�|||f|	|
f|||
||||f
�����|S)
Nr^rrrr)�BOX�OUTLINE�GRID�	LINEABOVE�
LINEBEFORE�	LINEAFTER�	LINEBELOWr��	INNERGRID)r�r�r
rorr<rb)r4r��doInRowSplitrr"�Arr�rrrr$rKrr!rfr�rs                  r6�_splitLineCmdszTable._splitLineCmds�sb����������RV�R`�-	^�-	^�N�B���B��"�R�&�%��d�D�%���"�X�&�&�
�2�=�=��+A�+A�
����"�b��W�r�"�g�v�u�c�4��u�V[�\�]�]�]��{�?�?���c�M�B�����%�%��B��B��A�v�v�r�U�{�r��A�v�v�r�U�{�r��A�v�v�r�U�{�r��A�v�v�r�U�{�r��-�-�-��q�D�D�R��U�U��U��Q����H�H�k�2�b�'�B�r�7�F�E�3�PT�VZ�\a�ch�i�j�j�j��H�H�l�B�r�7�R��G�V�U�C�QU�W[�]b�di�j�k�k�k��H�H�k�2�b�'�B�r�7�F�E�3�PT�VZ�\a�ch�i�j�j�j��H�H�k�2�b�'�B�r�7�F�E�3�PT�VZ�\a�ch�i�j�j�j��6�z�z�'�s��H�H�k�2�b�'�B�q��s�8�V�U�TW�Y]�_c�ej�lq�%r�s�s�s��H�H�k�2�a�&�2�b�'�6�5�RU�W[�]a�ch�jo�%p�q�q�q�q��H�H�k�2�a��c�(�R��!��H�f�e�UX�Z^�`d�fk�mr�%s�t�t�t��H�H�k�2�a�&�2�a�&�&�%�QT�VZ�\`�bg�in�%o�p�p�p��H�H�k�2�b�'�B�r�7�F�E�SV�X\�^b�di�kp�%q�r�r�r���H�H�b�"�R��2�b�'�6�5�#�t�T�SX�Z_�`�a�a�a�a��{�"�"��a�4�4�B��E�E�,�E��H�H�k�2�a��c�(�R��!��H�f�e�S�RV�X\�^c�ej�k�l�l�l��H�H�k�2�a�&�2�a�&�&�%��d�TX�Z_�af�g�h�h�h����"�b��W�r�"�g�v�u�c�4��u�V[�\�]�]�]�]��{�"�"��a�4�4�B��1��I�I��H�H�k�2�a�&�2�a�&�&�%��d�TX�Z_�af�g�h�h�h����"�b��W�r�"�g�v�u�c�4��u�V[�\�]�]�]�]��{�"�"��q�5�5�R��U�U��H�H�k�2�a��c�(�R��!��H�f�e�S�RV�X\�^c�ej�k�l�l�l����"�b��W�r�"�g�v�u�c�4��u�V[�\�]�]�]�]����"�b��W�r�"�g�v�u�c�4��u�V[�\�]�]�]�]��r8c�~�g}|D]�}|dd�\}\}}\}	}
|dvs|
dvr|�|���4|
dkr|
|z
}
|dkr||z
}|
|kr|
dz
}
n|
|kr||ks||kr|dkr|
dz
}
||ks||kr|dkr|dz
}|�|d||f|	|
ff|dd�z����|S)a2Stretches 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

        rr+)rrrr�r�Nr4)r4r�r]�oldrowcount�	stretchedr,rcr�rrrs           r6�_stretchCommandszTable._stretchCommands�s*��2�	��	?�	?�A�$%�a��c�F�!�C��"�R�'�2�b��0�0�0�B�:U�4U�4U�� � ��#�#�#���A�v�v��k�!���A�v�v��k�!���A�v�v��a������'�'���6�6�b�A�g�g�#��*<�*<��!�G�B��A�v�v�"��'�'�c�[�&8�&8��a������a��d�R��G�b��W�5��!�"�"��=�>�>�>�>��r8c��%�]�^�_�|�||���}|j}t|t��r|nt	|��dz}|r||ks|s||krgSt|j��}||kr|gS|j}|r]|\}}|dkr||z
}|dkr||z
}||kr4|�|t|j||���z
|���S||krgS|j
}	|s|�]|j�^�n�d�|jD���^|jr||j|krgSt|jd|���}
|j|}|j
|}|j}
|j|}d}d}d}tt!|||
����D�]\}\}}}|jr|j�||fd����/t|t(t*f��r5|�|||��\}}||j|jzz
}||kr|}��t|t2��ry|�d��}d|jz}|t|��z|jz|jz}t	|||jz��}t	|||jz��}||kr|}��||z|ks
|||
z
k�r�|jsgSt9��}t;|j��D]�}||f}||jvru|j�||fd���X|j� ��D]>\}}|��|\}}}} ||kr)||kr#||kr|| kr|�!|��n�?��|sgSg}!|jD]h\}"\}#}$\}%}&|#dkr
|#|jz
}#|%dkr
|%|jz
}%|$dkr
|$|j"z
}$|&dkr
|&|j"z
}&|!�#|"|#|$f|%|&ff���id�|j
D��}'|j$}(|D�]\}|j|\})}*}+},|j%|}-|-d	}.t|j|*|���}/|'|*|)}0|�&|j|*|)|0|.|/|��}1|1sgcS|1d�^|*|)<|1d�^||)<g}2|!D]�\}"}3}4|)|*f|3kr_|+|,f|4krW|dz
|*ks|)|+kr|2�#|"|)|*f|+|dz
ff��||,ks|)|+kr|2�#|"|)|f|+|,ff���m|2�#|"|3|4f����|2}!g}5|(D]v\}"}3}4}6|3|)|*fkrN|5�#|"|3|4d|dz
f|6f��|5�#|"|3d|f|4d|f|6f���]|5�#|"|3|4|6f���w|5}(|0�'��}7|0j(d
kr�|1dr|1drd|0_(d|7_(nd|�|8dp|8d||0��d}9||9z
d
z}:|8dr|0xj|:z
c_n|8dr|7xj|:z
c_|7|'||)<��^|�)�^|j|j|j|j
|j*|j+d|'|j,t[|dd��|j.t[|dd����
�
�]|(�]_$|!�]_|j/�]_/|j0�]_0|j1�]_1|j2�]_2�]�3���]�4���]�5��g};|j6D�]}<|<\
}=\}#}$\}%}&}>}6}?}@}A}B}C|&dkr
|&�]j"z
}&|%dkr
|%�]jz
}%|=dks&|=dkr|$|ks|&|ks|=dk�r|$|ks|&|k�r|=dvrr|;�#d|#|$f|%|dz
f|>|6|?|@|A|B|Cf
��|;�#d|#|f|%|&f|>|6|?|@|A|B|Cf
��|;�#d|#|dz
f|%|dz
f|>|6|?|@|A|B|Cf
��|=dvr�|;�#d|#|$f|%|$f|>|6|?|@|A|B|Cf
��|;�#d|#|&f|%|&f|>|6|?|@|A|B|Cf
��|;�#d|#|$f|#|&f|>|6|?|@|A|B|Cf
��|;�#d|%|$f|%|&f|>|6|?|@|A|B|Cf
����j|;�#|<�����|D�]t}g}D|;D�]i}<|<\
}=\}#}$\}%}&}>}6}?}@}A}B}C|j|\})}*}+},|=dkr|&|*kr|$|,ks|=dk�r|&|*k�r|$|,k�r|#|+kr�|%|)kr�|=dkr|*}E|,dz}Fn|*dz
}E|,}F|$|Ekr#|D�#|=|#|$f|%|Ef|>|6|?|@|A|B|Cf
��|)|#krB|D�#|=|#t	|E|$��f|)dz
to|&|F��f|>|6|?|@|A|B|Cf
��|+|%krB|D�#|=|+dzt	|E|$��f|%to|&|F��f|>|6|?|@|A|B|Cf
��|&|Fkr#|D�#|=|#|Ff|%|&f|>|6|?|@|A|B|Cf
����T|D�#|<����k|D};��v|;�]_6�]�|d���Sto||
z
||z
��}G|Gdz|j+krgS|j8|Gz
}H|H|j+krgSg}Id}Jg}Kd}Lg}Mt!|||
��D�]�\}}}|�&||||G|��}8|8sgcS|�'��}7|j(d
kr�|8dr|8drd|_(d|7_(nd|�|8dp|8d||��d}9||9z
d
z}:|8dr|xj|:z
c_n|8dr|7xj|:z
c_|I�#|8d��|K�#|8d��|�|8d||��d|jz|jz}Nt	|J|N��}J|�|8d||��d|jz|jz}Ot	|L|O��}L|M�#|7�����to|G|J��}Pt	|L|j||Pz
��}Q|jdd�}R|R�9|dz|Q��|P|R|<|j
dd�}'|'�9|dz|M���^d|�|Igz|Kgz�^|dzd�z�^|�)�^|j|R|j|j
|j*|j+d|'|j,t[|dd��|j.t[|dd����
�
�]|�:||j6|���]_6|�:||j$|���]_$|�:||j|���]_|�:||j/|���]_/|�:||j0|���]_0|dz}|j,}S|Srtw|S��}S�]j.}T|Tr�]j�_n�]j<�_t[|dd��}U|�)�^d|��]j�_d|�||	|j*|j+d�]j
d|�|St[|dd��|T|Ur
|Udd
�nd��
�
}I�]j"}V�]j}W�]�=||���}X|I�>||X|V��|I�>|�]j$|Vd���|I�>|�]j|V��|I�>|�]j/|V���]j0D]�}Y|I�?|Y��|Ydddkr�*|Ydd	�\\}#}$\}%}&|I�?|Ydf|#|dz
f|%|dz
ffzt)|Yd	d���z����|Srtw|S��}S|�r�t|t��r@�^d|�}Z�_d|�}[�]j
d|�}\t+t;|����}nFt+t�|����}�^fd�|D��}Z�_fd�|D��}[�]fd �|D��}\|�)|Z�^|d�z�]j|[�_|d�zt|��|	|j*|j+d|\�]j
|d�z|St[|d!d��|T|U�"�
�
}K|K�A||V||X��|K�A||V|�]j$d���|K�A||V|�]j��|K�A||V|�]j/��n�|�)�^|d��]j�_|d�||	|j*|j+d�]j
|d�|St[|d!d��|T|Urddg|Ud
d�znd�"�
�
}K|K�B||X��|K�B|�]j$d���|K�B|�]j��|K�B|�]j/���]j0D]z}Y|K�?|Y��|Yddd#kr�*|Ydd	�\\}#}$\}%}&|K�?|Ydf|#df|%dffzt)|Yd	d���z���{�]jCx|I_C|K_C�]jDx|I_D|K_D|�E|I��|�E|K��|I|KgS)$N)�ignoreSpansrr�r�c�"�g|]}|dd���
Sr1rQ�r�r:s  r6r�z$Table._splitRows.<locals>.<listcomp>9s ��3�3�3�Q�A�a�a�a�D�3�3�3r8r(r\c�"�g|]}|dd���
Sr1rQr�s  r6r�z$Table._splitRows.<locals>.<listcomp>�s �� @� @� @�!��1�1�1�� @� @� @r8r+r�r/rrrrU�_cornerRadii)rrrrrrrrr�rUr�rr�r�r�)r�r�r�)r�r�r�r�r�FT)rerc� ��g|]
}�|��SrQrQ)r�r�rs  �r6r�z$Table._splitRows.<locals>.<listcomp>�s���5�5�5�Q��a��5�5�5r8c� ��g|]
}�|��SrQrQ)r�r��splitHs  �r6r�z$Table._splitRows.<locals>.<listcomp>�s���7�7�7�q����7�7�7r8c�*��g|]}�j|��SrQ)r)r�r�r_s  �r6r�z$Table._splitRows.<locals>.<listcomp>�s ���<�<�<�A�q�}�Q�'�<�<�<r8rV)rrrrrrrrr�rVr�rr)F�!_getFirstPossibleSplitRowPositionrror�r}rqrr�
_splitRowsr�rr�rrrrr�rrrr�rprZrirHrIryr^rDrir�r�r�r�rdr�rbr	r�r�r3rNr�rrr�r>r�rr
rtr�r�r�r�r
r�r��insertr�rrr�rfr�r�rnrpr�r�ra)`r4r�r�r�r�	maxrepeatr��lo�hir�usedHeights�
cellvaluesr�
cellWidths�curRowHeight�minSplit�maxSplit�	maxHeight�columnr�rr�r�r�r}r~�
splitCellsr3r~�	start_col�	start_row�end_col�end_row�spanCmdsrcr�rrr�
newCellStyles�
bkgrndcmds�span_sc�span_sr�span_ec�span_er�spanRectrsrt�oldStyle�res�newSpanCmdsr�r9�
newbkgrndcmdsrK�newStyler�r��margin�newlinecmds�linecmdrr$rr!rfr�r�
moddedcmds�startrow�endrowr�r�r��R0Heightr��R1Height�R1Styles�h0�h1rz�newRowHeight�
newRowHeightsr��ltorrr"r
r,�iRows�iRowH�iCSr_rr�s`                                                                                             @@@r6r�zTable._splitRowss�������
0�
0���
0�
V�
V���_�
�",�Z��"<�"<�S�J�J�#�j�/�/�RS�BS�	��	�A�i�K�K�|�K��9����I��$�"�#�#���c�6�6�4�&�=�
�
 ��
�	��F�B���!�t�t�R�3�Y�R��!�t�t�R�3�Y�R���t�t����{�S��9I�"�Q�$�9O�5P�5P�'P�_k��l�l�l��2����	��_�
��U	��A��#�D�D�3�3�$�"2�3�3�3�D��"�
�{�T�5H��5K�'K�'K��	��d�.�r��r�2�3�3�K��)�!�,�J��)�!�,�J���J��+�A�.�L��H��H��I�1:�3�z�:�Wa�;b�;b�1c�1c�
+�
+�-��-���u��>��d�&6�&:�&:�F�A�;��&M�&M�&U���e�e�T�]�3�3�+� $� 2� 2�5�%�� G� G�I�A�v��e�.��1D�D�D�F��	�)�)�$*�	����s�+�+�
+� �;�;�t�,�,�D�!$�u�~�!5�J�'�#�d�)�)�3�e�6F�F��I\�\�F� #�8�Z�%�:J�-J�K�K�H�"�8�Z�%�:M�-M�N�N�H��	�)�)�$*�	���H�$�|�3�3��k�K�7�8�8��~���I� �U�U�
�#�D�K�0�0�&�&�F�"�A�;�D��� 2�2�2��(�,�,�f�a�[�$�?�?�G�+/�*:�*@�*@�*B�*B�	&�	&�J�D�$�#�|� (�EI�B�I�y�'�7� &�)� 3� 3� &�'� 1� 1� !�I�
�
� !�W��� *���t� 4� 4� 4� %����!���I���/3�~�
?�
?�+�C��"�b�8�B���A�v�v��d�k�)���A�v�v��d�k�)���A�v�v��d�k�)���A�v�v��d�k�)���O�O�S�2�r�(�R��H�$=�>�>�>�>� @� @�t�/?� @� @� @�
�!�-�
�
'�@9�@9�D�9=�9I�$�9O�6�G�W�g�w�#��t�4�H� (���I� #�D�$4�W�Q�Y�$?� @� @�I� -�W�5�g�>�H��/�/�$�*:�7�*C�G�*L�*2�I�y�%�Q�Q�C��"�!�	�	�	�.1��V�D��M�'�*�'*�1�v�D��G�G�$�
#%�K�+3�	B�	B���U�C�$�g�.�%�7�7�$�g�.�#�5�5� ��s�W�}�}��7�0B�0B� +� 2� 2�C�'�7�9K�g�WX�YZ�WZ�^�3\� ]� ]� ]� �7�{�{�g��.@�.@� +� 2� 2�C�'�1���QX�GY�3Z� [� [� [��'�.�.��U�C�/@�A�A�A�A�*�H�$&�M�2<�K�K�.��U�C�� �W�g�$6�6�6�*�0�0�#�u�s�1�v�q��s�m�U�1S�T�T�T�)�0�0�#��a��!�}�s�1�v�q�k�SX�1Y�Z�Z�Z�Z�)�0�0�#�u�c�5�1I�J�J�J�J�!.�J� (�}�}���H���(�2�2��q�6�A�c�!�f�A�.6�H�O�.3�H�O�O�!%� 2� 2�1�Q�4�<�1�Q�4��� Q� Q�RS� T�A�&2�Q�&6�!�%;�F� ��t�A� (� 3� 3�v� =� 3� 3� 3�!"�1��A� (� 6� 6�&� @� 6� 6�08�M�!�$�W�-�-��N�N�D�D�O�#�/�D�O�#��4�?�#��q�,�D�J� '��]�4� @� @�&*�&=� '��^�D� A� A�#�C�C��!+��
�&���!%�!2���"�n���"&�"4���"&�"4����$�$�&�&�&��!�!�#�#�#�� � �"�"�"�!��#�~�!�!�G�Y`�V�B���B��"�R�&�%��d�D�%�QV��A�v�v��a�h����A�v�v��a�h����u���"��,�,�B�!�G�G�r�A�v�v��{�*�*��Q���"�q�&�&��!6�6�6�'�.�.��R��G�b��1��X�v�W\�^a�cg�im�ot�v{�/|�}�}�}�'�.�.��R��F�R��G�V�UZ�\_�ae�gk�mr�ty�/z�{�{�{�'�.�.��R��!��H�r�!�A�#�h�PV�X]�_b�dh�jn�pu�w|�/}�~�~�~���0�0�(�.�.��b��W�r�"�g�v�W\�^a�cg�im�ot�v{�/|�}�}�}�'�.�.��b��W�r�"�g�v�W\�^a�cg�im�ot�v{�/|�}�}�}�'�.�.��r�"�g��2�w�PV�X]�_b�dh�jn�pu�w|�/}�~�~�~�'�.�.��b��W�r�"�g�v�W\�^a�cg�im�ot�v{�/|�}�}�}��#�*�*�7�3�3�3� �'�0-�0-�D�!#�J�#.�+7�+7��]d�Z��G�R��W�b��f�e�S�$��e�UZ�=A�=M�d�=S�:���'�7� �K�/�/�B��L�L�R�7�]�]��+�-�-�"��-�-�B��L�L��'�M�M�b�G�m�m� "�[�0�0�+2��)0�1����+2�Q�;��)0��!�X�~�~� *� 1� 1�%'�"�b��B��>�6�5�RU�W[�]a�ch�jo�$p�!"�!"�!"�
 '��|�|�!+� 1� 1�%'�"�c�(�B�.?�.?�)@�7�1�9�c�RT�V\�o�o�B^�`f�hm�or�tx�z~�AF�HM�%N�!"�!"�!"� '��|�|�!+� 1� 1�%'�'�!�)�S��2�5F�5F�)G�"�c�RT�V\�o�o�I^�`f�hm�or�tx�z~�AF�HM�%N�!"�!"�!"� "�V�|�|� *� 1� 1�%'�"�f���B�x���PS�UY�[_�af�hm�$n�!"�!"�!"��'�-�-�g�6�6�6�6�",�K�K�)����|�|�K�U�|�C�C�C��[�;�6�	�H�8L�M�M�J��!�|�d�o�-�-��	���z�1�I��4�?�*�*��	��B��H��B��H��H�),�Z��Z�)P�)P�
*�
*�%���u��O�O�E�5�,�
�E�R�R�����I�I�I� �:�:�<�<���<�8�+�+���t�=��!��=�'/���*/����!�.�.�q��t�|�q��t�U�E�J�J�1�M��".��"2�a�!7���Q�4�=�!�,�,��6�,�,�,��q�T�=�$�2�2�f�<�2�2��	�	�!�A�$�����	�	�!�A�$�����'�'��!��e�U�;�;�A�>��AQ�Q�TY�Tg�g���x��,�,���'�'��!��e�U�;�;�A�>��AQ�Q�TY�Tg�g���x��,�,������)�)�)�)��Z��2�2�J��x��)9�!�)<�z�)I�J�J�L� �,�Q�Q�Q�/�M�� � ��Q���5�5�5�)�M�!�� �,�Q�Q�Q�/�M�� � ��Q���1�1�1�����8�r�d�?�b�T�)�D��1����J�6�D�������(�T�_��?�t���?�1�(��
�#�D��t�<�<�"&�"9�#�D���=�=��?�?�A��/�/��4�>�3�G�G�A�K� �1�1�!�T�5E�s�K�K�A�M��/�/��4�>�3�G�G�A�K�!�2�2�1�d�6G��M�M�A�N��/�/��4�>�3�G�G�A�K��A��A��
���)�(�5�/�/�%��"���	��]�F�F��W�F��d�>�$�7�7��
�^�^�T�"�1�"�X���&�QS�RS�QS�*�%�*����?�1���WY�XY�WY�IZ��#�D��t�<�<�"%�/:�D�K����O�O��
�F�F���������$�$�Q�\�$�B�B�	�
����9�U�#�#�#�
����1�=����6�6�6�
����1�;�u�%�%�%�
����1�>�%�(�(�(���	H�	H�A��N�N�1������t�A�w��#�#�X� ��1��v��G�R��W�b���N�N�A�a�D�7�R��1��I��A�a�C�y�#9�9�%��!�"�"��,�,�F�G�G�G�G��)�(�5�/�/�%��*	)��*�S�)�)�

=��[�j�[�)���{�
�{�+���m�K�Z�K�0��!�%�
�"3�"3�4�4�
�
�"�&��"4�"4�5�5�
�5�5�5�5�*�5�5�5��7�7�7�7�J�7�7�7��<�<�<�<��<�<�<������d�1�2�2�h����$�V�A�B�B�Z�/�"�:���:�#��4�?�#$�"�1�=����#4�4��&�t�L��>�>�&)�"-� �
�
�B�
�J�J�q��z�)�4�4�4��J�J�q��z�!�-�$�J�G�G�G��J�J�q��z�!�+�6�6�6��J�J�q��z�!�.�9�9�9�9�����Q�R�R��A�L�V�TU�TV�TV�Z�)�j�#��4�?�#$���q�r�r�1B��&�t�L��>�>�&)�?J�"T�A�a�5�;�q�r�r�?�#:�#:�PT� ���B�
�J�J�q��#�#�#��J�J�q����J�6�6�6��J�J�q���%�%�%��J�J�q���(�(�(���	D�	D�A��N�N�1������t�A�w��$�$�h� ��1��v��G�R��W�b���N�N�A�a�D�7�R��G�b�!�W�#5�5�e�A�a�b�b�E�l�l�B�C�C�C�C� !��(��	�B�I� !��(��	�B�I����R�������R�����2�w�r8c���|D]^}||}|dkrN|d|d}}||kr8t||��}t||��}|dz}		|	|krnd||	<|	dz
}	��_dS)Nrr+)r�r})
�
impossible�cells�ranges�xyr�r��y2�ymin�ymaxr�s
          r6�_getRowImpossiblezTable._getRowImpossible�s����	�	�B��R�j�A��$�w�w���d�1�Q�4�2���r�6�6��R����D��R����D��1�f�A���T�6�6�5�&*�
�1�
��1�����	�	r8c��i}|jr#|s!|�||j|j��|jr!|�||j|j��d}d}d}|jD]}||z|krn||vr|}||z}|dz}�|S)Nrr)rr�r�rrrr�r�r)r4r�r�r�r�r��split_atrAs        r6r�z'Table._getFirstPossibleSplitRowPosition�s����
��>�	S�+�	S��"�"�:�d�.@��AQ�R�R�R���	Y��"�"�:�d�.C�D�DW�X�X�X�
��
�����"�	�	�B���t�K������
�"�"�����d�A���c�A�A��r8c��|�||��|js|jr]tjs
|j|krgS|�||j���}|r|S|jr|�||j���SgS)Nr�)r�rrr	r�rur�)r4rvr�r?s    r6r^zTable.split	s����
�
�:�{�+�+�+��?�
	R�d�o�
	R��3�Y���J�8N�8N�WY�PY��_�_�[�4�?�?R�_�S�S�F��
��
���
R����{����Q�Q�Q��	r8c
����d�_t�dd����rt���|krdS�j}�j}��fd�tdd|dz
f|dz
df|dz
|dz
ff��D��}�j}�j}|d}||}||}	|d}
|	|z
}|
|z
}t|||||	|
|g���_�j	�
��}
|
�|||||���j	}|�d��|�
|
d���|�d��dS)	Nr�c�v��g|]5\}\}}t�j|�j|�|����6SrQ)r�rr)r�r�r�r�rr4s    ��r6r�z1Table._makeRoundedCornersClip.<locals>.<listcomp>#sP��������%�1�Q��$�"�1�%�d�o�a�&8��Q��H�H���r8r[rrz%begin table rect clip��strokez%end table rect clip)r(r>r}r�r�rr�rt�RoundingRectDefrH�	beginPath�	roundRect�
addLiteral�clipPath)r4r�rr"�arrOrXr�r�r�r�r�r�r�r,rs`              @r6�_makeRoundedCornersClipzTable._makeRoundedCornersClips����� $����d�>�$�7�7���<�c�+�.�.��4�4�f�f������������$���u�Q�w�K��1�W�Q�K��1�W�e�A�g�&�	&��������
��
�
��
��U��
��Y��
��Y��
��U����G����G�� /��B��1�b�"�b�"� M� M����I���!�!��	���B��A�q�"�%�%�%��I��	���-�.�.�.�	�
�
�1�A�
����	���+�,�,�,�,�,r8c
�b�|j\}}}}}}}}|sdS|j}	|	���dx}
x}x}x|_|_|	j}
|j}|D�]E\	}}}}}}}}}|dkr|
|kr|	�|��|}
|�|gkr|�|	���d}n||kr|	�|��|}|�||kr|	�	|��|}|�
||��||kr�||ks||kr|
||||����||krd}|d}|d}nd}|d}|d}|||zkr|||z
kr|
||||����|||zkrtd|||f|dd�	��nd}|||z
krtd
|||f|dd�	��nd}n�||ks||kr|
||||����r||krd}|d}|d}nd
}|d}|d}|||zkr|||z
kr|
||||�����|||zkrt|d||f|dd�	��nd}|||z
krt|d||f|dd�	��nd}|	���}|rs|j
|d�|�|dd|dd|dd|dd|dd|dd��n|�
||��|s|�||��nr|j|d�|�|dd|dd|dd|dd|dd|dd��|	�|dd�����G|	���dS)
Nr�rr+r�rrr�r�)r�r�r�r��r��fill)r(rHr'rFr0r*r�r+r,r-rHr�r��moveTo�curveTo�lineTo�drawPathr/)r4r�r�r�r�r�r�r�r)rHr1r2r3r*rrrrrr$rKrr!rfr�r�r�rr�r�r�s                               r6�_restoreRoundingObscuredLinesz#Table._restoreRoundingObscuredLines;sx��'+�'<�$��B��1�b�"�b�"���6�6��y��������BF�F��F�u�F�u�F�t�����y���'��8:�B	/�B	/�4�R��2�b���c�$�t��D�y�y�T�3�Y�Y�����$�$�$����|�t�r�z�z��$��L�L�N�N�N� �E���������T�"�"�"�����E�4�K�K�� � ��&�&�&����N�N�6�5�)�)�)��2�v�v��b�5�5�B�r�E�E��D��B�r�"�%�%�%���r�6�6�#�D��A��B��A��B�B� �D��A��B��A��B��r�"�u�9�9��R��U����D��B�r�"�%�%�%��^`�ac�df�af�^f�^f�\�&��r�"�g�r��\�Z�Z�Z�Z�lp��_a�bd�eg�bg�_g�_g�\�'�$��2�w���l�[�[�[�[�mq����b�5�5�B�r�E�E��D��B�r�"�%�%�%���r�6�6�!�D��A��B��A��B�B�"�D��A��B��A��B��r�"�u�9�9��R��U����D��B�r�"�%�%�%��`b�ce�fh�ch�`h�`h�\�$�x��B���!�|�\�\�\�\�nr��]_�`b�ce�`e�]e�]e�\�$�u�b��W�b�q�L�Y�Y�Y�Y�ko����� � �A��
 ����"�Q�%� � ��	�	�"�Q�%��(�2�a�5��8�B�q�E�!�H�R��U�1�X�r�!�u�Q�x��1��a��Q�Q�Q�Q�����B�����
R�����B��������"�Q�%� � ��	�	�"�Q�%��(�2�a�5��8�B�q�E�!�H�R��U�1�X�r�!�u�Q�x��1��a��Q�Q�Q��M�M�!�A�A�M�.�.�.�.��������r8c	�\�|j}|���|���dx|_x|_|_|���|jst|j	|j
|jdd�|j��D]O\}}}}t|||j
dd�|j��D]#\}}}}	|�||||f|	|f���$�Pn�t!|j��D]s}
t!|j��D]\}|j||
f}|�I|\}
}}}|j	|
|}|j
|
|}|�|||
|f||f���]�t|���|���|jr|���dSdS)Nrrw)rHr'r�rFr0�
_curcellstyle�_drawBkgrndrr�r�rr�rrtr�	_drawCellr�r�r�r�r4r/r(r�)r4r,r6�rowstyle�rowpos�	rowheight�cellval�	cellstyle�colpos�colwidthr�r��cellRectrrr�r�r�s                 r6�drawz
Table.draw�s
���I��	���
�
�
��$�$�&�&�&�@D�D���D�$�.�4�+=��������~�	T�47��8H�$�JZ�\`�\n�op�oq�oq�\r�tx�uE�5F�5F�
`�
`�0��X�v�y�<?��X�t�Oa�be�ce�be�Of�hl�hw�<x�<x�`�`�8�G�Y����N�N�7�I���7G�(�T]�I^�_�_�_�_�`�
`��t�{�+�+�
T�
T��"�4�;�/�/�T�T�E�#��u�e�|�<�H��+�08�-��A�u�f�"&�"2�5�"9�%�"@��$(�$4�U�$;�E�$B�	����w�	�A�q�6�E�6�?�S�S�S��
T�	
������	������� �	1��.�.�0�0�0�0�0�	1�	1r8c��|j}|j}|j}|j}|j}|j}|j}t|dd��}|jD�]\}	\}
}\}}
}|dvr�|
dkr|
|z}
|dkr||z}|dkr||z}|
dkr|
|z}
||
}||}|t|dz|��}|t|
dz|��}||z
||z
}}t|d��r|||||||����|	dkr�tttj|����}t|��}|
|z
dz}t!|��D]P}|||z}|||z}|r1|�|��|�||||dd���||z
}�Q��R|	dkr�tttj|����}t|��}||
z
dz}t!|��D]O}|||z}||
|z}|r0|�|��|�||||dd���||z}�P���|�r�t'|tt(f���r�|dd	v�rz||
kr(|
|kr"|r |�|
|f��}|r|\}}}}|d|dd�}}|���|���}|�||||��|�|d�
��|dkr |�||||z||d�
���n�|dkrL||dzz}|�|||||d�
��|�||||z||ddd�d�
���nU|dkrL||dzz}|�|||||d�
��|�|||||z|ddd�d�
���n|dkr |�|||||z|d�
���n�|dkr�dt|��cxkrdkr�nn~|dd�\\} }!\}"}#|| |zz} ||"|zz}"||!|zz}!||#|zz}#|d}$|d}%t|��dkr|dnd}&|�| |!|"|#|%|&|$����n<t5dt6�d|�����|dk�rdt|��cxkrdkr�nn�|d\}'}(||'|zz}'||(|zz}(|d\})}*|*dkr|}*ng|*dkr|}*n^|*dkrt||��}*nG|*dkrt9||��}*n0t5d t;|d���d!t6�d|�����|)|*z})|d}$|d}%t|��dkr|dnd}&|�|'|(|)|%|&|$���nt5dt6�d|�����|������tj|��}|r^||
kr(|
|kr"|r |�|
|f��}|r|\}}}}|�|��|�||||dd�����dS)"Nr�rrr�__call__rr�r)�VERTICAL�
HORIZONTAL�	VERTICAL2�HORIZONTAL2�LINEARGRADIENT�RADIALGRADIENTr�r�F)�extendr��@rwr�r�r�r
rr+)�	positionsrzWrong length for z arguments rr�r�r�r}zBad radius, z, for ) r�r�rHrtr�rrr>r	r�rYrZrgr
�
toColorOrNonerqr��setFillColor�rectrorpr�r'r�r��linearGradientr�rr}r��radialGradientr/)+r4rr"rHr�r�rrr�rcr�rrr�argr�r�r�r�r�r��
colorCycler��rowCountr�rK�colCount�xywh�arg0�p�xh�yh�ax0�ay0�ax1�ay1rrKr��xc�ycr��refs+                                           r6r�zTable._drawBkgrnd�s����������y���)���)���%�
��O�	��D��d�3�3�	�,0�,<�D	A�D	A�(�C��"�b�8�B��S��/�/�/���A�v�v�B��J�r��A�v�v�B��J�r��A�v�v�B��J�r��A�v�v�B��J�r��b�!�B��b�!�B��c�"�Q�$�u�o�o�.�B��c�"�Q�$�u�o�o�.�B��b�5�"�R�%�q�A��s�:�&�&�y
A���D��r�2�q�!�,�,�,�,��(�(�(�
"�#�f�&:�C�"@�"@�A�A�
��J������7�Q�;���x��� � �A�&�q��w�/�E�"�2��6�*�A��B��)�)�%�0�0�0��	�	�"�b�!�a�R��q�	�A�A�A��a��B�B�
 ��(�(�(�!�#�f�&:�C�"@�"@�A�A�
��J������7�Q�;���x�����A�&�q��w�/�E�!�"�q�&�)�A��A��)�)�%�0�0�0��	�	�"�b�!�Q�q�a�	�@�@�@��Q��B�B�
��[A�J�s�D��<�8�8�[A���F�'D�D�D��2�v�v�"�b�&�&�Y�&�(�}�}�b��W�5�5���0�+/�L�B��A�q� #�A���A�B�B��#�D��N�N�$�$�$����(�(�A��F�F�2�r�1�a�(�(�(��M�M�!�A�M�.�.�.��\�)�)��+�+�B�r�"�Q�$�r�#�U�+�K�K�K�K���.�.��!�C�%�Z���+�+�B��B��C��+�N�N�N��+�+�B��B��F�B��D�D�b�D�	�RW�+�X�X�X�X���,�,��!�C�%�Z���+�+�B��B��C��+�N�N�N��+�+�B��B��Q���D�D�b�D�	�RW�+�X�X�X�X��z�)�)��+�+�B��B��Q���E�+�R�R�R�R��/�/�/��c�#�h�h�>�>�>�>��>�>�>�>�>�58��!��W�2�J�S�#�
��c�"$�s�1�u�*�C�"$�s�1�u�*�C�"$�s�1�u�*�C�"$�s�1�u�*�C�%(��V�F� #�A��A�*-�c�(�(�A�+�+��A���4�A� �/�/��S�#�s�A�QR�[a�/�b�b�b�b�",�*�SU�SU�SU�WZ�WZ�-[�"\�"\�\��/�/�/��c�#�h�h�>�>�>�>��>�>�>�>�>�%(��V�F�B��!#�b��d��B�!#�b��d��B�%(��V�F�A�s�"�G�|�|�&'���!$�h���&'���!$�e���&)�1�Q�i�i���!$�e���&)�!�A�h�h���&0�j�Z_�`c�de�`f�Zg�Zg�Zg�Zg�hj�hj�hj�lo�lo�1p�&q�&q� q���H�A�%(��V�F� #�A��A�*-�c�(�(�A�+�+��A���4�A� �/�/��B��1��RX�/�Y�Y�Y�Y�",�*�SU�SU�SU�WZ�WZ�-[�"\�"\�\��%�%�'�'�'�'�"�0��5�5�E��A��r�6�6�b�"�f�f��f�#,�=�=�"�R��#9�#9�D�#�4�/3���B��1��)�)�%�0�0�0��	�	�"�b�!�Q�q�a�	�@�@�@��ID	A�D	Ar8c	��|\}}|\}}|j|ur�|j}	|	�|j|	jkr|j�|j��|	�0|j|	jks |j|	jks|j|	jkr+|j�|j|j|j��||_|j}
|j	}t|tttf���rft|ttf��s|f}g}g}
|�|||||
|���\}}|dkr||z|jz
}n/|dkr||jz|z}n|||jz|jz
|zdzz}|r||d���z
}t%|||
��D]�\}}}|
dkr||jz}nI|
dkr||z|jz
|z
}n2|
dvr|||jz|jz
|z
dzz}nt+d	|
z���||���z}||z}|�|j||��||���z}���n�|
dkr|jj}||jz}n{|
dvr%|jj}|||jz|jz
d
zz}nR|
dkr|jj}||z|jz
}n2|
dkr|jj}||z|jz
}nt+d	|
z���t9|���d��}t=|��}|j}|j}|dkr||jz||zz|z
}n^|dkr||z|jz
|z
}nG|d
kr"||j|z|jz
||zzdzz|z
}nt+dt9|��z���|D]}||||��||z}�t?|dd��}|r||j|j |j!��|j"r,|j�#|j"||||z||zfd���|j$r/|j�%d|j$||||z||zfd���dSdS)N)rbrcrMrrr/rrr-�RIGHT)�CENTREr�zInvalid justification %sr��DECIMALr(r�zBad valign: '%s'�onDrawr)�relativer�)�Rectr )&r�rKrHrrErCrD�setFontrLrNrorprZrrirHrIr`r�rFrGr��drawOnra�
drawString�drawCentredString�drawRightString�drawAlignedStringryr^rqr>r��labelrO�linkURLrP�linkRect)r4r�r��pos�sizer�r�r�r��cur�justrNrbrcr�r�r�r�rrr��valsr�rErDrs                         r6r�zTable._drawCell2	sM������"���)���Y�.�.��$�C��{�i�o���:�:��	�&�&�y��7�7�7��{�i�/�3�;�>�>�)�BT�X[�Xd�Bd�Bd�hq�hz�B�K�iK�iK��	�!�!�)�"4�i�6H�)�J[�\�\�\�!*�D���"���!���g�u�T�(�3�4�4�:	=��g�u�T�l�3�3�I��z�W��A��A��%�%�g�h�y�1��Y�%�W�W�D�A�q��u�}�}��Y�&��)=�=�����!�!��9�2�2�Q�6����I�i�&=�=�i�>R�R�ST�T�VY�Y�Y���8��W�Q�Z�6�6�8�8�8���w�q��+�+�

'�

'���1�a���<�<�V�I�,A�%A����7�]�]��x��	�8N�(N�QR�(R�A�A��1�1�1����)>� >�y�?U� U�VW� W�Y\�\�\�A�A�$�%?�$�%F�G�G�G��Q�%�%�'�'�'���Q��������1�Q�'�'�'��Q�_�_�&�&�&���

'��v�~�~��y�+���Y�2�2����-�-�-��y�2���H�Y�%:�:�9�;Q�Q�SV�V�V��������y�0���X�%�	�(>�>�����"�"��y�2���X�%�	�(>�>��� �!;�d�!B�C�C�C��w�<�<�%�%�d�+�+�D��D�	�	�A��'�G� �)�H��x����Y�4�4�Q�w�Y�>�x�G��������Y�&��)=�=��H�����!�!��i�5�	�A�)�BV�V�WX�Y`�W`�`�be�e�e�hp�p��� �!3�c�&�k�k�!A�B�B�B��
�
����Q��1�
�
�
��W�����W�X�d�3�3�F��
=���t�y���g�m�<�<�<��>�	s��I���i�n�v�v�v��?P�RX�[d�Rd�.e�pq��r�r�r�� �	D��I���r�9�#8���PV�Ya�Pa�ci�lu�cu�?v�BC��
D�
D�
D�
D�
D�	D�	Dr8c��t|��r?|sdn3t|��tdt|��z
d��dgzz|_dStd���)Nrrz;cornerRadii should be None or a list/tuple of numeric radii)rrZr}rqr�r�)r4rs  r6rzTable._setCornerRadii�	sk�� ��-�-�	\�,7� p���T�+�=N�=N�RU�VW�X[�\g�Xh�Xh�Vh�ij�Rk�Rk�mn�lo�Ro�=p�D�����Z�[�[�[r8)r8)NNrY)rYrYr1rl)r)Fr�):r@rArBrr7rjrr�rNrXrirlr�r]r�r�r�r�r�r�r�r�r�r�rrr�r4r&r=r;r<rHr@rRrAr[r]rarfrnrpr�r�r�r�r��staticmethodr�r^r	r�r�r�r�r�r�rrQr8r6rr�s������'+��D���q�Q�Y]�ei��4��d�Z^� �D�D�X\�%�	j,�j,�j,�j,�Zl�l�l����(&o�&o�&o�&o�P������&����09�9�9�9�=(�=(�=(�=(�~#B�#B�#B�Jb�b�b�b�H"�"�"�B
5�
5�
5�"�������S�S�S�j���,-5�-5�-5�^.8�.8�.8�`2$�2$�2$�h	4�	4�	4�R�R�R�;J�;J�;J�z,�,�,�\;�;�;�F�F�F�N�N�N�L�L�L�%�%�%�1�1�1�&N�N�N�
1�1�1�&N�N�N�
+�+�+�

�
�
�
�H�H�H�H�,�,�,�,�BH�H�H�H�X�X�X�t5�5�5�5�n1�1�1�fK�K�K�K�Z���#�l�#4�5�5������(���(,5�?�-�-�-�-�<K�K�K�Z1�1�1�6MA�MA�MA�^ND�ND�ND�`\�\�\�\�\r8rr=r;r<rRr@rAr[)r�r�r�r�r�r�r�r�c��eZdZdZdZdS)rz+Henning von Bargen's changes will be activerN)r@rArB�__doc__r�rQr8r6rr�	s������5�5����r8rc� �|dtvSr�)�LINECOMMANDS)rcs r6rr�	s���q�6�\�!�!r8c��|||}|dkrWt|��}|d|_|dkr3|d|_|dkr|d|_dS|jdz|_dSdS|dvr|d|_dS|dvr|d|_dS|dkr|d|_dS|d	kr6t	j|dt	jddd����|_dS|d
vr|d|_dS|dkr|d|_	dS|dkr|d|_
dS|d
kr|d|_dS|dkr|d|_dS|dkr|d|_
dS|dkr|d|_dS|dkr|d|_dSdS)N�FONTrrrr\)�FONTNAME�FACE)�SIZE�FONTSIZE�LEADING�	TEXTCOLOR)�ALIGN�	ALIGNMENT�VALIGN�LEFTPADDING�RIGHTPADDING�
TOPPADDING�
BOTTOMPADDING�HREF�DESTINATION)rqrCrDrEr
�toColor�ColorrKrLrNrFrGrHrIrOrP)rr�r�rr�r�r�s       r6rr�	s����Q�-��
�C�	�V�|�|���K�K���a�y����Q�3�3�!�!�9�C�L���s�s�$�Q�i�����!�l�3�.������3�
�#�	#�	#��a�y�����	�#�	#�	#��a�y�����	�y����Q�i�����	�{�	�	��N�6�!�9�f�l�1�Q�q�.A�.A�B�B��	�	�	�	�%�	%�	%��q�	��
�
�
�	�x����A�Y��
�
�
�	�}�	�	� ��)�����	�~�	�	�!�!�9�����	�|�	�	��������	��	�	�"�1�I�����	�v����!�9�����	�}�	�	� ��)�����
�	r8r�r[�rwrwg�?)r>)rrrIrr�r�r�r�)rwrr�)rrwr�)rr�__main__)�old_tables_test)rr�r�)J�__all__�__version__r3�reportlab.platypus.flowablesrr�	reportlabr	�reportlab.lib.stylesr
rr�
reportlab.libr
�reportlab.lib.utilsrrrrrrr�reportlab.lib.validatorsr�reportlab.lib.rl_accelr�reportlab.lib.abagrrT�reportlab.pdfbase.pdfmetricsrr�rrr�collectionsrrrrrrsr�r�r�r�r�r�r�r�r�rpr�r�r�rr.rrZr�r5rrr,�
GRID_STYLE�	BOX_STYLE�LABELED_GRID_STYLEr��COLORED_GRID_STYLE�green�
LIST_STYLEr@�tests.test_platypus_tablesrKrQr8r6�<module>r_s��

��
��
	��@�?�?�?�?�?�?�?�������K�K�K�K�K�K�K�K�K�K� � � � � � �j�j�j�j�j�j�j�j�j�j�j�j�j�j�j�j�j�j�:�:�:�:�:�:�)�)�)�)�)�)�0�0�0�0�0�0�4�4�4�4�4�4�G�G�G�G�G�G�G�G�3�3�3�3�3�3�"�"�"�"�"�"��Q�q�a�!�	D�	D���q�!�Q�q�
A�
A�	����������6��������0:�:�:�.
�.
�.
�`?�?�?�
�
�
�
�*1:��/�/�/�/�,���
F�
F�
F����"&�9�?�����(	�	�	�	�	��	�	�	��*�/�0G�H�H���:�0�1Y�Z�Z��I"\�I"\�I"\�I"\�I"\�H�I"\�I"\�I"\�VD#� �$�,�*�)�*�*�.�.�
�����������t�J�O�O�%�%�&�&��"�"�"�%$�%$�%$�N�Z��e�W�d�F�L�1�'�)���
�
�J��U�G�T�6�<�0�'�)�
�
�	� �Z��5�'�4���6��U�G�Q���-��5�&�!�V�\�2��5�&�!�V�\�2�'�	)���� �Z��5�'�4���6��U�G�Q��
�+��5�&�!�V�\�2��5�&�!�V�\�2�'�	)�����Z��5�&�!�V�\�2��5�'�4���6��6�7�A�v�|�4�'�)���
��z���:�:�:�:�:�:��O�������r8

Youez - 2016 - github.com/yon3zu
LinuXploit