Ë
    òT•jm‹  ã                   ó  — d Z ddlmZmZmZ ddlmZmZmZ ddlm	Z	 ddl
mZmZ ddlmZ ej                  Zej                   Zej"                  Zej$                  j&                  Zej$                  j(                  Zej$                  j*                  Zej$                  j,                  Z ej.                  «       Z ej2                  dd«       ej2                  dd	«       ej2                  dd
«       ej2                  dd«       ej2                  dd«       ej2                  dd«       ej2                  dd«       ej2                  dd«       ej2                  dd«      dœ	Z G d„ de«      Zd„ Zd„ Z G d„ d«      ZeeefZ  G d„ de«      Z! G d„ de«      Z" G d„ de"«      Z# G d„ de"«      Z$d Z%d!e%z  Z& G d"„ d#e«      Z' G d$„ d%«      Z( G d&„ d'e(e«      Z) G d(„ d)e(e'«      Z* G d*„ d+e+«      Z, G d,„ d-e«      Z-d3d.„Z.d3d/„Z/d3d0„Z0d3d1„Z1d2„ Z2y)4z™Facility to use the Expat parser to load a minidom instance
from a string or file.

This avoids all the overhead of SAX and pulldom to gain performance.
é    )Ú
xmlbuilderÚminidomÚNode)ÚEMPTY_NAMESPACEÚEMPTY_PREFIXÚXMLNS_NAMESPACE)Úexpat)Ú_append_childÚ_set_attribute_node)Ú
NodeFilterNÚcdataÚenumerationÚentityÚentitiesÚidÚidrefÚidrefsÚnmtokenÚnmtokens)	ÚCDATAÚENUMÚENTITYÚENTITIESÚIDÚIDREFÚIDREFSÚNMTOKENÚNMTOKENSc                   óH   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zy)ÚElementInfo©Ú
_attr_infoÚ_modelÚtagNameNc                 ó.   — || _         g | _        || _        y ©N)r$   r"   r#   )Úselfr$   Úmodels      ú+/usr/lib/python3.12/xml/dom/expatbuilder.pyÚ__init__zElementInfo.__init__?   s   € ØˆŒØˆŒØˆ�ó    c                 óH   — | j                   | j                  | j                  fS r&   r!   ©r'   s    r)   Ú__getstate__zElementInfo.__getstate__D   s   € Ø�‰ §¡¨T¯\©\Ð9Ð9r+   c                 ó.   — |\  | _         | _        | _        y r&   r!   )r'   Ústates     r)   Ú__setstate__zElementInfo.__setstate__G   s   € Ø5:Ñ2ˆŒ˜œ d¥lr+   c                 ó    — | j                   D ]0  }|d   |k(  sŒ|d   }|d   dk(  rt        d   c S t        |d      c S  t        j                  S )Né   éþÿÿÿr   ú(r   )r"   Ú_typeinfo_mapr   Ú_no_type)r'   ÚanameÚinfoÚts       r)   ÚgetAttributeTypezElementInfo.getAttributeTypeJ   s]   € Ø—O‘Oò 	3ˆDØ�A‰w˜%ÓØ˜‘H�Ø�Q‘4˜3’;Ü(¨Ñ0Ò0ä(¨¨b©Ñ2Ò2ð	3ô ×ÑÐr+   c                 ó"   — t         j                  S r&   )r   r7   )r'   ÚnamespaceURIÚ	localNames      r)   ÚgetAttributeTypeNSzElementInfo.getAttributeTypeNST   s   € Ü×ÑÐr+   c                 ó¦   — | j                   rE| j                   d   }|t        j                  j                  t        j                  j                  fvS y©Nr   F)r#   r	   r(   ÚXML_CTYPE_ANYÚXML_CTYPE_MIXED)r'   Útypes     r)   ÚisElementContentzElementInfo.isElementContentW   sF   € Ø�;Š;Ø—;‘;˜q‘>ˆDØ¤§¡× 9Ñ 9Ü %§¡× ;Ñ ;ð =ð =ð =ð r+   c                 óp   — | j                   r*| j                   d   t        j                  j                  k(  S yrA   )r#   r	   r(   ÚXML_CTYPE_EMPTYr-   s    r)   ÚisEmptyzElementInfo.isEmpty_   s)   € Ø�;Š;Ø—;‘;˜q‘>¤U§[¡[×%@Ñ%@Ñ@Ð@àr+   c                 óJ   — | j                   D ]  }|d   |k(  sŒ|d   dk(  c S  y)Nr3   r4   r   F)r"   )r'   r8   r9   s      r)   ÚisIdzElementInfo.isIde   s5   € Ø—O‘Oò 	(ˆDØ�A‰w˜%ÓØ˜B‘x 4Ñ'Ò'ð	(ð r+   c                 ó(   — | j                  ||f«      S r&   )rJ   )r'   ÚeuriÚenameÚaurir8   s        r)   ÚisIdNSzElementInfo.isIdNSk   s   € à�y‰y˜$ ˜Ó'Ð'r+   r&   )Ú__name__Ú
__module__Ú__qualname__Ú	__slots__r*   r.   r1   r;   r?   rE   rH   rJ   rO   © r+   r)   r    r    <   s4   „ Ø1€Ióò
:ò;ò ò òòòó(r+   r    c                 ó&   — | j                  ||«      S r&   )Ú_intern_setdefault)ÚbuilderÚss     r)   Ú_internrY   o   s   € Ø×%Ñ% a¨Ó+Ð+r+   c                 ó6  — d|v sJ ‚|j                  d«      }| j                  }t        |«      dk(  r)|\  }}} |||«      }|›d|›�} |||«      } |||«      }n3t        |«      dk(  r|\  }}t        } |||«      x}}nt	        d|z  «      ‚ |||«      |||fS )Nú é   ú:é   z4Unsupported syntax: spaces in URIs not supported: %r)ÚsplitrV   Úlenr   Ú
ValueError)rW   ÚnameÚpartsÚinternÚuriÚ	localnameÚprefixÚqnames           r)   Ú_parse_ns_nameri   r   s½   € Ø�$‰;Ðˆ;Ø�J‰J�s‹O€EØ×'Ñ'€FÜ
ˆ5ƒz�Q‚Ø!&ÑˆˆY˜Ù˜ Ó'ˆÚ!¡9Ð-ˆÙ�u˜eÓ$ˆÙ˜9 iÓ0‰	Ü	ˆU‹�qŠØ‰ˆˆYÜˆÙ" 9¨iÓ8Ð8ˆ‘	äÐOÐRVÑVÓWÐWÙ�#�sÓ˜Y¨°Ð5Ð5r+   c                   óº   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy) ÚExpatBuilderzPDocument builder that uses Expat to build a ParsedXML.DOM document
    instance.Nc                 ó  — |€t        j                  «       }|| _        | j                  j                  �%t	        | j                  j                  «      | _        nd | _        t        | _        d | _        | j                  «        y r&   )
