§
    ¸)ýf·‹  ã                   óÂ  — 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j        dd¦  «         ej        dd	¦  «         ej        dd
¦  «         ej        dd¦  «         ej        dd¦  «         ej        dd¦  «         ej        dd¦  «         ej        dd¦  «         ej        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-d4d/„Z.d4d0„Z/d4d1„Z0d4d2„Z1d3„ Z2dS )5z™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                   óJ   — 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S )ÚElementInfo©Ú
_attr_infoÚ_modelÚtagNameNc                 ó0   — || _         g | _        || _        d S ©N)r$   r"   r#   )Úselfr$   Úmodels      ú`/home/blender/git/blender-v430/install_release/4.3/python/lib/python3.11/xml/dom/expatbuilder.pyÚ__init__zElementInfo.__init__?   s   € ØˆŒØˆŒØˆŒˆˆó    c                 ó*   — | j         | j        | j        fS r&   r!   ©r'   s    r)   Ú__getstate__zElementInfo.__getstate__D   s   € ØŒ ¤¨T¬\Ð9Ð9r+   c                 ó0   — |\  | _         | _        | _        d S r&   r!   )r'   Ústates     r)   Ú__setstate__zElementInfo.__setstate__G   s   € Ø5:Ñ2ˆŒ˜œ d¤l l lr+   c                 ó¶   — | j         D ]F}|d         |k    r8|d         }|d         dk    rt          d         c S t          |d                  c S ŒGt          j        S )Né   éþÿÿÿr   ú(r   )r"   Ú_typeinfo_mapr   Ú_no_type)r'   ÚanameÚinfoÚts       r)   ÚgetAttributeTypezElementInfo.getAttributeTypeJ   sn   € Ø”Oð 	3ð 	3ˆDØ�AŒw˜%ÒÐØ˜”H�Ø�Q”4˜3’;�;Ý(¨Ô0Ð0Ð0Ð0å(¨¨b¬Ô2Ð2Ð2Ð2ð  õ ÔÐr+   c                 ó   — t           j        S r&   )r   r7   )r'   ÚnamespaceURIÚ	localNames      r)   ÚgetAttributeTypeNSzElementInfo.getAttributeTypeNST   s   € ÝÔÐr+   c                 óv   — | j         r1| j         d         }|t          j        j        t          j        j        fvS dS ©Nr   F)r#   r	   r(   ÚXML_CTYPE_ANYÚXML_CTYPE_MIXED)r'   Útypes     r)   ÚisElementContentzElementInfo.isElementContentW   s?   € ØŒ;ð 	Ø”;˜q”>ˆDØ¥¤Ô 9Ý %¤Ô ;ð =ð =ð =ð �5r+   c                 óT   — | j         r | j         d         t          j        j        k    S dS rA   )r#   r	   r(   ÚXML_CTYPE_EMPTYr-   s    r)   ÚisEmptyzElementInfo.isEmpty_   s'   € ØŒ;ð 	Ø”;˜q”>¥U¤[Ô%@Ò@Ð@à�5r+   c                 óN   — | j         D ]}|d         |k    r|d         dk    c S ŒdS )Nr3   r4   r   F)r"   )r'   r8   r9   s      r)   ÚisIdzElementInfo.isIde   sA   € Ø”Oð 	(ð 	(ˆDØ�AŒw˜%ÒÐØ˜B”x 4Ò'Ð'Ð'Ð'ð  àˆur+   c                 ó0   — |                       ||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    <   s¥   € € € € € Ø1€Iðð ð ð ð
:ð :ð :ð;ð ;ð ;ð ð  ð  ð ð  ð  ðð ð ðð ð ðð ð ð(ð (ð (ð (ð (r+   r    c                 ó.   — |                       ||¦  «        S r&   )Ú_intern_setdefault)ÚbuilderÚss     r)   Ú_internrY   o   s   € Ø×%Ò% a¨Ñ+Ô+Ð+r+   c                 óp  — d|v sJ ‚|                      d¦  «        }| j        }t          |¦  «        dk    r2|\  }}} |||¦  «        }|›d|›�} |||¦  «        } |||¦  «        }n@t          |¦  «        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ŒO€EØÔ'€FÝ
ˆ5�z„z�Q‚€Ø!&ÑˆˆY˜Ø�˜ Ñ'Ô'ˆØ!˜6˜6 9 9Ð-ˆØ��u˜eÑ$Ô$ˆØ�F˜9 iÑ0Ô0ˆ	ˆ	Ý	ˆU‰Œ�qŠˆØ‰ˆˆYÝˆØ"˜F 9¨iÑ8Ô8Ð8ˆ�	�	åÐOÐRVÑVÑWÔWÐWØˆ6�#�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dS ) ÚExpatBuilderzPDocument builder that uses Expat to build a ParsedXML.DOM document
    instance.Nc                 óð   — |€t          j        ¦   «         }|| _        | j        j        �t	          | j        j        ¦  «        | _        nd | _        t          | _        d | _        |  	                    ¦   «          d S r&   )
