HEX
Server: Apache
System: Linux srv1.prosuiteplus.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: prosuiteplus (1001)
PHP: 8.3.20
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/PIL/__pycache__/PdfParser.cpython-38.pyc
U

tCf���*@shddlZddlZddlZddlZddlZddlZddlZddlZdd�Zdd�Z	dddd	d
ddd
ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/�)Z
d0d1�ZGd2d3�d3e�Z
d4d5�ZGd6d7�d7e�d8d9d:g��ZGd;d<�d<e�ZGd=d>�d>�ZGd?d@�d@�ZGdAdB�dBe�ZGdCdD�dDej�ZGdEdF�dF�ZGdGdH�dH�ZdIdJ�ZGdKdL�dL�ZdS)M�NcCs
|�d�S�N�us-ascii)�encode��s�r�//usr/lib/python3/dist-packages/PIL/PdfParser.py�
make_bytessr	cCstj|�d�S)N�	utf_16_be)�codecs�BOM_UTF16_BErrrrr�encode_textsr
�u˘uˇuˆu˙u˝u˛u˚u˜u•u†u‡u…u—u–uƒu⁄u‹u›u−u‰u„u“u”u‘u’u‚u™ufiufluŁuŒuŠuŸuŽuıułuœušužu€))�����������������������������������������cCsH|dttj��tjkr0|ttj�d��d�Sd�dd�|D��SdS)Nr
�css|]}t�|t|��VqdS�N)�PDFDocEncoding�get�chr)�.0Zbyterrr�	<genexpr>Fszdecode_text.<locals>.<genexpr>)�lenrr�decode�join)�brrr�decode_textBsrCc@seZdZdZdS)�PdfFormatErrorz\An error that probably indicates a syntactic or semantic error in the
    PDF file structureN)�__name__�
__module__�__qualname__�__doc__rrrrrDIsrDcCs|st|��dSr9)rD)Z	conditionZ
error_messagerrr�check_format_conditionPsrIc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�IndirectReferencecCsd|S)Nz%s %s Rr��selfrrr�__str__XszIndirectReference.__str__cCs|���d�Sr)rMrrKrrr�	__bytes__[szIndirectReference.__bytes__cCs$|j|jko"|j|jko"|j|jkSr9)�	__class__�	object_id�
generation�rL�otherrrr�__eq__^s