r   ÚOptionsÚ_optionsÚfilterÚFilterVisibilityControllerÚ_filterr   Ú_finish_start_elementÚ_parserÚreset)r'   Úoptionss     r)   r*   zExpatBuilder.__init__‰   sc   € Øˆ?Ü ×(Ñ(Ó*ˆGØˆŒØ�=‰=×ÑÐ+Ü5°d·m±m×6JÑ6JÓKˆD�LàˆDŒLô *,ˆDÔ&ØˆŒØ�
‰
�r+   c                 ó*   — t        j                  «       S )zCreate a new parser object.)r	   ÚParserCreater-   s    r)   ÚcreateParserzExpatBuilder.createParser—   s   € ä×!Ñ!Ó#Ð#r+   c                 óB  — | j                   sˆ| j                  «       | _         | j                   j                  j                  | _        d| j                   _        d| j                   _        d| j                   _        | j                  | j                   «       | j                   S )z7Return the parser object, creating a new one if needed.T)	rs   rx   rd   Ú
setdefaultrV   Úbuffer_textÚordered_attributesÚspecified_attributesÚinstallr-   s    r)   Ú	getParserzExpatBuilder.getParser›   so   € à�|Š|Ø×,Ñ,Ó.ˆDŒLØ&*§l¡l×&9Ñ&9×&DÑ&DˆDÔ#Ø'+ˆD�L‰LÔ$Ø.2ˆD�L‰LÔ+Ø04ˆD�L‰LÔ-Ø�L‰L˜Ÿ™Ô&Ø�|‰|Ðr+   c                 óª   — t         j                  t        dd«      | _        | j                  | _        | j                  j
                  | _        d| _        y)z6Free all data structures used during DOM construction.NF)ÚtheDOMImplementationÚcreateDocumentr   ÚdocumentÚcurNodeÚ
_elem_infoÚ_cdatar-   s    r)   rt   zExpatBuilder.reset¦   s>   € ä,×;Ñ;Ü˜T 4ó)ˆŒà—}‘}ˆŒØŸ-™-×2Ñ2ˆŒØˆ�r+   c                 óˆ  — | j                   |_        | j                  |_        | j                  |_        | j                  |_        | j                  j                  r| j                  |_        | j                  |_        | j                  j                  r| j                  |_        | j                  j"                  r4| j$                  |_        | j(                  |_        | j,                  |_        n| j0                  |_        | j2                  |_        | j6                  |_        | j:                  |_        | j>                  |_         y)z>Install the callbacks needed to build the DOM into the parser.N)!Ústart_doctype_decl_handlerÚStartDoctypeDeclHandlerÚfirst_element_handlerÚStartElementHandlerÚend_element_handlerÚEndElementHandlerÚ
pi_handlerÚProcessingInstructionHandlerrn   r   Úentity_decl_handlerÚEntityDeclHandlerÚnotation_decl_handlerÚNotationDeclHandlerÚcommentsÚcomment_handlerÚCommentHandlerÚcdata_sectionsÚstart_cdata_section_handlerÚStartCdataSectionHandlerÚend_cdata_section_handlerÚEndCdataSectionHandlerÚcharacter_data_handler_cdataÚCharacterDataHandlerÚcharacter_data_handlerÚexternal_entity_ref_handlerÚExternalEntityRefHandlerÚxml_decl_handlerÚXmlDeclHandlerÚelement_decl_handlerÚElementDeclHandlerÚattlist_decl_handlerÚAttlistDeclHandler©r'   Úparsers     r)   r~   zExpatBuilder.install®   sû   € ð *.×)HÑ)HˆÔ&Ø%)×%?Ñ%?ˆÔ"Ø#'×#;Ñ#;ˆÔ Ø.2¯o©oˆÔ+Ø�=‰=×!Ò!Ø'+×'?Ñ'?ˆFÔ$Ø%)×%?Ñ%?ˆÔ"Ø�=‰=×!Ò!Ø$(×$8Ñ$8ˆFÔ!Ø�=‰=×'Ò'Ø.2×.NÑ.NˆFÔ+Ø,0×,JÑ,JˆFÔ)Ø*.×*KÑ*KˆFÕ'à*.×*EÑ*EˆFÔ'Ø*.×*JÑ*JˆÔ'Ø $× 5Ñ 5ˆÔØ$(×$=Ñ$=ˆÔ!Ø$(×$=Ñ$=ˆÕ!r+   c                 ó|  — | j                  «       }d}	 |j                  d«      x}rQ|j                  |d«       |r'| j                  j                  r| j                  |«       d}|j                  d«      x}rŒQ|j                  dd«       | j                  }| j                  «        d| _        |S # t        $ r Y Œ0w xY w)zIParse a document from a file object, returning the document
        node.Ti @  Fr+   N)	r   ÚreadÚParserƒ   ÚdocumentElementÚ_setup_subsetÚParseEscapert   rs   )r'   Úfiler¨   Úfirst_bufferÚbufferÚdocs         r)   Ú	parseFilezExpatBuilder.parseFileÅ   s¸   € ð —‘Ó!ˆØˆð	Ø ŸI™I gÓ.Ð.�&Ð.Ø—‘˜V UÔ+Ù D§M¡M×$AÒ$AØ×&Ñ& vÔ.Ø$�ð	 !ŸI™I gÓ.Ð.�&Ñ.ð
 �L‰L˜˜dÔ#ð �m‰mˆØ�
‰
ŒØˆŒØˆ
øô ò 	Ùð	ús   ”A#B/ Á8B/ Â/	B;Â:B;c                 óÒ   — | j                  «       }	 |j                  |d«       | j                  |«       | j                  }| j                  «        d| _        |S # t        $ r Y Œ0w xY w)z<Parse a document from a string, returning the document node.TN)r   r«   r­   r®   rƒ   rt   rs   )r'   Ústringr¨   r²   s       r)   ÚparseStringzExpatBuilder.parseStringØ   sc   € à—‘Ó!ˆð	Ø�L‰L˜ Ô&Ø×Ñ˜vÔ&ð �m‰mˆØ�
‰
ŒØˆŒØˆ
øô ò 	Ùð	ús   ’#A Á	A&Á%A&c                 ó¾   — | j                   j                  rGt        «       }|j                  |«       |j	                  «       }|| j                   j                  _        yy)z/Load the internal subset if there might be one.N)rƒ   ÚdoctypeÚInternalSubsetExtractorr¶   Ú	getSubsetÚinternalSubset)r'   r±   Ú	extractorÚsubsets       r)   r­   zExpatBuilder._setup_subsetå   sJ   € à�=‰=× Ò Ü/Ó1ˆIØ×!Ñ! &Ô)Ø×(Ñ(Ó*ˆFØ39ˆD�M‰M×!Ñ!Õ0ð	 !r+   c                 ó~  — | j                   j                  j                  |||«      }| j                   |_        t	        | j                   |«       || j                   _        | j                  rn| j                  j                  |«      t        k(  rLd | j                   _        | j                   j                  d= d }d | j                  _        d | j                  _        |rb|�"g |j                  _        g |j                  _        d | j                  _        d | j                  _        | j$                  | j                  _        y y ©Néÿÿÿÿ)rƒ   ÚimplementationÚcreateDocumentTypeÚownerDocumentr
   r¸   rq   Ú