r   ÚOptionsÚ_optionsÚfilterÚFilterVisibilityControllerÚ_filterr   Ú_finish_start_elementÚ_parserÚreset)r'   Úoptionss     r)   r*   zExpatBuilder.__init__‰   sf   € Øˆ?Ý Ô(Ñ*Ô*ˆGØˆŒØŒ=ÔÐ+Ý5°d´mÔ6JÑKÔKˆDŒLˆ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                 óø   — | j         sm|                      ¦   «         | _         | j         j        j        | _        d| j         _        d| j         _        d| 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›   si   € àŒ|ð 	'Ø×,Ò,Ñ.Ô.ˆDŒLØ&*¤lÔ&9Ô&DˆDÔ#Ø'+ˆDŒLÔ$Ø.2ˆDŒLÔ+Ø04ˆDŒLÔ-Ø�LŠL˜œÑ&Ô&Ð&ØŒ|Ðr+   c                 óš   — t                                t          dd¦  «        | _        | j        | _        | j        j        | _        d| _        dS )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ˆŒØˆŒˆˆr+   c                 ó¸  — | j         |_        | j        |_        | j        |_        | j        |_        | j        j	        r| j
        |_        | j        |_        | j        j        r| j        |_        | j        j        r%| j        |_        | j        |_        | j        |_        n| j        |_        | j        |_        | j        |_        | j        |_        | j        |_         dS )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ˆÔ&Ø%)Ô%?ˆÔ"Ø#'Ô#;ˆÔ Ø.2¬oˆÔ+ØŒ=Ô!ð 	@Ø'+Ô'?ˆFÔ$Ø%)Ô%?ˆÔ"ØŒ=Ô!ð 	9Ø$(Ô$8ˆFÔ!ØŒ=Ô'ð 	FØ.2Ô.NˆFÔ+Ø,0Ô,JˆFÔ)Ø*.Ô*KˆFÔ'Ð'à*.Ô*EˆFÔ'Ø*.Ô*JˆÔ'Ø $Ô 5ˆÔØ$(Ô$=ˆÔ!Ø$(Ô$=ˆÔ!Ð!Ð!r+   c                 óp  — |                       ¦   «         }d}	 	 |                     d¦  «        }|sn<|                     |d¦  «         |r!| j        j        r|                      |¦  «         d}ŒT|                     dd¦  «         n# t          $ r Y nw xY w| j        }|                      ¦   «          d| _        |S )zIParse a document from a file object, returning the document
        node.Tr3   i @  Fr+   N)	r   ÚreadÚParserƒ   ÚdocumentElementÚ_setup_subsetÚParseEscapert   rs   )r'   Úfiler¨   Úfirst_bufferÚbufferÚdocs         r)   Ú	parseFilezExpatBuilder.parseFileÅ   sÝ   € ð —’Ñ!Ô!ˆØˆð	ð%ØŸš 7Ñ+Ô+�Øð ØØ—’˜V UÑ+Ô+Ð+Øð / D¤MÔ$Að /Ø×&Ò& vÑ.Ô.Ð.Ø$�ð%ð �LŠL˜˜dÑ#Ô#Ð#Ð#øÝð 	ð 	ð 	ØˆDð	øøøàŒmˆØ�
Š
‰ŒˆØˆŒØˆ
s   ˜A+B Â
BÂBc                 óì   — |                       ¦   «         }	 |                     |d¦  «         |                      |¦  «         n# t          $ r Y nw xY w| j        }|                      ¦   «          d| _        |S )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Û   s�   € à—’Ñ!Ô!ˆð	Ø�LŠL˜ Ñ&Ô&Ð&Ø×Ò˜vÑ&Ô&Ð&Ð&øÝð 	ð 	ð 	ØˆDð	øøøàŒmˆØ�
Š
‰ŒˆØˆŒØˆ
s   –+A Á
AÁAc                 ó²   — | j         j        rJt          ¦   «         }|                     |¦  «         |                     ¦   «         }|| j         j        _        dS dS )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è   s\   € àŒ=Ô ð 	:Ý/Ñ1Ô1ˆIØ×!Ò! &Ñ)Ô)Ð)Ø×(Ò(Ñ*Ô*ˆFØ39ˆDŒMÔ!Ô0Ð0Ð0ð		:ð 	:r+   c                 óê  — | j         j                             |||¦  «        }| j         |_        t	          | j         |¦  «         || j         _        | j        rV| j                             |¦  «        t          k    r3d | j         _        | j         j	        d= d }d | j
        _        d | j
        _        |rE|�g |j        _        g |j        _        d | j
        _        d | j
        _        | j        | j
        _        d S d S ©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 WÑ-Ô-Ð-Ø 'ˆŒÔØŒ<ð 	4˜DœL×3Ò3°GÑ<Ô<ÅÒMÐMØ$(ˆDŒMÔ!Ø”Ô(¨Ð,ØˆGØ-1ˆDŒLÔ*Ø/3ˆDŒLÔ,Øð 	OØÐ"Ø(*�Ô Ô%Ø)+�Ô!Ô&Ø*.ˆDŒLÔ'Ø8<ˆDŒLÔ5Ø15Ô1NˆDŒLÔ.Ð.Ð.ð	Oð 	Or+   c                 óž   — | j         j        r| j        | j        _        | j        | j        _        | j        s| j        st          | _
        d S d S d S r&   )rn   r”   r•   rs   r–   rŽ   r�   r…   rq   r   Ú_finish_end_elementr-   s    r)   rÉ   z%ExpatBuilder.end_doctype_decl_handler  s]   € ØŒ=Ô!ð 	?Ø*.Ô*>ˆDŒLÔ'Ø48´OˆŒÔ1Ø”ð 	* 4¤<ð 	*Ý')ˆDÔ$Ð$Ð$ð	*ð 	*ð 	*ð 	*r+   c                 óö   — | j                              ||¦  «        }t          | j        |¦  «         | j        r?| j                             |¦  «        t          k    r| j                             |¦  «         d S d S d S r&   )rƒ   ÚcreateProcessingInstructionr
   r„   rq   rÄ   rÅ   ÚremoveChild)r'   ÚtargetÚdataÚnodes       r)   rŽ   zExpatBuilder.pi_handler  s{   € ØŒ}×8Ò8¸ÀÑFÔFˆÝ�d”l DÑ)Ô)Ð)ØŒ<ð 	+˜DœL×3Ò3°DÑ9Ô9½]ÒJÐJØŒL×$Ò$ TÑ*Ô*Ð*Ð*Ð*ð	+ð 	+ÐJÐJr+   c                 óÀ  — | j         j        }| j        r\| j        r3|d         j        t
          k    r|d                              |¦  «         d S | j                             |¦  «        }d| _        nY|r1|d         j        t          k    r|d         }|j
        |z   }||_
        d S t          j        ¦   «         }||_
        | j        |_        t          | j         |¦  «         d S )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ÐCØ˜2”×)Ò)¨$Ñ/Ô/Ð/Ø�Ø”=×3Ò3°DÑ9Ô9ˆDØ#'ˆDÔ Ð Øð 	/˜J rœNÔ3µyÒ@Ð@Ø˜b”>ˆDØ”I Ñ$ˆEØˆDŒIØˆFå”<‘>”>ˆDØˆDŒIØ!%¤ˆDÔÝ�d”l DÑ)Ô)Ð)Ð)Ð)r+   c                 ó  — | j         j        }|r/|d         j        t          k    r|d         }|j        |z   |_        d S t          j        ¦   «         }|j        |z   |_        | j        |_        t          | j         |¦  «         d S r¿   )