�
�zIndirectReference.__eq__cCs
||kSr9rrRrrr�__ne__eszIndirectReference.__ne__cCst|j|jf�Sr9)�hashrPrQrKrrr�__hash__hszIndirectReference.__hash__N)rErFrGrMrNrTrUrWrrrrrJUs
rJZIndirectReferenceTuplerPrQc@seZdZdd�ZdS)�IndirectObjectDefcCsd|S)Nz	%s %s objrrKrrrrMmszIndirectObjectDef.__str__N)rErFrGrMrrrrrXlsrXc@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�	XrefTablecCs i|_i|_ddi|_d|_dS)NriF)�existing_entries�new_entries�deleted_entries�reading_finishedrKrrr�__init__rs
zXrefTable.__init__cCs2|jr||j|<n
||j|<||jkr.|j|=dSr9)r]r[rZr\�rL�key�valuerrr�__setitem__xs


zXrefTable.__setitem__cCs0z|j|WStk
r*|j|YSXdSr9)r[�KeyErrorrZ�rLr`rrr�__getitem__�szXrefTable.__getitem__cCs�||jkr0|j|dd}|j|=||j|<nR||jkrX|j|dd}||j|<n*||jkrn|j|}ntdt|�d��dS)N�z
object ID z+ cannot be deleted because it doesn't exist)r[r\rZ�
IndexError�str)rLr`rQrrr�__delitem__�s


�zXrefTable.__delitem__cCs||jkp||jkSr9)rZr[rdrrr�__contains__�szXrefTable.__contains__cCs.tt|j���t|j���Bt|j���B�Sr9)r?�setrZ�keysr[r\rKrrr�__len__�s���zXrefTable.__len__cCs*t|j���t|j���t|j���BSr9)rkrZrlr\r[rKrrrrl�s�zXrefTable.keysc	CsTtt|j���t|j���B�}tt|j����}|��}|�d�|�rPd}t|�D]>\}}|dksr|d|krx|}qV|d|�}||d�}q�qV|}d}|�td|dt	|�f��|D]�}	|	|jkr�|�td|j|	��q�|�
d�}
t|	|
kd|	|
f�z|d}Wntk
�r.d}YnX|�td||j|	f��q�qD|S)Nsxref
rfz%d %d
rz%010d %05d n 
z>expected the next deleted object ID to be %s, instead found %sz%010d %05d f 
)
�sortedrkr[rlr\�tell�write�	enumerater	r?�poprIrg)rL�frlZdeleted_keysZ	startxref�prev�indexr`Zcontiguous_keysrPZthis_deleted_object_idZnext_in_linked_listrrrrp�sJ 


��
���zXrefTable.writeN)rErFrGr^rbrerirjrmrlrprrrrrYqsrYc@sheZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zedd��Z	e
ed
d��dd�dD�Zdd�Z
e
ZdS)�PdfNamecCs6t|t�r|j|_nt|t�r&||_n|�d�|_dSr)�
isinstancerv�name�bytesr)rLrxrrrr^�s



zPdfName.__init__cCs|j�d�Sr)rxr@rKrrr�name_as_str�szPdfName.name_as_strcCs t|t�r|j|jkp||jkSr9)rwrvrxrRrrrrT�s��zPdfName.__eq__cCs
t|j�Sr9)rVrxrKrrrrW�szPdfName.__hash__cCsdt|j�S)NzPdfName(%s))�reprrxrKrrr�__repr__�szPdfName.__repr__cCs|t�|��Sr9)�	PdfParser�interpret_name)�cls�datarrr�from_pdf_stream�szPdfName.from_pdf_stream�!�cCsh|]}t|��qSr)�ord)r=�crrr�	<setcomp>�szPdfName.<setcomp>z#%/()<>[]{}cCsDtd�}|jD],}||jkr(|�|�q|�td|��qt|�S)N�/z#%02X)�	bytearrayrx�
allowed_chars�append�extendr	ry)rL�resultrBrrrrN�s

zPdfName.__bytes__N)rErFrGr^rzrTrWr|�classmethodr�rk�ranger�rNrMrrrrrv�s
	rvc@seZdZdd�ZeZdS)�PdfArraycCsdd�dd�|D��dS)Ns[ � css|]}t|�VqdSr9)�pdf_repr)r=�xrrrr>�sz%PdfArray.__bytes__.<locals>.<genexpr>s ])rArKrrrrN�szPdfArray.__bytes__N)rErFrGrNrMrrrrr��sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�PdfDictcCs,|dkrtj�|||�n|||�d�<dS)Nr�r)�collections�UserDict�__setattr__rr_rrrr��szPdfDict.__setattr__cCsz||�d�}Wntk
r.t|��YnXt|t�rBt|�}|�d��r|�d�rd|dd�}d}t|�dkr�|d}t	|dd��d	}t|�d
kr�|t	|dd
��7}ddt|�d�}t
�|dt|�d�|�}|d
k�r|d	9}|dk�r|d9}t
�t
�|�|�}|S)NrZDatezD:��Z����<��z%Y%m%d%H%M%S)�+�-r����)rrc�AttributeErrorrwryrC�endswith�
startswithr?�int�time�strptime�gmtime�calendarZtimegm)rLr`raZrelationship�offset�formatrrr�__getattr__s.