acceptNodeÚFILTER_REJECTÚ
childNodesrs   r‘   r“   r   Ú_seqÚ	notationsr–   r�   Úend_doctype_decl_handlerÚEndDoctypeDeclHandler)r'   ÚdoctypeNameÚsystemIdÚpublicIdÚhas_internal_subsetr¸   s         r)   rˆ   z'ExpatBuilder.start_doctype_decl_handlerí   sõ   € à—-‘-×.Ñ.×AÑAØ˜ 8ó-ˆà $§¡ˆÔÜ�d—m‘m WÔ-Ø 'ˆ�‰ÔØ�<Š<˜DŸL™L×3Ñ3°GÓ<ÄÒMØ$(ˆD�M‰MÔ!Ø—‘×(Ñ(¨Ð,ØˆGØ-1ˆD�L‰LÔ*Ø/3ˆD�L‰LÔ,ÙØÐ"Ø(*�× Ñ Ô%Ø)+�×!Ñ!Ô&Ø*.ˆD�L‰LÔ'Ø8<ˆD�L‰LÔ5Ø15×1NÑ1NˆD�L‰LÕ.ð r+   c                 óæ   — | j                   j                  r| j                  | j                  _        | j
                  | j                  _        | j                  s| j                  st        | _
        y y y r&   )rn   r”   r•   rs   r–   rŽ   r�   r…   rq   r   Ú_finish_end_elementr-   s    r)   rÉ   z%ExpatBuilder.end_doctype_decl_handler  sM   € Ø�=‰=×!Ò!Ø*.×*>Ñ*>ˆD�L‰LÔ'Ø48·O±Oˆ�‰Ô1Ø—’ 4§<¢<Ü')ˆDÕ$ð $0�r+   c                 óþ   — | j                   j                  ||«      }t        | j                  |«       | j                  r?| j                  j                  |«      t        k(  r| j                  j                  |«       y y y r&   )rƒ   ÚcreateProcessingInstructionr
   r„   rq   rÄ   rÅ   ÚremoveChild)r'   ÚtargetÚdataÚnodes       r)   rŽ   zExpatBuilder.pi_handler	  s]   € Ø�}‰}×8Ñ8¸ÀÓFˆÜ�d—l‘l DÔ)Ø�<Š<˜DŸL™L×3Ñ3°DÓ9¼]ÒJØ�L‰L×$Ñ$ TÕ*ð Kˆ<r+   c                 óè  — | j                   j                  }| j                  rZ| j                  r+|d   j                  t
        k(  r|d   j                  |«       y | j                  j                  |«      }d| _        n`|r2|d   j                  t        k(  r|d   }|j                  |z   }||_
        y t        j                  «       }||_
        | j                  |_        t        | j                   |«       y )NrÀ   T)r„   rÆ   r†   Ú_cdata_continueÚnodeTypeÚCDATA_SECTION_NODEÚ
appendDatarƒ   ÚcreateCDATASectionÚ	TEXT_NODErÕ   r   ÚTextrÃ   r
   )r'   rÕ   rÆ   rÖ   Úvalues        r)   rœ   z)ExpatBuilder.character_data_handler_cdata  sÆ   € Ø—\‘\×,Ñ,ˆ
Ø�;Š;Ø×&Ò&Ø  ‘n×-Ñ-Ô1CÒCØ˜2‘×)Ñ)¨$Ô/ØØ—=‘=×3Ñ3°DÓ9ˆDØ#'ˆDÕ Ù˜J r™N×3Ñ3´yÒ@Ø˜b‘>ˆDØ—I‘I Ñ$ˆEØˆDŒIØä—<‘<“>ˆDØˆDŒIØ!%§¡ˆDÔÜ�d—l‘l DÕ)r+   c                 ó2  — | j                   j                  }|r0|d   j                  t        k(  r|d   }|j                  |z   |_        y t        j                  «       }|j                  |z   |_        | j                  |_        t        | j                   |«       y r¿   )
r„   rÆ   rÙ   rÝ   rÕ   r   rÞ   rƒ   rÃ   r
   )r'   rÕ   rÆ   rÖ   s       r)   rž   z#ExpatBuilder.character_data_handler#  sv   € Ø—\‘\×,Ñ,ˆ
Ù˜* R™.×1Ñ1´YÒ>Ø˜b‘>ˆDØŸ	™	 DÑ(ˆDŒIØÜ�|‰|‹~ˆØ—I‘I Ñ$ˆŒ	Ø!Ÿ]™]ˆÔÜ�d—l‘l DÕ)r+   c                 ó  — |ry | j                   j                  sy | j                  j                  ||||«      }|�6| j                  j	                  |«      }	|j
                  j                  |	«       | j                  j                  j                  j                  j                  |«       | j                  rO| j                  j                  |«      t        k(  r,| j                  j                  j                  j                  d= y y y r¿   )rn   r   rƒ   Ú_create_entityÚcreateTextNoderÆ   Úappendr¸   rÇ   rq   rÄ   rÅ   )
r'   Ú
entityNameÚis_parameter_entityrß   ÚbaserÌ   rÍ   ÚnotationNamerÖ   Úchilds
             r)   r�   z ExpatBuilder.entity_decl_handler.  sË   € áàØ�}‰}×%Ò%ØØ�}‰}×+Ñ+¨J¸Ø,4°lóDˆàÐð —M‘M×0Ñ0°Ó7ˆEØ�O‰O×"Ñ" 5Ô)Ø�‰×Ñ×&Ñ&×+Ñ+×2Ñ2°4Ô8Ø�<Š<˜DŸL™L×3Ñ3°DÓ9¼]ÒJØ—‘×%Ñ%×.Ñ.×3Ñ3°BÑ7ð Kˆ<r+   c                 óf  — | j                   j                  |||«      }| j                   j                  j                  j                  j                  |«       | j                  rO| j                  j                  |«      t        k(  r,| j                   j                  j                  j                  d= y y y r¿   )	rƒ   Ú_create_notationr¸   rÈ   rÇ   rä   rq   rÄ   ÚFILTER_ACCEPT)r'   rè   rç   rÌ   rÍ   rÖ   s         r)   r’   z"ExpatBuilder.notation_decl_handler@  s�   € Ø�}‰}×-Ñ-¨l¸HÀhÓOˆØ�‰×Ñ×'Ñ'×,Ñ,×3Ñ3°DÔ9Ø�<Š<˜DŸL™L×3Ñ3°DÓ9¼]ÒJØ—‘×%Ñ%×/Ñ/×4Ñ4°RÑ8ð Kˆ<r+   c                 óü   — | j                   j                  |«      }t        | j                  |«       | j                  r?| j                  j                  |«      t        k(  r| j                  j                  |«       y y y r&   )rƒ   ÚcreateCommentr
   r„   rq   rÄ   rÅ   rÓ   )r'   rÕ   rÖ   s      r)   r•   zExpatBuilder.comment_handlerF  s[   € Ø�}‰}×*Ñ*¨4Ó0ˆÜ�d—l‘l DÔ)Ø�<Š<˜DŸL™L×3Ñ3°DÓ9¼]ÒJØ�L‰L×$Ñ$ TÕ*ð Kˆ<r+   c                 ó    — d| _         d| _        y )NTF©r†   rØ   r-   s    r)   r˜   z(ExpatBuilder.start_cdata_section_handlerL  s   € ØˆŒØ$ˆÕr+   c                 ó    — d| _         d| _        y )NFrð   r-   s    r)   rš   z&ExpatBuilder.end_cdata_section_handlerP  s   € ØˆŒØ$ˆÕr+   c                  ó   — y©Nr3   rT   )r'   Úcontextrç   rÌ   rÍ   s        r)   rŸ   z(ExpatBuilder.external_entity_ref_handlerT  s   € Ør+   c                 ó¬   — | j                   €| j                  st        | _        | j                  | j                  «       _        | j	                  ||«       y r&   )rq   r…   r   rÐ   Ústart_element_handlerr   r‹   )r'   rb   Ú
attributess      r)   rŠ   z"ExpatBuilder.first_element_handlerW  s?   € Ø�<‰<Ð¨¯ªÜ')ˆDÔ$Ø/3×/IÑ/Iˆ�‰ÓÔ,Ø×"Ñ" 4¨Õ4r+   c                 ó   — | j                   j                  |«      }t        | j                  |«       || _        |rjt	        dt        |«      d«      D ]Q  }t        j                  ||   t        d t        «      }||dz      }||_
        | j                   |_        t        ||«       ŒS || j                   j                  ur| j                  |«       y y )Nr   r^   r3   )rƒ   ÚcreateElementr
   r„   Úranger`   r   ÚAttrr   r   rß   rÃ   r   r¬   rr   )r'   rb   r÷   rÖ   ÚiÚarß   s          r)   rö   z"ExpatBuilder.start_element_handler]  sµ   € Ø�}‰}×*Ñ*¨4Ó0ˆÜ�d—l‘l DÔ)ØˆŒáÜ˜1œc *›o¨qÓ1ò -�Ü—L‘L ¨A¡´Ø!%¤|ó5�à" 1 Q¡3™�Ø�”Ø"&§-¡-�”Ü# D¨!Õ,ð-ð �t—}‘}×4Ñ4Ñ4Ø×&Ñ& tÕ,ð 5r+   c                 óT  — | j                   rœ|| j                  j                  u ry | j                   j                  |«      }|t        k(  rt        | «       n|t        k(  rt        | «       ny |j                  | _	        |j                  j                  |«       |j                  «        y y r&   )rq   rƒ   r¬   ÚstartContainerrÅ   ÚRejecterÚFILTER_SKIPÚSkipperÚ