r„   rÆ   rÙ   rÝ   rÕ   r   rÞ   rƒ   rÃ   r
   )r'   rÕ   rÆ   rÖ   s       r)   rž   z#ExpatBuilder.character_data_handler&  s|   € Ø”\Ô,ˆ
Øð 	˜* Rœ.Ô1µYÒ>Ð>Ø˜b”>ˆDØœ	 DÑ(ˆDŒIØˆFÝŒ|‰~Œ~ˆØ”I Ñ$ˆŒ	Ø!œ]ˆÔÝ�d”l DÑ)Ô)Ð)Ð)Ð)r+   c                 ó¬  — |rd S | j         j        sd S | j                             ||||¦  «        }|�4| j                             |¦  «        }	|j                             |	¦  «         | j        j        j        j                             |¦  «         | j	        r<| j	         
                    |¦  «        t          k    r| j        j        j        j        d= d S d S d S 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_handler1  sâ   € àð 	àˆFØŒ}Ô%ð 	ØˆFØŒ}×+Ò+¨J¸Ø,4°lñDô DˆàÐð ”M×0Ò0°Ñ7Ô7ˆEØŒO×"Ò" 5Ñ)Ô)Ð)ØŒÔÔ&Ô+×2Ò2°4Ñ8Ô8Ð8ØŒ<ð 	8˜DœL×3Ò3°DÑ9Ô9½]ÒJÐJØ”Ô%Ô.Ô3°BÐ7Ð7Ð7ð	8ð 	8ÐJÐJr+   c                 ó  — | j                              |||¦  «        }| j         j        j        j                             |¦  «         | j        r<| j                             |¦  «        t          k    r| j         j        j        j        d= d S d S d S r¿   )	rƒ   Ú_create_notationr¸   rÈ   rÇ   rä   rq   rÄ   ÚFILTER_ACCEPT)r'   rè   rç   rÌ   rÍ   rÖ   s         r)   r’   z"ExpatBuilder.notation_decl_handlerC  s‡   € ØŒ}×-Ò-¨l¸HÀhÑOÔOˆØŒÔÔ'Ô,×3Ò3°DÑ9Ô9Ð9ØŒ<ð 	9˜DœL×3Ò3°DÑ9Ô9½]ÒJÐJØ”Ô%Ô/Ô4°RÐ8Ð8Ð8ð	9ð 	9ÐJÐJr+   c                 óô   — | j                              |¦  «        }t          | j        |¦  «         | j        r?| j                             |¦  «        t          k    r| j                             |¦  «         d S d S d S r&   )rƒ   ÚcreateCommentr
   r„   rq   rÄ   rÅ   rÓ   )r'   rÕ   rÖ   s      r)   r•   zExpatBuilder.comment_handlerI  sy   € ØŒ}×*Ò*¨4Ñ0Ô0ˆÝ�d”l DÑ)Ô)Ð)ØŒ<ð 	+˜DœL×3Ò3°DÑ9Ô9½]ÒJÐJØŒL×$Ò$ TÑ*Ô*Ð*Ð*Ð*ð	+ð 	+ÐJÐJr+   c                 ó"   — d| _         d| _        d S )NTF©r†   rØ   r-   s    r)   r˜   z(ExpatBuilder.start_cdata_section_handlerO  s   € ØˆŒØ$ˆÔÐÐr+   c                 ó"   — d| _         d| _        d S )NFrð   r-   s    r)   rš   z&ExpatBuilder.end_cdata_section_handlerS  s   € ØˆŒØ$ˆÔÐÐr+   c                 ó   — dS ©Nr3   rT   )r'   Úcontextrç   rÌ   rÍ   s        r)   rŸ   z(ExpatBuilder.external_entity_ref_handlerW  s   € Øˆqr+   c                 ó¢   — | j         €| j        st          | _        | j        |                      ¦   «         _        |                      ||¦  «         d S r&   )rq   r…   r   rÐ   Ústart_element_handlerr   r‹   )r'   rb   Ú