zPdfDict.__getattr__cCsntd�}|��D]J\}}|dkr"qt|�}|�d�|�tt|���|�d�|�|�q|�d�t|�S)Ns<<�
r�s
>>)r��itemsr�r�ryrv)rL�outr`rarrrrN s


zPdfDict.__bytes__N)rErFrGr�r�rNrrrrr��sr�c@seZdZdd�Zdd�ZdS)�	PdfBinarycCs
||_dSr9)r�)rLr�rrrr^/szPdfBinary.__init__cCstdd�dd�|jD���S)Nz<%s>r8css|]}d|VqdS)z%02XNr�r=rBrrrr>3sz&PdfBinary.__bytes__.<locals>.<genexpr>)r	rAr�rKrrrrN2szPdfBinary.__bytes__N)rErFrGr^rNrrrrr�.sr�c@seZdZdd�Zdd�ZdS)�	PdfStreamcCs||_||_dSr9)�
dictionary�buf)rLr�r�rrrr^7szPdfStream.__init__cCs�z|jj}Wntk
r&|jYSX|dkrnz|jj}Wntk
rX|jj}YnXtj|jt|�d�St	dt
|jj���dS)NsFlateDecode)�bufsizez$stream filter %s unknown/unsupported)r�ZFilterr�r�ZDL�Length�zlib�
decompressr��NotImplementedErrorr{)rL�filterZexpected_lengthrrrr@;s�zPdfStream.decodeN)rErFrGr^r@rrrrr�6sr�cCs|dkrdS|dkrdS|dkr$dSt|ttttf�r>t|�St|t�rVt|��d�St|t	j
�r|dt	�d|��d�d	St|t�r�tt|��St|t
�r�tt|��St|t�r�tt|��St|t��r�|�d
d�}|�dd
�}|�d	d�}d|d	St|�SdS)NTstrueFsfalsesnullrs(D:z
%Y%m%d%H%M%SZ�)�\s\\�(�\(s\))rwrvr�r�r�ryr�rhrr��struct_time�strftime�dict�listr�r
�replace)r�rrrr�Ls0



r�c @s�eZdZdZdrdd�Zdd�Zd	d
�Zdd�Zd
d�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdsdd�Zdd�Zdd �Zd!d"�Zed#d$��Zd%d&�Zdtd'd(�Zd)Zd*Zd+Zd,Zed-Zed.Zd/Zd0ZeeeZe �!ed1ed2ed3ed4ed5ed6e j"�Z#e �!ed1ed7ed3ed4ed5ee j"�Z$d8d9�Z%d:d;�Z&e �!e�Z'e �!ed<ed=�Z(e �!ed>�Z)e �!ed?e�Z*e+d@dA��Z,e �!dB�Z-e+dudDdE��Z.e �!edFed=�Z/e �!edGed=�Z0e �!edHed=�Z1e �!edIed=�Z2e �!edJed=�Z3e �!edK�Z4e �!edL�Z5e �!edMedN�Z6e �!edO�Z7e �!edPedPedQed=�Z8e �!edPedPedRed=�Z9e �!edSed=�Z:e �!dTedUedV�Z;e �!edW�Z<e �!edXed=�Z=e+dvdZd[��Z>e �!d\�Z?d]d^d_d`dadbdcdddedfdTdTd=d=dgdge@d]�d^e@d_�d`e@da�dbe@dc�dde@de�dfe@dT�dTe@d=�d=e@dg�dgiZAe+dhdi��ZBe �!edje�ZCe �!ed4ed4ee�ZDe �!dk�ZEdldm�ZFdwdndo�ZGdxdpdq�ZHdS)yr}z|Based on
    https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/PDF32000_2008.pdf
    Supports PDF up to 1.4
    Nr�rbcCs|r|rtd��||_||_||_||_d|_d|_|dk	rZ|dkrZt||�|_}d|_|dk	r�|�|�|_}d|_|s�t	|d�r�|j
|_i|_|r�|��nTd|_
|_t�|_d|_t�|_d|_i|_g|_g|_d|_d|_i|_t�|_d|j_|�r|��dS)Nz4specify buf or f or filename, but not both buf and fFTrxr)�RuntimeError�filenamer�rs�start_offset�should_close_buf�should_close_file�open�get_buf_from_file�hasattrrx�cached_objects�
read_pdf_info�file_size_total�file_size_thisr��root�root_ref�info�info_ref�page_tree_root�pages�
orig_pages�	pages_ref�last_xref_section_offset�trailer_dictrY�
xref_tabler]�seek_end)rLr�rsr�r��moderrrr^osD
zPdfParser.__init__cCs|Sr9rrKrrr�	__enter__�szPdfParser.__enter__cCs|��dS)NF)�close)rL�exc_type�	exc_value�	tracebackrrr�__exit__�szPdfParser.__exit__cCs|��|��dSr9)�	close_bufr�rKrrr�
start_writing�szPdfParser.start_writingcCs.z|j��Wntk
r"YnXd|_dSr9)r�r�r�rKrrrr��s
zPdfParser.close_bufcCs2|jr|��|jdk	r.|jr.|j��d|_dSr9)r�r�rsr�r�rKrrrr��s

zPdfParser.closecCs|j�dtj�dS)Nr)rs�seek�os�SEEK_ENDrKrrrr��szPdfParser.seek_endcCs|j�d�dS)Ns	%PDF-1.4
)rsrprKrrr�write_header�szPdfParser.write_headercCs|j�d�|��d��dS)Nz% {}
�utf-8)rsrpr�r)rLrrrr�
write_comment�szPdfParser.write_commentcCsl|��|�|j���|_|�d�|_|��|j|jtd�|jd�|j|jtd�t	|j
�|j
d�|jS)Nr�Catalog)�TypeZPages�Pages)r�ZCountZKids)�del_root�next_object_idrsror�r��
rewrite_pages�	write_objrvr?r�rKrrr�
write_catalog�s�zPdfParser.write_catalogc
Cs�g}t|j�D]�\}}|j|}|j|j=|�|td��||jkrHqi}|��D]\}}|||�	�<qT|j
|d<|jd|�}t|j�D]\}	}
|
|kr�||j|	<q�q|D]6}|r�|j|}|j|jkr�|j|j=|�dd�}q�q�g|_dS)NsParent�Parent)N)
rqr�r�r�rPr�rvr�r�rzr��
write_pager;)
rLZpages_tree_nodes_to_delete�iZpage_refZ	page_infoZstringified_page_infor`raZnew_page_ref�jZcur_page_refZpages_tree_node_refZpages_tree_noderrrr��s,