parentNoder„   rÓ   Úunlink)r'   rÖ   Úfilts      r)   rr   z"ExpatBuilder._finish_start_elementn  s‚   € Ø�<Š<ð �t—}‘}×4Ñ4Ñ4ØØ—<‘<×.Ñ.¨tÓ4ˆDØ”}Ò$ä˜•ØœÒ$ô ˜•àØŸ?™?ˆDŒLØ�O‰O×'Ñ'¨Ô-Ø�K‰K�Mð# r+   c                 ó`   — | j                   }|j                  | _         | j                  |«       y r&   )r„   r  rÐ   )r'   rb   r„   s      r)   rŒ   z ExpatBuilder.end_element_handler…  s&   € Ø—,‘,ˆØ×)Ñ)ˆŒØ× Ñ  Õ)r+   c                 ó^  — | j                   j                  |j                  «      }|r| j                  ||«       | j                  rh|| j
                  j                  u ry | j                  j                  |«      t        k(  r,| j                  j                  |«       |j                  «        y y y r&   )r…   Úgetr$   Ú_handle_white_text_nodesrq   rƒ   r¬   rÄ   rÅ   r„   rÓ   r  )r'   r„   r9   s      r)   rÐ   z ExpatBuilder._finish_end_elementŠ  s‡   € Ø�‰×"Ñ" 7§?¡?Ó3ˆÙØ×)Ñ)¨'°4Ô8Ø�<Š<Ø˜$Ÿ-™-×7Ñ7Ñ7ØØ�|‰|×&Ñ& wÓ/´=Ò@Ø—‘×(Ñ(¨Ô1Ø—‘Õ ð Að r+   c                 ó(  — | j                   j                  s|j                  «       sy g }|j                  D ]B  }|j                  t
        k(  sŒ|j                  j                  «       rŒ2|j                  |«       ŒD |D ]  }|j                  |«       Œ y r&   )
rn   Úwhitespace_in_element_contentrE   rÆ   rÙ   rÝ   rÕ   Ústriprä   rÓ   )r'   rÖ   r9   ÚLré   s        r)   r	  z%ExpatBuilder._handle_white_text_nodes•  s}   € Ø�M‰M×7Ò7Ø×(Ñ(Ô*Øð
 ˆØ—_‘_ò 	 ˆEØ�~‰~¤Ó*°5·:±:×3CÑ3CÕ3EØ—‘˜•ð	 ð
 ò 	$ˆEØ×Ñ˜UÕ#ñ	$r+   c                 óœ   — | j                   j                  |«      }|€t        ||«      | j                   |<   y |j                  �J ‚||_        y r&   )r…   r  r    r#   )r'   rb   r(   r9   s       r)   r£   z!ExpatBuilder.element_decl_handler¦  sG   € Ø�‰×"Ñ" 4Ó(ˆØˆ<Ü$/°°eÓ$<ˆD�O‰O˜DÒ!à—;‘;Ð&Ð&Ð&ØˆD�Kr+   c           
      ó¸   — | j                   j                  |«      }|€t        |«      }|| j                   |<   |j                  j	                  d |d d |d||g«       y ©Nr   )r…   r  r    r"   rä   )r'   Úelemrb   rD   ÚdefaultÚrequiredr9   s          r)   r¥   z!ExpatBuilder.attlist_decl_handler®  sZ   € Ø�‰×"Ñ" 4Ó(ˆØˆ<Ü˜tÓ$ˆDØ$(ˆD�O‰O˜DÑ!Ø�‰×ÑØ�4˜˜t W¨a°°xÐ@õ	Br+   c                 óž   — || j                   _        || j                   _        |dk\  r&|rd| j                   _        y d| j                   _        y y )Nr   TF)rƒ   ÚversionÚencodingÚ
standalone)r'   r  r  r  s       r)   r¡   zExpatBuilder.xml_decl_handler¶  sA   € Ø 'ˆ�‰ÔØ!)ˆ�‰Ôà˜Š?ÙØ+/�—‘Õ(à+0�—‘Õ(ð	 r+   r&   ) rP   rQ   rR   Ú__doc__r*   rx   r   rt   r~   r³   r¶   r­   rˆ   rÉ   rŽ   rœ   rž   r�   r’   r•   r˜   rš   rŸ   rŠ   rö   rr   rŒ   rÐ   r	  r£   r¥   r¡   rT   r+   r)   rk   rk   …   s•   „ ñóò$ò	òò>ò.ò&ò:òOò**ò+ò*ò(	*ò8ò$9ò+ò%ò%òò5ò-ò"ò.*ò
	!ò$ò" òBó1r+   rk   c                   ó:  — e Zd ZdZdZd„ Zd„ Zd„ Zej                  e
j                  ej                  e
j                  ej                  e
j                  ej                   e
j"                  ej$                  e
j&                  ej(                  e
j*                  ej,                  e
j.                  ej0                  e
j2                  ej4                  e
j6                  ej8                  e
j:                  ej<                  e
j>                  ej@                  e
jB                  iZ"y)rp   zoWrapper around a DOMBuilderFilter which implements the checks
    to make the whatToShow filter attribute work.©ro   c                 ó   — || _         y r&   r  )r'   ro   s     r)   r*   z#FilterVisibilityController.__init__Ë  s	   € Øˆ�r+   c                 ó  — | j                   |j                     }| j                  j                  |z  rK| j                  j	                  |«      }|t
        k(  rt        ‚|t        vrt        dt        |«      z   «      ‚|S t        S )Nz)startContainer() returned illegal value: )Ú_nodetype_maskrÙ   ro   Ú