attributess      r)   rŠ   z"ExpatBuilder.first_element_handlerZ  sJ   € ØŒ<Ð¨¬ÐÝ')ˆDÔ$Ø/3Ô/Iˆ�ŠÑÔÔ,Ø×"Ò" 4¨Ñ4Ô4Ð4Ð4Ð4r+   c                 ó¬  — | j                              |¦  «        }t          | j        |¦  «         || _        |rvt	          dt          |¦  «        d¦  «        D ]W}t          j        ||         t          d t          ¦  «        }||dz            }||_
        | j         |_        t          ||¦  «         ŒX|| j         j        ur|                      |¦  «         d S d S )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Ô0ˆÝ�d”l DÑ)Ô)Ð)ØˆŒàð 	-Ý˜1�c *™oœo¨qÑ1Ô1ð -ð -�Ý”L ¨A¤µØ!%¥|ñ5ô 5�à" 1 Q¡3œ�Ø�”Ø"&¤-�”Ý# D¨!Ñ,Ô,Ð,Ð,à�t”}Ô4Ð4Ð4Ø×&Ò& tÑ,Ô,Ð,Ð,Ð,ð 5Ð4r+   c                 óP  — | j         rž|| j        j        u rd S | j                              |¦  «        }|t          k    rt          | ¦  «         n|t          k    rt          | ¦  «         nd S |j        | _	        |j         
                    |¦  «         |                     ¦   «          d S d S r&   )rq   rƒ   r¬   ÚstartContainerrÅ   ÚRejecterÚFILTER_SKIPÚSkipperÚ
parentNoder„   rÓ   Úunlink)r'   rÖ   Úfilts      r)   rr   z"ExpatBuilder._finish_start_elementq  s©   € ØŒ<ð 	ð �t”}Ô4Ð4Ð4Ø�Ø”<×.Ò.¨tÑ4Ô4ˆDØ•}Ò$Ð$å˜‘”��Ø�Ò$Ð$õ ˜‘”��à�Øœ?ˆDŒLØŒO×'Ò'¨Ñ-Ô-Ð-Ø�KŠK‰MŒMˆMˆMˆMð#	ð 	r+   c                 óV   — | j         }|j        | _         |                      |¦  «         d S r&   )r„   r  rÐ   )r'   rb   r„   s      r)   rŒ   z ExpatBuilder.end_element_handlerˆ  s-   € Ø”,ˆØÔ)ˆŒØ× Ò  Ñ)Ô)Ð)Ð)Ð)r+   c                 óL  — | j                              |j        ¦  «        }|r|                      ||¦  «         | j        rc|| j        j        u rd S | j                             |¦  «        t          k    r2| j	         
                    |¦  «         |                     ¦   «          d S d S d S 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Ô3ˆØð 	9Ø×)Ò)¨'°4Ñ8Ô8Ð8ØŒ<ð 	!Ø˜$œ-Ô7Ð7Ð7Ø�ØŒ|×&Ò& wÑ/Ô/µ=Ò@Ð@Ø”×(Ò(¨Ñ1Ô1Ð1Ø—’Ñ Ô Ð Ð Ð ð	!ð 	!ð AÐ@r+   c                 ó  — | j         j        s|                     ¦   «         sd S g }|j        D ]@}|j        t
          k    r.|j                             ¦   «         s|                     |¦  «         ŒA|D ]}| 	                    |¦  «         Œd S 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Ô7ð 	Ø×(Ò(Ñ*Ô*ð	àˆFð
 ˆØ”_ð 	 ð 	 ˆEØŒ~¥Ò*Ð*°5´:×3CÒ3CÑ3EÔ3EÐ*Ø—’˜‘”�øð ð 	$ð 	$ˆEØ×Ò˜UÑ#Ô#Ð#Ð#ð	$ð 	$r+   c                 ó’   — | j                              |¦  «        }|€t          ||¦  «        | j         |<   d S |j        �J ‚||_        d S r&   )r…   r  r    r#   )r'   rb   r(   r9   s       r)   r£   z!ExpatBuilder.element_decl_handler©  sQ   € ØŒ×"Ò" 4Ñ(Ô(ˆØˆ<Ý$/°°eÑ$<Ô$<ˆDŒO˜DÑ!Ð!Ð!à”;Ð&Ð&Ð&ØˆDŒKˆKˆKr+   c           
      ó´   — | j                              |¦  «        }|€t          |¦  «        }|| j         |<   |j                             d |d d |d||g¦  «         d S ©Nr   )r…   r  r    r"   rä   )r'   Úelemrb   rD   ÚdefaultÚrequiredr9   s          r)   r¥   z!ExpatBuilder.attlist_decl_handler±  sr   € ØŒ×"Ò" 4Ñ(Ô(ˆØˆ<Ý˜tÑ$Ô$ˆDØ$(ˆDŒO˜DÑ!ØŒ×ÒØ�4˜˜t W¨a°°xÐ@ñ	Bô 	Bð 	Bð 	Bð 	Br+   c                 ó~   — || j         _        || j         _        |dk    r|rd| j         _        d S d| j         _        d S d S )Nr   TF)rƒ   ÚversionÚencodingÚ