zPdfParser.rewrite_pagescCs�|r|��||_|jr(|�d|j�|_|j�|j�}t|j�}|j|d�}|j	dk	r`|j	|d<|jrp|j|d<||_	|j�dt
t|��td|��dS)N)�Root�Size�Prev�Infostrailer
z
startxref
%d
%%%%EOF)
r�r�r�r�r�r�rprsr?r�ryr�r	)rLZnew_root_refZ
start_xrefZnum_entriesr�rrr�write_xref_and_trailer�s(




�
��z PdfParser.write_xref_and_trailercOsLt|t�r|j|}d|kr(td�|d<d|kr:|j|d<|j|f|�|�S)Nr��Pager�)rwr�r�rvr�r�)rL�ref�objs�dict_objrrrr��s


zPdfParser.write_pagecOs�|j}|dkr|�|���}n|��|jf|j|j<|�tt|���|�	dd�}|dk	rft
|�|d<|rx|�t|��|D]}|�t|��q||dk	r�|�d�|�|�|�d�|�d�|S)N�streamr�sstream
s
endstream
sendobj
)rsr�rorQr�rPrpryrXrrr?r�)rLr�r�rrsr�objrrrr��s$



zPdfParser.write_objcCs.|jdkrdS|j|jj=|j|jdj=dS)Nr�)r�r�rPr�rKrrrr�s
zPdfParser.del_rootcCsXt|d�r|��St|d�r$|��Sztj|��dtjd�WStk
rRYdSXdS)N�	getbuffer�getvaluer)�access�)r�rr�mmap�filenoZACCESS_READ�
ValueError)rsrrrr�s

zPdfParser.get_buf_from_filecCs�t|j�|_|j|j|_|��|jd|_|j�dd�|_	t
|�|j��|_|j	dkrdt
�|_
nt
|�|j	��|_
td|jkd�t|jddkd�td|jkd�tt|jdt�d	�|jd|_|�|j�|_|�|j�|_|jdd�|_dS)
Nr�r��Typez/Type missing in Rootr�z/Type in Root is not /Catalogr�z/Pages missing in Rootz+/Pages in Root is not an indirect reference)r?r�r�r�r��read_trailerr�r�r;r�r��
read_indirectr�r�rIrwrJr�r��linearize_page_treer�r�rKrrrr�%s.

��zPdfParser.read_pdf_infocCsXztt|j���dd�}Wntk
r:tdd�}YnX|dk	rT|df|j|j<|S)Nrfr)rJ�maxr�rlr	rP)rLr�Z	referencerrrr�AszPdfParser.next_object_ids[][()<>{}/%]s$[][()<>{}/%\000\011\012\014\015\040]s[\000\011\012\014\015\040]s#[\000\011\012\014\015\0400-9a-fA-F]�*�+s[\000\011\014\015\040]*s[\r\n]+strailers\<\<(.*\>\>)s	startxrefs([0-9]+)s%%EOF�$s
\<\<(.*?\>\>)cCs�t|j�d}||jkr|j}|j�|j|�}t|d�|}|r^|}|j�|j|��d�}q<|sf|}|�d�}t|�d��|_	|�
|�|_t�|_
|j|j	d�d|jkr�|�|jd�dS)N�@ztrailer end not found�rfr���xref_section_offsetr�)r?r�r��re_trailer_end�searchrI�start�groupr�r��interpret_trailerr�rYr��read_xref_table�read_prev_trailer)rLZsearch_start_offset�mZ
last_match�trailer_datarrrrrs$



zPdfParser.read_trailercCsv|j|d�}|j�|j||d��}t|d�|�d�}tt|�d��|kd�|�|�}d|krr|�|d�dS)Nrrzprevious trailer not foundrfr�zGxref section offset in previous trailer doesn't match what was expectedr�)	r�re_trailer_prevrr�rIrr�rr)rLrZtrailer_offsetrrr�rrrr�s�

�
zPdfParser.read_prev_trailers/([!-$&'*-.0-;=?-Z\\^-z|~]+)(?=r�s\<\<s\>\>cCs�i}d}|j�||�}|sT|j�||�}t|o<|��t|�kdt||d���q�|�|�d��}|�	||���\}}|||<qtd|ko�t
|dt�d�td|ko�t
|dt�d�|S)Nrz+name not found in trailer, remaining data: rfr�z&/Size not in trailer or not an integerr�z1/Root not in trailer or not an indirect reference)
�re_name�match�re_dict_endrI�endr?r{r~r�	get_valuerwr�rJ)rrZtrailerr�rr`rarrrr�s0��
��zPdfParser.interpret_trailers([^#]*)(#([0-9a-fA-F]{2}))?FcCsnd}|j�|�D]B}|�d�rD||�d�t�|�d��d��7}q||�d�7}q|rb|�d�St|�SdS)Nr�rfrr�)�re_hashes_in_name�finditerrr��fromhexr@ry)r�rawZas_textrxrrrrr~�s
&
zPdfParser.interpret_namesnull(?=strue(?=sfalse(?=s([-+]?[0-9]+)(?=s)([-+]?([0-9]+\.[0-9]*|[0-9]*\.[0-9]+))(?=s\[�]s\<(s*)\>r�s
([-+]?[0-9]+)sR(?=sobj(?=s	endobj(?=r�s	%[^\r\n]*s)*sstream\r?\nsendstream(?=r�c

Cs�|dkrdS|j�||�}|r&|��}|j�||�}|r�tt|�d��dkd�tt|�d��dkd�t|dkp�|tt|�d��t|�d���kd�|j||��|dd�\}}|dkr�|dfS|j	�||�}t|d	�||��fSt|d
�|j
�||�}|�r^tt|�d��dkd�tt|�d��dkd�tt|�d��t|�d���|��fS|j�||�}|�r�|��}i}|j�||�}|�s|j|||dd�\}}|dk�r�|dfS|j|||dd�\}	}|	||<|dk�r�|dfS|j�||�}�q�|��}|j
�||�}|�r�zt|d
�}
Wn0tttfk
�r\td|�d
d���YnX||��|��|
�}|j�||��|
�}t|d�|��}tt|�|�}nt|�}||fS|j�||�}|�rD|��}g}|j�||�}|�s8|j|||dd�\}	}|�|	�|dk�r&|dfS|j�||�}�q�||��fS|j�||�}|�rdd|��fS|j�||�}|�r�d|��fS|j�||�}|�r�d|��fS|j�||�}|�r�t|�|�d���|��fS|j�||�}|�r�t|�d��|��fS|j �||�}|�r(t!|�d��|��fS|j"�||�}|�r�t#dd�|�d�D��}t$|�ddk�rt|�t%d��t#�&|�'d��|��fS|j(�||�}|�r�|�)||���Stdt*|||d����dS)Nr)NNrfz<indirect object definition: object ID must be greater than 0r�z;indirect object definition: generation must be non-negativez2indirect object definition different than expected)�max_nestingz(indirect object definition end not foundz$indirect object definition not foundz;indirect object reference: object ID must be greater than 0z:indirect object reference: generation must be non-negativesLengthz)bad or missing Length in stream dict (%r)zstream end not foundTFcSsg|]}|dkr|�qS)s0123456789abcdefABCDEFrr�rrr�
<listcomp>isz'PdfParser.get_value.<locals>.<listcomp>�0rzunrecognized object: � )+�
re_commentr!r#�re_indirect_def_startrIr�rrJr$�re_indirect_def_end�re_indirect_reference�
re_dict_startr"�re_stream_start�	TypeErrorrcr	rDr;�
re_stream_endr�r��re_array_start�re_array_endr��re_null�re_true�re_falser rvr~�re_int�re_real�float�
re_string_hexr�r?r�r(r@�
re_string_lit�get_literal_stringr{)
rr�r��expect_indirectr+r�objectr�r`raZ
stream_lenZstream_dataZ
hex_stringrrrr$�s�����
���&


��



�zPdfParser.get_valuesF(\\[nrtbf()\\])|(\\[0-9]{1,3})|(\\(\r\n|\r|\n))|(\r\n|\r|\n)|(\()|(\))�nr��r�
�t�	�b��f�r�cCsd}t�}|j�||�D]�}|�|||����|�d�rX|�|j|�d�d�n�|�d�r�|�t|�d�dd�d��nx|�d�r�nl|�d�r�|�d�nV|�d�r�|�d	�|d7}n8|�d
�r�|dkr�t	|�|�
�fS|�d�|d8}|�
�}qtd��dS)
Nrrfr��r%�r��r��r�zunfinished literal string)r��re_lit_str_tokenr'r�rr�
escaped_charsr�r�ryr#rD)rr�r�Z
nesting_depthr�rrrrrA�s,

 







zPdfParser.get_literal_stringsxrefs+([0-9]{10}) ([0-9]{5}) ([fn])( \r| \n|\r\n)cCsd}|j�|j||j�}t|d�|��}|j�|j|�}|sNt|d��qd}|��}t|�d��}t|�d��}t	|||�D]�}|j
�|j|�}t|d�|��}|�d�d	k}t|�d��}	|s�t|�d��|	f}
t||jkp�|j||
kd
�|
|j|<q�q,|S)NFzxref section start not foundzxref subsection start not foundTrfr�zxref entry not foundr%rKz)xref entry duplicated (and not identical))�re_xref_section_startr!r�r�rIr#�re_xref_subsection_startr�rr��
re_xref_entryr�)rLrZsubsection_foundrr�Zfirst_objectZnum_objectsr�Zis_freerQZ	new_entryrrrr�s@�
�
�zPdfParser.read_xref_tablecCsh|j|d\}}t||dkd|d|d||f�|j|j||jt|�|d�d}||j|<|S)Nrrfzgexpected to find generation %s for object ID %s in xref table, instead found generation %s at offset %s)rBr+)r�rIr$r�r�rJr�)rLr�r+r�rQrarrrr�s"
����
zPdfParser.read_indirectcCsj|dkr|j}t|ddkd�g}|dD]8}|�|�}|ddkrR|�|�q,|�|j|d��q,|S)Nr
r�z%/Type of page tree node is not /PagessKidsr�)�node)r�rIrr�r�r
)rLrVr�ZkidZ
kid_objectrrrr
�s
�
zPdfParser.linearize_page_tree)NNNrr�)N)N)F)Nr�)r�)N)IrErFrGrHr^r�r�r�r�r�r�r�r�r�r�r�r�r�r��staticmethodr�r�r�Z	delimiterZdelimiter_or_wsZ
whitespaceZwhitespace_or_hexZwhitespace_optionalZwhitespace_mandatoryZwhitespace_optional_no_nlZnewline_only�newline�re�compile�DOTALLrrrrZre_whitespace_optionalr r3r"r�rr&r~r9r:r;r<r=r7r8r?r@r2r0r1r/r4r6r$rQr�rRrArSrTrUrrr
rrrrr}is�
%
	


��������	�
�����������	�
��
����

��������������
��������
���y��
������
!
r})r�rr�rr�rYr�r�r	r
r:rCr�rDrI�
namedtuplerJrXrYrvr�r�r�r�r�r�r�r}rrrr�<module>s��-
�])0