whatToShowrÿ   ÚFILTER_INTERRUPTr®   Ú_ALLOWED_FILTER_RETURNSra   Úreprrì   )r'   rÖ   ÚmaskÚvals       r)   rÿ   z)FilterVisibilityController.startContainerÎ  sz   € Ø×"Ñ" 4§=¡=Ñ1ˆØ�;‰;×!Ñ! DÒ(Ø—+‘+×,Ñ,¨TÓ2ˆCØÔ&Ò&Ü!Ð!ØÔ1Ñ1Ü ØAÄDÈÃIÑMóOð OàˆJä Ð r+   c                 óˆ  — | j                   |j                     }| j                  j                  |z  r‹| j                  j	                  |«      }|t
        k(  rt        ‚|t        k(  r7|j                  }|j                  d d  D ]  }|j                  |«       Œ t        S |t        vrt        dt        |«      z   «      ‚|S t        S )Nz%acceptNode() returned illegal value: )r  rÙ   ro   r  rÄ   r  r®   r  r  rÆ   ÚappendChildrÅ   r   ra   r!  rì   )r'   rÖ   r"  r#  Úparentré   s         r)   rÄ   z%FilterVisibilityController.acceptNodeÛ  s¹   € Ø×"Ñ" 4§=¡=Ñ1ˆØ�;‰;×!Ñ! DÒ(Ø—+‘+×(Ñ(¨Ó.ˆCØÔ&Ò&Ü!Ð!Ø”kÒ!àŸ™�Ø!Ÿ_™_©QÐ/ò .�EØ×&Ñ& uÕ-ð.ô %Ð$ØÔ1Ñ1Ü Ø=ÄÀSÃ	ÑIóKð KàˆJä Ð r+   N)#rP   rQ   rR   r  rS   r*   rÿ   rÄ   r   ÚELEMENT_NODEr   ÚSHOW_ELEMENTÚATTRIBUTE_NODEÚSHOW_ATTRIBUTErÝ   Ú	SHOW_TEXTrÚ   ÚSHOW_CDATA_SECTIONÚENTITY_REFERENCE_NODEÚSHOW_ENTITY_REFERENCEÚENTITY_NODEÚSHOW_ENTITYÚPROCESSING_INSTRUCTION_NODEÚSHOW_PROCESSING_INSTRUCTIONÚCOMMENT_NODEÚSHOW_COMMENTÚDOCUMENT_NODEÚSHOW_DOCUMENTÚDOCUMENT_TYPE_NODEÚSHOW_DOCUMENT_TYPEÚDOCUMENT_FRAGMENT_NODEÚSHOW_DOCUMENT_FRAGMENTÚNOTATION_NODEÚSHOW_NOTATIONr  rT   r+   r)   rp   rp   Å  sð   „ ñ5ð €Iòò!ò!ð* 	×Ñ¨*×*AÑ*AØ×Ñ¨*×*CÑ*CØ�‰¨*×*>Ñ*>Ø×Ñ¨*×*GÑ*GØ×"Ñ"¨*×*JÑ*JØ×Ñ¨*×*@Ñ*@Ø×(Ñ(¨*×*PÑ*PØ×Ñ¨*×*AÑ*AØ×Ñ¨*×*BÑ*BØ×Ñ¨*×*GÑ*GØ×#Ñ#¨*×*KÑ*KØ×Ñ¨*×*BÑ*Bð
�Nr+   rp   c                   ó   — e Zd ZdZd„ Zy)ÚFilterCrutch)Ú_builderÚ_levelÚ
_old_startÚ_old_endc                 óÀ   — d| _         || _        |j                  }|j                  | _        |j
                  | _        | j                  |_        | j                  |_        y r  )	r@  r?  rs   r‹   rA  r�   rB  rö   rŒ   )r'   rW   r¨   s      r)   r*   zFilterCrutch.__init__  sO   € ØˆŒØˆŒØ—‘ˆØ ×4Ñ4ˆŒØ×0Ñ0ˆŒØ%)×%?Ñ%?ˆÔ"Ø#'×#;Ñ#;ˆÕ r+   N)rP   rQ   rR   rS   r*   rT   r+   r)   r>  r>  ÿ  s   „ Ø>€Ió<r+   r>  c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)r   rT   c                 óp   — t         j                  | |«       |j                  }dD ]  }t        ||d «       Œ y )N)r�   r–   r�   r™   r›   r    )r>  r*   rs   Úsetattr)r'   rW   r¨   rb   s       r)   r*   zRejecter.__init__  s:   € Ü×Ñ˜d GÔ,Ø—‘ˆðò 	(ˆDô �F˜D $Õ'ñ	(r+   c                 ó,   — | j                   dz   | _         y ró   )r@  ©r'   Úargss     r)   rö   zRejecter.start_element_handler  s   € Ø—k‘k A‘oˆ�r+   c                 óò   — | j                   dk(  rT| j                  j                  }| j                  j                  |«       | j                  |_        | j                  |_        y | j                   dz
  | _         y ©Nr   r3   )r@  r?  rs   r~   rA  r‹   rB  r�   )r'   rI  r¨   s      r)   rŒ   zRejecter.end_element_handler  sV   € Ø�;‰;˜!Òà—]‘]×*Ñ*ˆFØ�M‰M×!Ñ! &Ô)Ø)-¯©ˆFÔ&Ø'+§}¡}ˆFÕ$àŸ+™+¨™/ˆD�Kr+   N)rP   rQ   rR   rS   r*   rö   rŒ   rT   r+   r)   r   r     s   „ Ø€Iò