standalone)r'   r  r  r  s       r)   r¡   zExpatBuilder.xml_decl_handler¹  sN   € Ø 'ˆŒÔØ!)ˆŒÔà˜Š?ˆ?Øð 1Ø+/�”Ô(Ð(Ð(à+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ð Oð Oð**ð *ð *ð+ð +ð +ð*ð *ð *ð(	*ð 	*ð 	*ð8ð 8ð 8ð$9ð 9ð 9ð+ð +ð +ð%ð %ð %ð%ð %ð %ðð ð ð5ð 5ð 5ð-ð -ð -ð"ð ð ð.*ð *ð *ð
	!ð 	!ð 	!ð$ð $ð $ð" ð  ð  ðBð Bð Bð1ð 1ð 1ð 1ð 1r+   rk   c                   óL  — 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j        e
j        ej        e
j        ej        e
j        ej        e
j        ej         e
j!        iZ"dS )rp   zoWrapper around a DOMBuilderFilter which implements the checks
    to make the whatToShow filter attribute work.©ro   c                 ó   — || _         d S r&   r  )r'   ro   s     r)   r*   z#FilterVisibilityController.__init__Î  s   € ØˆŒˆˆr+   c                 óþ   — | j         |j                 }| j        j        |z  rV| 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Ñ  s„   € ØÔ" 4¤=Ô1ˆØŒ;Ô! DÑ(ð 		!Ø”+×,Ò,¨TÑ2Ô2ˆCØÕ&Ò&Ð&Ý!Ð!ØÕ1Ð1Ð1Ý ØAÅDÈÁIÄIÑMñOô Oð OàˆJå Ð r+   c                 ó~  — | j         |j                 }| j        j        |z  r–| j                             |¦  «        }|t
          k    rt          ‚|t          k    r5|j        }|j	        d d …         D ]}| 
                    |¦  «         Œ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¨Q¨QÔ/ð .ð .�EØ×&Ò& uÑ-Ô-Ð-Ð-å$Ð$ØÕ1Ð1Ð1Ý Ø=ÅÀSÁ	Ä	ÑIñKô 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ð 5ð €Iðð ð ð!ð !ð !ð!ð !ð !ð* 	Ô¨*Ô*AØÔ¨*Ô*CØŒ¨*Ô*>ØÔ¨*Ô*GØÔ"¨*Ô*JØÔ¨*Ô*@ØÔ(¨*Ô*PØÔ¨*Ô*AØÔ¨*Ô*BØÔ¨*Ô*GØÔ#¨*Ô*KØÔ¨*Ô*Bð
€N€N€Nr+   rp   c                   ó   — e Zd ZdZd„ ZdS )ÚFilterCrutch)Ú_builderÚ_levelÚ
_old_startÚ_old_endc                 ó�   — d| _         || _        |j        }|j        | _        |j        | _        | j        |_        | j        |_        d S r  )	r@  r?  rs   r‹   rA  r�   rB  rö   rŒ   )r'   rW   r¨   s      r)   r*   zFilterCrutch.__init__  sG   € ØˆŒØˆŒØ”ˆØ Ô4ˆŒØÔ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dS )r   rT   c                 óv   — t                                | |¦  «         |j        }dD ]}t          ||d ¦  «         Œd S )N)r�   r–   r�   r™   r›   r    )r>  r*   rs   Úsetattr)r'   rW   r¨   rb   s       r)   r*   zRejecter.__init__  sQ   € Ý×Ò˜d GÑ,Ô,Ð,Ø”ˆðð 	(ð 	(ˆDõ �F˜D $Ñ'Ô'Ð'Ð'ð	(ð 	(r+   c                 ó$   — | j         dz   | _         d S ró   )r@  ©r'   Úargss     r)   rö   zRejecter.start_element_handler  s   € Ø”k A‘oˆŒˆˆr+   c                 óº   — | j         dk    r@| j        j        }| j                             |¦  «         | j        |_        | j        |_        d S | j         dz
  | _         d S ©Nr   r3   )r@  r?  rs   r~   rA  r‹   rB  r�   )r'   rI  r¨   s      r)   rŒ   zRejecter.end_element_handler   sZ   € ØŒ;˜!ÒÐà”]Ô*ˆFØŒM×!Ò! &Ñ)Ô)Ð)Ø)-¬ˆFÔ&Ø'+¤}ˆFÔ$Ð$Ð$àœ+¨™/ˆDŒKˆKˆKr+   N)rP   rQ   rR   rS   r*   rö   rŒ   rT   r+   r)   r   r     sF   € € € € € Ø€Ið
(ð 
(ð 
(ð&ð &ð &ð*ð *ð *ð *ð *r+   r   c                   ó   — e Zd ZdZd„ Zd„ ZdS )r  rT   c                 óp   — | j         j        } | j        |Ž  | j         j        |ur| j        dz   | _        d S d S ró   )r?  r„   rA  r@  )r'   rI  rÖ   s      r)   rö   zSkipper.start_element_handler-  sD   € ØŒ}Ô$ˆØˆŒ˜ÐÐØŒ=Ô ¨Ð,Ð,Øœ+¨™/ˆDŒKˆKˆKð -Ð,r+   c                 ó¸   — | j         dk    r5| j        | j        j        _        | j        | j        j        _        d | _        d S | j         dz
  | _          | j        |Ž  d S rK  )r@  rA  r?  rs   r‹   rB  r�   rH  s     r)   rŒ   zSkipper.end_element_handler3  s\   € ØŒ;˜!ÒÐð 9=¼ˆDŒMÔ!Ô5Ø6:´mˆDŒMÔ!Ô3Ø ˆDŒMˆMˆMàœ+¨™/ˆDŒKØˆDŒM˜4Ð Ð Ð Ð r+   N)rP   rQ   rR   rS   rö   rŒ   rT   r+   r)   r  r  *  s7   € € € € € Ø€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
dS )Ú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
                               | |¦  «         d S r&   )rÙ   r5  ÚoriginalDocumentrô   rÃ   rk   r*   )r'   rô   ru   s      r)   r*   zFragmentBuilder.__init__[  sO   € ØÔ�}Ò,Ð,Ø$+ˆDÔ!Ø"ˆDŒLˆLà$+Ô$9ˆDÔ!Ø"ˆDŒLÝ×Ò˜d GÑ,Ô,Ð,Ð,Ð,r+   c                 óH   — t                                | ¦  «         d | _        d S r&   )rk   rt   Úfragmentr-   s    r)   rt   zFragmentBuilder.resetd  s!   € Ý×Ò˜4Ñ Ô Ð ØˆŒˆˆr+   c                 óP   — |                       |                     ¦   «         ¦  «        S )zRParse a document fragment from a file object, returning the
        fragment node.)r¶   rª   ©r'   r¯   s     r)   r³   zFragmentBuilder.parseFileh  s    € ð ×Ò §	¢	¡¤Ñ,Ô,Ð,r+   c                 óÌ  — || _         |                      ¦   «         }| j        j        }d}|rH|j        p|                      ¦   «         }|j        rd|j        ›d|j        ›d�}n|j        r