(ò&ó*r+   r   c                   ó   — e Zd ZdZd„ Zd„ Zy)r  rT   c                 ó¨   — | j                   j                  } | j                  |Ž  | j                   j                  |ur| j                  dz   | _        y y ró   )r?  r„   rA  r@  )r'   rI  rÖ   s      r)   rö   zSkipper.start_element_handler*  sE   € Ø�}‰}×$Ñ$ˆØˆ�‰˜ÑØ�=‰=× Ñ ¨Ñ,ØŸ+™+¨™/ˆD�Kð -r+   c                 ó  — | j                   dk(  rR| j                  | j                  j                  _        | j
                  | j                  j                  _        d | _        y | j                   dz
  | _          | j
                  |Ž  y rK  )r@  rA  r?  rs   r‹   rB  r�   rH  s     r)   rŒ   zSkipper.end_element_handler0  s`   € Ø�;‰;˜!Òð 9=¿¹ˆD�M‰M×!Ñ!Ô5Ø6:·m±mˆD�M‰M×!Ñ!Ô3Ø ˆD�MàŸ+™+¨™/ˆDŒKØˆD�M‰M˜4Ò r+   N)rP   rQ   rR   rS   rö   rŒ   rT   r+   r)   r  r  '  s   „ Ø€Iò*ó	!r+   r  z8http://xml.python.org/entities/fragment-builder/internalzŠ<!DOCTYPE wrapper
  %%s [
  <!ENTITY fragment-builder-internal
    SYSTEM "%s">
%%s
]>
<wrapper %%s
>&fragment-builder-internal;</wrapper>c                   ó<   — e Zd ZdZd
d„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
y)ÚFragmentBuilderzñBuilder which constructs document fragments given XML source
    text and a context node.

    The context node is expected to provide information about the
    namespace declarations which are in scope at the start of the
    fragment.
    Nc                 ó¤   — |j                   t        k(  r|| _        || _        n|j                  | _        || _        t
        j                  | |«       y r&   )rÙ   r5  ÚoriginalDocumentrô   rÃ   rk   r*   )r'   rô   ru   s      r)   r*   zFragmentBuilder.__init__X  sD   € Ø×Ñœ}Ò,Ø$+ˆDÔ!Ø"ˆD�Là$+×$9Ñ$9ˆDÔ!Ø"ˆDŒLÜ×Ñ˜d GÕ,r+   c                 ó<   — t         j                  | «       d | _        y r&   )rk   rt   Úfragmentr-   s    r)   rt   zFragmentBuilder.reseta  s   € Ü×Ñ˜4Ô Øˆ�r+   c                 ó@   — | j                  |j                  «       «      S )zRParse a document fragment from a file object, returning the
        fragment node.)r¶   rª   ©r'   r¯   s     r)   r³   zFragmentBuilder.parseFilee  s   € ð ×Ñ §	¡	£Ó,Ð,r+   c                 óö  — || _         | j                  «       }| j                  j                  }d}|rd|j                  xs | j                  «       }|j                  rd|j                  ›d|j                  ›d�}n|j                  rd|j                  z  }nd}| j                  «       }t        |||fz  }	 |j                  |d«       | j                  }| j                  «        |S #  | j                  «        ‚ xY w)zMParse a document fragment from a string, returning the
        fragment node.Ú zPUBLIC "z" "ú"zSYSTEM "%s"T)Ú_sourcer   rR  r¸   r»   Ú_getDeclarationsrÍ   rÌ   Ú_getNSattrsÚ_FRAGMENT_BUILDER_TEMPLATEr«   rt   rT  )	r'   rµ   r¨   r¸   Úidentr½   Únsattrsrƒ   rT  s	            r)   r¶   zFragmentBuilder.parseStringj  sç   € ð ˆŒØ—‘Ó!ˆØ×'Ñ'×/Ñ/ˆØˆÙØ×+Ñ+ÒF¨t×/DÑ/DÓ/FˆFØ×Óà#×,Ó,¨g×.>Ó.>ð@‘à×!Ò!Ø%¨×(8Ñ(8Ñ8‘àˆFØ×"Ñ"Ó$ˆÜ-°¸ÀÐ0HÑHˆð	Ø�L‰L˜ 4Ô(ð —=‘=ˆØ�
‰
Œàˆøð	Ø�J‰JŒLØús   Â5C% Ã%C8c                 ó:  — | j                   j                  j                  }d}|�rut        |j                  j
                  «      D ]s  }|j                  j                  |«      }|r|dz   }|›d|j                  ›�}|j                  r |›d|j                  ›d|j                  ›d�}Œb|›d|j                  ›d�}Œu t        |j                  j
                  «      D ]¾  }|j                  j                  |«      }|r|dz   }|›d|j                  ›�}|j                  r |›d|j                  ›d|j                  ›d	�}n;|j                  r|›d|j                  ›d	�}n|›d
|j                  j                  ›d	�}|j                  r|›d|j                  ›�}|dz   }ŒÀ |S )z Re-create the internal subset from the DocumentType node.

        This is only needed if we don't already have the
        internalSubset as a string.
        rX  z
  z<!NOTATION z	 PUBLIC "z"
             "z">z	 SYSTEM "z	<!ENTITY rY  z "z
 NOTATION ú>)rô   rÃ   r¸   rú   rÈ   ÚlengthÚitemÚnodeNamerÍ   rÌ   r   Ú
firstChildrÕ   rè   )r'   r¸   rX   rü   Únotationr   s         r)   r[  z FragmentBuilder._getDeclarations†  so  € ð —,‘,×,Ñ,×4Ñ4ˆØˆÚÜ˜7×,Ñ,×3Ñ3Ó4ò 	C�Ø"×,Ñ,×1Ñ1°!Ó4�ÙØ˜F™
�AÚ)*¨H×,=Ò,=Ð>�Ø×$Ò$â˜h×/Ó/°×1BÓ1BðD‘Aò ./°×0AÓ0AÐB‘Að	Cô ˜7×+Ñ+×2Ñ2Ó3ò �Ø ×)Ñ)×.Ñ.¨qÓ1�ÙØ˜F™
�AÚ'(¨&¯/ª/Ð:�Ø—?’?â˜fŸo›o¨v¯«ð@‘Aà—_’_Ú,-¨v¯«Ð?‘Aâ%&¨×(9Ñ(9×(>Ó(>Ð?�AØ×&Ò&Ú,-¨v×/BÒ/BÐC�AØ˜‘G‘ðð ˆr+   c                  ó   — y)NrX  rT   r-   s    r)   r\  zFragmentBuilder._getNSattrsª  s   € Ør+   c                 óÈ  — |t         k(  r§| j                  }| j                  }| j                  j	                  |«      }| j
                  | _        | j                  j                  «       | _        | j                  | _        	 |j                  | j                  d«       || _        || _        d | _	        yt        j                  | ||||«      S # || _        || _        d | _	        w xY w)NTrÀ   )Ú$_FRAGMENT_BUILDER_INTERNAL_SYSTEM_IDrƒ   r„   rs   ÚExternalEntityParserCreaterR  ÚcreateDocumentFragmentrT  r«   rZ  rk   rŸ   )r'   rô   rç   rÌ   rÍ   Úold_documentÚold_cur_noder¨   s           r)   rŸ   z+FragmentBuilder.external_entity_ref_handler­  sÅ   € ØÔ;Ò;ð  Ÿ=™=ˆLØŸ<™<ˆLØ—\‘\×<Ñ<¸WÓEˆFà ×1Ñ1ˆDŒMØ ŸM™M×@Ñ@ÓBˆDŒMØŸ=™=ˆDŒLð$Ø—‘˜TŸ\™\¨4Ô0à+�”Ø ,�”Ø#�”Øä×;Ñ;Ø�g˜t X¨xó9ð 9øð  ,�”Ø ,�”Ø#�•ús   Á?C
 Ã
C!r&   )rP   rQ   rR   r  r*   rt   r³   r¶   r[  r\  rŸ   rT   r+   r)   rP  rP  O  s+   „ ñó-òò-ò
ò8"òHó9r+   rP  c                   ó6   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Z	 d„ Z	y)	Ú
Namespacesz7Mix-in class for builders; adds support for namespaces.c                 ó   — g | _         y r&   )Ú_ns_ordered_prefixesr-   s    r)   Ú_initNamespaceszNamespaces._initNamespacesÇ  s   € ð %'ˆÕ!r+   c                 ó@   — t        j                  d¬«      }d|_        |S )z'Create a new namespace-handling parser.r[   )Únamespace_separatorT)r	   rw   Únamespace_prefixesr§   s     r)   rx   zNamespaces.createParserÌ  s   € ä×#Ñ#¸Ô<ˆØ$(ˆÔ!Øˆr+   c                 ó€   — t         j                  | |«       | j                  j                  r| j                  |_        yy)z.Insert the namespace-handlers onto the parser.N)rk   r~   rn   Únamespace_declarationsÚstart_namespace_decl_handlerÚStartNamespaceDeclHandlerr§   s     r)   r~   zNamespaces.installÒ  s5   € ä×Ñ˜T 6Ô*Ø�=‰=×/Ò/à×1Ñ1ð Õ,ð 0r+   c                 ó>   — | j                   j                  ||f«       y)z/Push this namespace declaration on our storage.N)rq  rä   )r'   rg   re   s      r)   rx  z'Namespaces.start_namespace_decl_handlerÙ  s   € à×!Ñ!×(Ñ(¨&°#¨Õ7r+   c                 óÒ  — d|v rt        | |«      \  }}}}nt        }|}d }t        }t        j                  ||||«      }| j
                  |_        t        | j                  |«       || _        | j                  r“| j                  D ]u  \  }}|r*t        j                  t        | d|z   «      t        |d«      }n t        j                  dt        dt        «      }||_        | j
                  |_        t        ||«       Œw | j                  d d …= |rÚ|j                  «        |j                   }	|j"                  }
t%        dt'        |«      d«      D ]˜  }||   }||dz      }d|v r6t        | |«      \  }}}}t        j                  ||||«      }||	|<   ||
||f<   n0t        j                  |t        |t        «      }||	|<   ||
t        |f<   | j
                  |_        ||_        ||_        Œš y y )Nr[   úxmlns:Úxmlnsr   r^   r3   )ri   r   r   r   ÚElementrƒ   rÃ   r
   r„   rq  rû   rY   r   rß   r   Ú_ensure_attributesÚ_attrsÚ_attrsNSrú   r`   ÚownerElement)r'   rb   r÷   re   rf   rg   rh   rÖ   rý   r€  r�  rü   r8   rß   s                 r)   rö   z Namespaces.start_element_handlerÝ  sÝ  € Ø�$‰;Ü,:¸4ÀÓ,FÑ)ˆC�˜F¡Eä!ˆCØˆEØˆIÜ!ˆFÜ�‰˜u c¨6°9Ó=ˆØ!Ÿ]™]ˆÔÜ�d—l‘l DÔ)ØˆŒà×$Ò$Ø#×8Ñ8ò 	-‘�˜ÙÜŸ™¤W¨T°8¸fÑ3DÓ%EÜ%4°f¸góG‘Aô  Ÿ™ W¬oØ%,¬ló<�Aà�”Ø"&§-¡-�”Ü# D¨!Õ,ð	-ð ×)Ñ)ª!Ð,áØ×#Ñ#Ô%Ø—[‘[ˆFØ—}‘}ˆHÜ˜1œc *›o¨qÓ1ò &�Ø" 1™�Ø" 1 Q¡3™�Ø˜%‘<Ü4BÀ4ÈÓ4OÑ1�C˜ F¨EÜŸ™ U¨C°¸FÓC�AØ$%�F˜5‘MØ12�H˜c 9Ð-Ò.äŸ™ U¬OØ%*¬Ló:�Aà$%�F˜5‘MØ9:�Hœo¨uÐ5Ñ6Ø"&§-¡-�”Ø�”Ø!%�•ñ&ð	 r+   c                 óR  — | j                   }d|v rEt        | |«      \  }}}}|j                  |k(  r|j                  |k(  r|j                  |k(  s7J d«       ‚|j
                  |k(  sJ d«       ‚|j                  t        k(  sJ d«       ‚|j                  | _         | j                  |«       y )Nr[   z$element stack messed up! (namespace)z&element stack messed up - bad nodeNamez*element stack messed up - bad namespaceURI)	r„   ri   r=   r>   rg   rd  r   r  rÐ   )r'   rb   r„   re   rf   rg   rh   s          r)   rŒ   zNamespaces.end_element_handler  sÀ   € Ø—l‘lˆGØ�d‰{Ü0>¸tÀTÓ0JÑ-��Y ¨Ø×,Ñ,°Ò3Ø#×-Ñ-°Ò:Ø#ŸN™N¨fÒ4ð?ð ?ó?ð 5ð
 ×'Ñ'¨4Ò/ð @Ø?ó@Ð/à×+Ñ+¬Ò>ð DØCóDÐ>à"×-Ñ-ˆDŒLØ×$Ñ$ WÕ-r+   N)