d|j        z  }nd}|                      ¦   «         }t          |||fz  }	 | 
                    |d¦  «         n#  |                      ¦   «          ‚ xY w| j        }|                      ¦   «          |S )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.parseStringm  s
  € ð ˆŒØ—’Ñ!Ô!ˆØÔ'Ô/ˆØˆØð 	ØÔ+ÐF¨t×/DÒ/DÑ/FÔ/FˆFØÔð 9ð 9à#Ô,Ð,Ð,¨gÔ.>Ð.>Ð.>ð@��àÔ!ð 9Ø%¨Ô(8Ñ8�øàˆFØ×"Ò"Ñ$Ô$ˆÝ-°¸ÀÐ0HÑHˆð	Ø�LŠL˜ 4Ñ(Ô(Ð(Ð(øð	Ø�JŠJ‰LŒLˆLØøøøØ”=ˆØ�
Š
‰Œˆàˆs   ÂB/ Â/Cc                 ób  — | j         j        j        }d}|�rt          |j        j        ¦  «        D ]Y}|j                             |¦  «        }|r|dz   }|›d|j        ›�}|j        r|›d|j        ›d|j	        ›d�}ŒL|›d|j	        ›d�}ŒZt          |j
        j        ¦  «        D ]‹}|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‰  s³  € ð ”,Ô,Ô4ˆØˆØñ 	Ý˜7Ô,Ô3Ñ4Ô4ð 	Cð 	C�Ø"Ô,×1Ò1°!Ñ4Ô4�Øð #Ø˜F™
�AØ)*¨¨¨HÔ,=Ð,=Ð>�ØÔ$ð Cà˜1˜1˜hÔ/Ð/Ð/°Ô1BÐ1BÐ1BðD�A�Að ./¨Q¨Q°Ô0AÐ0AÐ0AÐB�A�AÝ˜7Ô+Ô2Ñ3Ô3ð ð �Ø Ô)×.Ò.¨qÑ1Ô1�Øð #Ø˜F™
�AØ'( q q¨&¬/¨/Ð:�Ø”?ð @à˜1˜1˜fœo˜o˜o¨v¬¨¨ð@�A�Aà”_ð @Ø,-¨A¨A¨v¬¨¨Ð?�A�Aà%& Q Q¨Ô(9Ô(>Ð(>Ð(>Ð?�AØÔ&ð DØ,-¨A¨A¨vÔ/BÐ/BÐC�AØ˜‘G��Øˆr+   c                 ó   — dS )NrX  rT   r-   s    r)   r\  zFragmentBuilder._getNSattrs­  s   € Øˆrr+   c                 ó¬  — |t           k    r¬| j        }| j        }| j                             |¦  «        }| j        | _        | j                             ¦   «         | _        | j        | _        	 |                     | j	        d¦  «         || _        || _        d | _	        n# || _        || _        d | _	        w xY wdS t                               | ||||¦  «        S )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ÔEˆFà Ô1ˆDŒMØ œM×@Ò@ÑBÔBˆDŒMØœ=ˆDŒLð$Ø—’˜Tœ\¨4Ñ0Ô0Ð0à+�”Ø ,�”Ø#�”�øð  ,�”Ø ,�”Ø#�”Ð#Ð#Ð#Ð#Ø�2å×;Ò;Ø�g˜t X¨xñ9ô 9ð 9s   Á+B ÂB3r&   )rP   rQ   rR   r  r*   rt   r³   r¶   r[  r\  rŸ   rT   r+   r)   rP  rP  R  s�   € € € € € ðð ð-ð -ð -ð -ðð ð ð-ð -ð -ð
ð ð ð8"ð "ð "ðHð ð ð9ð 9ð 9ð 9ð 9r+   rP  c                   ó8   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Z	 d„ Z	d	S )
Ú
Namespacesz7Mix-in class for builders; adds support for namespaces.c                 ó   — g | _         d S 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                 óp   — t                                | |¦  «         | j        j        r| j        |_        dS dS )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Õ  sC   € å×Ò˜T 6Ñ*Ô*Ð*ØŒ=Ô/ð 	3àÔ1ð Ô,Ð,Ð,ð	3ð 	3r+   c                 ó>   — | j                              ||f¦  «         dS )z/Push this namespace declaration on our storage.N)rq  rä   )r'   rg   re   s      r)   rx  z'Namespaces.start_namespace_decl_handlerÜ  s#   € àÔ!×(Ò(¨&°#¨Ñ7Ô7Ð7Ð7Ð7r+   c                 óÆ  — d|v rt          | |¦  «        \  }}}}nt          }|}d }t          }t          j        ||||¦  «        }| j        |_        t          | j        |¦  «         || _        | j	        r‹| j	        D ]y\  }}|r.t          j
        t          | d|z   ¦  «        t          |d¦  «        }n!t          j
        dt          dt          ¦  «        }||_        | j        |_        t          ||¦  «         Œz| j	        d d …= |rß|                     ¦   «          |j        }	|j        }
t%          dt'          |¦  «        d¦  «        D ] }||         }||dz            }d|v r9t          | |¦  «        \  }}}}t          j
        ||||¦  «        }||	|<   ||
||f<   n2t          j
        |t          |t          ¦  «        }||	|<   ||