rP   rQ   rR   r  rr  rx   r~   rx  rö   rŒ   rT   r+   r)   ro  ro  Ä  s)   „ ÙAò'ò
ò3ò8ò-&ð^ ó	.r+   ro  c                   ó   — e Zd ZdZd„ Zy)ÚExpatBuilderNSz*Document builder that supports namespaces.c                 óN   — t         j                  | «       | j                  «        y r&   )rk   rt   rr  r-   s    r)   rt   zExpatBuilderNS.reset&  s   € Ü×Ñ˜4Ô Ø×ÑÕr+   N)rP   rQ   rR   r  rt   rT   r+   r)   r…  r…  #  s
   „ Ù4ór+   r…  c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚFragmentBuilderNSz*Fragment builder that supports namespaces.c                 óN   — t         j                  | «       | j                  «        y r&   )rP  rt   rr  r-   s    r)   rt   zFragmentBuilderNS.reset.  s   € Ü×Ñ˜dÔ#Ø×ÑÕr+   c                 ó  — d}| j                   }g }|rtt        |d«      rY|j                  j                  «       D ]<  \  }}||v rŒ|j	                  |«       |rd|z   }nd}|r|›d|›d|›d�}Œ4d|›d|›d�}Œ> |j
                  }|rŒt|S )	zNReturn string of namespace attributes from this element and
        ancestors.rX  Ú_ns_prefix_urir|  r}  z
    z='ú'r[   )rô   Úhasattrr‹  Úitemsrä   r  )r'   Úattrsrô   r  rg   re   Údeclnames          r)   r\  zFragmentBuilderNS._getNSattrs2  s¨   € ð ˆØ—,‘,ˆØˆÙÜ�wÐ 0Ô1Ø#*×#9Ñ#9×#?Ñ#?Ó#Aò =‘K�F˜Cà ‘{Ø Ø—H‘H˜VÔ$ÙØ#+¨fÑ#4™à#*˜ÙÚ5:ºHÂcÐ J™ð ò /7ºÐ <™ð=ð ×(Ñ(ˆGò ð  ˆr+   N)rP   rQ   rR   r  rt   r\  rT   r+   r)   rˆ  rˆ  +  s   „ Ù4òór+   rˆ  c                   ó   — e Zd ZdZy)r®   zEException raised to short-circuit parsing in InternalSubsetExtractor.N)rP   rQ   rR   r  rT   r+   r)   r®   r®   P  s   „ ÙOØr+   r®   c                   ó>   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zy)
r¹   zBXML processor which can rip out the internal document type subset.Nc                 ó   — | j                   S )z'Return the internal subset as a string.)r½   r-   s    r)   rº   z!InternalSubsetExtractor.getSubsetY  s   € à�{‰{Ðr+   c                 óP   — 	 t         j                  | |«       y # t        $ r Y y w xY wr&   )rk   r³   r®   rV  s     r)   r³   z!InternalSubsetExtractor.parseFile]  s)   € ð	Ü×"Ñ" 4¨Õ.øÜò 	Ùð	úó   ‚ ™	%¤%c                 óP   — 	 t         j                  | |«       y # t        $ r Y y w xY wr&   )rk   r¶   r®   )r'   rµ   s     r)   r¶   z#InternalSubsetExtractor.parseStringc  s)   € ð	Ü×$Ñ$ T¨6Õ2øÜò 	Ùð	úr•  c                 óH   — | j                   |_        | j                  |_        y r&   )rˆ   r‰   rö   r‹   r§   s     r)   r~   zInternalSubsetExtractor.installi  s   € Ø)-×)HÑ)HˆÔ&Ø%)×%?Ñ%?ˆÕ"r+   c                 ó¢   — |rD| j                  «       }g | _        | j                  j                  |_        | j                  |_        y t        «       ‚r&   )r   r½   rä   ÚDefaultHandlerrÉ   rÊ   r®   )r'   rb   rÍ   rÌ   rÎ   r¨   s         r)   rˆ   z2InternalSubsetExtractor.start_doctype_decl_handlerm  s@   € áØ—^‘^Ó%ˆFØˆDŒKØ$(§K¡K×$6Ñ$6ˆFÔ!Ø+/×+HÑ+HˆFÕ(ä“-Ðr+   c                 óš   — dj                  | j                  «      j                  dd«      j                  dd«      }|| _        t        «       ‚)NrX  z
ú
ú)Újoinr½   Úreplacer®   )r'   rX   s     r)   rÉ   z0InternalSubsetExtractor.end_doctype_decl_handlerw  s=   € Ø�G‰G�D—K‘KÓ ×(Ñ(¨°Ó6×>Ñ>¸tÀTÓJˆØˆŒÜ‹mÐr+   c                 ó   — t        «       ‚r&   )r®   )r'   rb   r�  s      r)   rö   z-InternalSubsetExtractor.start_element_handler|  s
   € Ü‹mÐr+   )rP   rQ   rR   r  r½   rº   r³   r¶   r~   rˆ   rÉ   rö   rT   r+   r)   r¹   r¹   T  s.   „ ÙLà€Fòòòò@ò òó
r+   r¹   c                 óà   — |rt        «       }n
t        «       }t        | t        «      r(t	        | d«      5 }|j                  |«      }ddd«       |S |j                  | «      }|S # 1 sw Y   S xY w)z{Parse a document, returning the resulting Document node.

    'file' may be either a file name or an open file object.
    ÚrbN)r…  rk   Ú
isinstanceÚstrÚopenr³   )r¯   Ú
namespacesrW   ÚfpÚresults        r)   Úparser¨  €  sq   € ñ
 Ü Ó"‰ä“.ˆä�$œÔÜ�$˜Óð 	+ Ø×&Ñ& rÓ*ˆF÷	+ð €Mð ×"Ñ" 4Ó(ˆØ€M÷		+ð €Mús   ´A#Á#A-c                 óR   — |rt        «       }n
t        «       }|j                  | «      S )zOParse a document from a string, returning the resulting
    Document node.
    )r…  rk   r¶   )rµ   r¥  rW   s      r)   r¶   r¶   ’  s'   € ñ Ü Ó"‰ä“.ˆØ×Ñ˜vÓ&Ð&r+   c                 óä   — |rt        |«      }nt        |«      }t        | t        «      r(t	        | d«      5 }|j                  |«      }ddd«       |S |j                  | «      }|S # 1 sw Y   S xY w)zìParse a fragment of a document, given the context from which it
    was originally extracted.  context should be the parent of the
    node(s) which are in the fragment.

    'file' may be either a file name or an open file object.
    r¡  N)rˆ  rP  r¢  r£  r¤  r³   )r¯   rô   r¥  rW   r¦  r§  s         r)   ÚparseFragmentr«  �  sv   € ñ Ü# GÓ,‰ä! 'Ó*ˆä�$œÔÜ�$˜Óð 	+ Ø×&Ñ& rÓ*ˆF÷	+ð €Mð ×"Ñ" 4Ó(ˆØ€M÷		+ð €Mús   ¶A%Á%A/c                 óV   — |rt        |«      }nt        |«      }|j                  | «      S )z¼Parse a fragment of a document from a string, given the context
    from which it was originally extracted.  context should be the
    parent of the node(s) which are in the fragment.
    )rˆ  rP  r¶   )rµ   rô   r¥  rW   s       r)   ÚparseFragmentStringr­  ±  s,   € ñ
 Ü# GÓ,‰ä! 'Ó*ˆØ×Ñ˜vÓ&Ð&r+   c                 óF   — | j                   rt        | «      S t        | «      S )z,Create a builder based on an Options object.)r¥  r…  rk   )ru   s    r)   ÚmakeBuilderr¯  ½  s!   € à×ÒÜ˜gÓ&Ð&ä˜GÓ$Ð$r+   )T)3r  Úxml.domr   r   r   r   r   r   Úxml.parsersr	   Úxml.dom.minidomr
   r   Úxml.dom.NodeFilterr   rÝ   rÚ   r5  ÚDOMBuilderFilterrì   rÅ   r  r  ÚgetDOMImplementationr�   ÚTypeInfor6   Úobjectr    rY   ri   rk   r   rp   r>  r   r  ri  r]  rP  ro  r…  rˆ  Ú	Exceptionr®   r¹   r¨  r¶   r«  r­  r¯  rT   r+   r)   ú<module>r¹     s/  ðñ÷: .Ñ -ß BÑ BÝ ß >Ý )à�N‰N€	Ø×,Ñ,Ð Ø×"Ñ"€à×+Ñ+×9Ñ9€Ø×+Ñ+×9Ñ9€Ø×)Ñ)×5Ñ5€Ø×.Ñ.×?Ñ?Ð à3�w×3Ñ3Ó5Ð ð !�× Ñ   wÓ/Ø �× Ñ   }Ó5Ø �× Ñ   xÓ0Ø �× Ñ   zÓ2Ø �× Ñ   tÓ,Ø �× Ñ   wÓ/Ø �× Ñ   xÓ0Ø �× Ñ   yÓ1Ø �× Ñ   zÓ2ñ
€ô1(�&ô 1(òf,ò6÷&y1ñ y1ð|	 )¨-¸ÐEÐ ô7
 ô 7
ôt
<�6ô 
<ô*ˆ|ô *ô8!ˆlô !ð2 ?ð %ð*ð +ñ	+ð ôr9�lô r9÷j\.ñ \.ô~�Z ô ô"˜
 Oô "ôJ	�)ô 	ô)˜lô )óXó$'óó(	'ó%r+   