t          |f<   | j        |_        ||_        ||_        ŒŸd S d S )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Ô,FÑ)ˆC�˜F E Eå!ˆCØˆEØˆIÝ!ˆFÝŒ˜u c¨6°9Ñ=Ô=ˆØ!œ]ˆÔÝ�d”l DÑ)Ô)Ð)ØˆŒàÔ$ð 	-Ø#Ô8ð 	-ð 	-‘�˜Øð <Ýœ¥W¨T°8¸fÑ3DÑ%EÔ%EÝ%4°f¸gñGô G�A�Aõ  œ W­oØ%,­lñ<ô <�Aà�”Ø"&¤-�”Ý# D¨!Ñ,Ô,Ð,Ð,ØÔ)¨!¨!¨!Ð,àð 	&Ø×#Ò#Ñ%Ô%Ð%Ø”[ˆFØ”}ˆHÝ˜1�c *™oœo¨qÑ1Ô1ð &ð &�Ø" 1œ�Ø" 1 Q¡3œ�Ø˜%�<�<Ý4BÀ4ÈÑ4OÔ4OÑ1�C˜ F¨EÝœ U¨C°¸FÑCÔC�AØ$%�F˜5‘MØ12�H˜c 9Ð-Ñ.Ð.åœ U­OØ%*­Lñ:ô :�Aà$%�F˜5‘MØ9:�H�o¨uÐ5Ñ6Ø"&¤-�”Ø�”Ø!%�”�ð'	&ð 	&ð&ð &r+   Tc                 ó>  — | j         }d|v rAt          | |¦  «        \  }}}}|j        |k    r|j        |k    r|j        |k    s
J d¦   «         ‚n/|j        |k    s
J d¦   «         ‚|j        t          k    s
J d¦   «         ‚|j        | _         |                      |¦  «         d S )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ˆGØ�dˆ{ˆ{Ý0>¸tÀTÑ0JÔ0JÑ-��Y ¨ØÔ,°Ò3Ð3Ø#Ô-°Ò:Ð:Ø#œN¨fÒ4Ð4Ð4Ø>ñ 5Ô4ð5à4ð Ô'¨4Ò/Ð/Ð/Ø?ñ 0Ô/Ð/àÔ+­Ò>Ð>Ð>ØCñ ?Ô>Ð>à"Ô-ˆDŒLØ×$Ò$ WÑ-Ô-Ð-Ð-Ð-r+   N)
rP   rQ   rR   r  rr  rx   r~   rx  rö   rŒ   rT   r+   r)   ro  ro  Ç  sz   € € € € € ØAÐAð'ð 'ð 'ð
ð ð ð3ð 3ð 3ð8ð 8ð 8ð-&ð -&ð -&ð^.ð	.ð 	.ð 	.ð 	.ð 	.r+   ro  c                   ó   — e Zd ZdZd„ ZdS )ÚExpatBuilderNSz*Document builder that supports namespaces.c                 ób   — t                                | ¦  «         |                      ¦   «          d S 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Ð4ðð ð ð ð r+   r…  c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚFragmentBuilderNSz*Fragment builder that supports namespaces.c                 ób   — t                                | ¦  «         |                      ¦   «          d S r&   )rP  rt   rr  r-   s    r)   rt   zFragmentBuilderNS.reset1  s.   € Ý×Ò˜dÑ#Ô#Ð#Ø×ÒÑÔÐÐÐr+   c                 ó  — d}| j         }g }|rst          |d¦  «        rZ|j                             ¦   «         D ]@\  }}||v rŒ
|                     |¦  «         |rd|z   }nd}|r|›d|›d|›d�}Œ7d|›d|›d�}ŒA|j        }|°s|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._getNSattrs5  sß   € ð ˆØ”,ˆØˆØð 	)Ý�wÐ 0Ñ1Ô1ð =Ø#*Ô#9×#?Ò#?Ñ#AÔ#Að =ð =‘K�F˜Cà �{�{Ø Ø—H’H˜VÑ$Ô$Ð$Øð +Ø#+¨fÑ#4˜˜à#*˜Øð =Ø5:°U°U¸H¸H¸HÀcÀcÀcÐ J˜˜ð=ð /7¨h¨h¸¸¸Ð <˜˜ØÔ(ˆGð ð 	)ð  ˆr+   N)rP   rQ   rR   r  rt   r\  rT   r+   r)   rˆ  rˆ  .  s8   € € € € € Ø4Ð4ðð ð ðð ð ð ð r+   rˆ  c                   ó   — e Zd ZdZdS )r®   zEException raised to short-circuit parsing in InternalSubsetExtractor.N)rP   rQ   rR   r  rT   r+   r)   r®   r®   S  s   € € € € € ØOÐOØ€Dr+   r®   c                   ó@   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ ZdS )
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.getSubset\  s
   € àŒ{Ðr+   c                 ó`   — 	 t                                | |¦  «         d S # t          $ r Y d S w xY wr&   )rk   r³   r®   rV  s     r)   r³   z!InternalSubsetExtractor.parseFile`  sE   € ð	Ý×"Ò" 4¨Ñ.Ô.Ð.Ð.Ð.øÝð 	ð 	ð 	ØˆDˆDð	øøøó   ‚ Ÿ
-¬-c                 ó`   — 	 t                                | |¦  «         d S # t          $ r Y d S w xY wr&   )rk   r¶   r®   )r'   rµ   s     r)   r¶   z#InternalSubsetExtractor.parseStringf  sE   € ð	Ý×$Ò$ T¨6Ñ2Ô2Ð2Ð2Ð2øÝð 	ð 	ð 	ØˆDˆDð	øøør•  c                 ó6   — | j         |_        | j        |_        d S r&   )rˆ   r‰   rö   r‹   r§   s     r)   r~   zInternalSubsetExtractor.installl  s   € Ø)-Ô)HˆÔ&Ø%)Ô%?ˆÔ"Ð"Ð"r+   c                 ó–   — |r:|                       ¦   «         }g | _        | j        j        |_        | j        |_        d S t          ¦   «         ‚r&   )r   r½   rä   ÚDefaultHandlerrÉ   rÊ   r®   )r'   rb   rÍ   rÌ   rÎ   r¨   s         r)   rˆ   z2InternalSubsetExtractor.start_doctype_decl_handlerp  sH   € àð 	 Ø—^’^Ñ%Ô%ˆFØˆDŒKØ$(¤KÔ$6ˆFÔ!Ø+/Ô+HˆFÔ(Ð(Ð(å‘-”-Ðr+   c                 ó°   — d                      | j        ¦  «                             dd¦  «                             dd¦  «        }|| _        t          ¦   «         ‚)NrX  z
ú
ú)Újoinr½   Úreplacer®   )r'   rX   s     r)   rÉ   z0InternalSubsetExtractor.end_doctype_decl_handlerz  sF   € Ø�GŠG�D”KÑ Ô ×(Ò(¨°Ñ6Ô6×>Ò>¸tÀTÑJÔJˆØˆŒÝ‰mŒmÐr+   c                 ó   — t          ¦   «         ‚r&   )r®   )r'   rb   r�  s      r)   rö   z-InternalSubsetExtractor.start_element_handler  s   € Ý‰mŒmÐr+   )rP   rQ   rR   r  r½   rº   r³   r¶   r~   rˆ   rÉ   rö   rT   r+   r)   r¹   r¹   W  s‹   € € € € € ØLÐLà€Fðð ð ðð ð ðð ð ð@ð @ð @ð ð  ð  ðð ð ð
ð ð ð ð r+   r¹   Tc                 ó  — |rt          ¦   «         }nt          ¦   «         }t          | t          ¦  «        r>t	          | d¦  «        5 }|                     |¦  «        }ddd¦  «         n# 1 swxY w Y   n|                     | ¦  «        }|S )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¨  ƒ  sÄ   € ð
 ð !Ý Ñ"Ô"ˆˆå‘.”.ˆå�$�ÑÔð )Ý�$˜ÑÔð 	+ Ø×&Ò& rÑ*Ô*ˆFð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+øð ×"Ò" 4Ñ(Ô(ˆØ€Ms   ÁA'Á'A+Á.A+c                 ój   — |rt          ¦   «         }nt          ¦   «         }|                     | ¦  «        S )zOParse a document from a string, returning the resulting
    Document node.
    )r…  rk   r¶   )rµ   r¥  rW   s      r)   r¶   r¶   •  s6   € ð ð !Ý Ñ"Ô"ˆˆå‘.”.ˆØ×Ò˜vÑ&Ô&Ð&r+   c                 ó  — |rt          |¦  «        }nt          |¦  «        }t          | t          ¦  «        r>t	          | d¦  «        5 }|                     |¦  «        }ddd¦  «         n# 1 swxY w Y   n|                     | ¦  «        }|S )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«     sÊ   € ð ð +Ý# GÑ,Ô,ˆˆå! 'Ñ*Ô*ˆå�$�ÑÔð )Ý�$˜ÑÔð 	+ Ø×&Ò& rÑ*Ô*ˆFð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+øð ×"Ò" 4Ñ(Ô(ˆØ€Ms   ÁA)Á)A-Á0A-c                 ón   — |rt          |¦  «        }nt          |¦  «        }|                     | ¦  «        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                 óL   — | 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¹     sZ  ððð ð: .Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ Ð Ð Ð Ð Ð Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø )Ð )Ð )Ð )Ð )Ð )àŒN€	ØÔ,Ð ØÔ"€àÔ+Ô9€ØÔ+Ô9€ØÔ)Ô5€ØÔ.Ô?Ð à3�wÔ3Ñ5Ô5Ð ð !�Ô   wÑ/Ô/Ø �Ô   }Ñ5Ô5Ø �Ô   xÑ0Ô0Ø �Ô   zÑ2Ô2Ø �Ô   tÑ,Ô,Ø �Ô   wÑ/Ô/Ø �Ô   xÑ0Ô0Ø �Ô   yÑ1Ô1Ø �Ô   zÑ2Ô2ð
ð 
€ð1(ð 1(ð 1(ð 1(ð 1(�&ñ 1(ô 1(ð 1(ðf,ð ,ð ,ð6ð 6ð 6ð&|1ð |1ð |1ð |1ð |1ñ |1ô |1ð |1ðB
 )¨-¸ÐEÐ ð7
ð 7
ð 7
ð 7
ð 7
 ñ 7
ô 7
ð 7
ðt
<ð 
<ð 
<ð 
<ð 
<�6ñ 
<ô 
<ð 
<ð*ð *ð *ð *ð *ˆ|ñ *ô *ð *ð8!ð !ð !ð !ð !ˆlñ !ô !ð !ð2 ?ð %ð*ð +ñ	+ð ðr9ð r9ð r9ð r9ð r9�lñ r9ô r9ð r9ðj\.ð \.ð \.ð \.ð \.ñ \.ô \.ð \.ð~ð ð ð ð �Z ñ ô ð ð"ð "ð "ð "ð "˜
 Oñ "ô "ð "ðJ	ð 	ð 	ð 	ð 	�)ñ 	ô 	ð 	ð)ð )ð )ð )ð )˜lñ )ô )ð )ðXð ð ð ð$'ð 'ð 'ð 'ðð ð ð ð(	'ð 	'ð 	'ð 	'ð%ð %ð %ð %ð %r+   