+
    üÐj©  ã                  óv  € R t ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RI	H
t
 ^ RIHtHtHt  ! R R]P                  4      t ! R	 R
]
4      t ! R R]
4      t ! R R]
4      t ! R R]
4      t ! R R]
4      t ! R R]
4      t ! R R]
4      t ! R R]
4      t ! R R]
4      t ! R R]
4      t ! R R]
4      tR# ) z;
Some fairly inadequate testcases for Twisted XML support.
)Úannotations)Úreload)ÚBytesIO)ÚLiteral)ÚTestCase)Ú
domhelpersÚmicrodomÚsuxc                  óF   € ] tR t^tR R ltR R ltR R ltR R ltR	tR
# )ÚSux0rc               ó   € V ^8„  d   QhRR/# ©é   ÚreturnÚNone© )Úformats   "Ú;/usr/lib/python3/dist-packages/twisted/web/test/test_xml.pyÚ__annotate__ÚSux0r.__annotate__   s   € ÷ ñ ˜$ñ ó    c                	ó   € . V n         R # )N©Útokens©Úselfs   &r   Ú__init__ÚSux0r.__init__   s   € ð ð 	Žr   c               ó   € V ^8„  d   QhRR/# )r   r   z2list[tuple[Literal['start'], str, dict[str, str]]]r   )r   s   "r   r   r      s   € ÷ Gñ GÐPñ Gr   c                	ób   € V P                    Uu. uF  q^ ,          R8X  g   K  VNK  	  up# u upi )é    Ústartr   )r   Útokens   & r   ÚgetTagStartsÚSux0r.getTagStarts   s)   € Ø#'§;¢;ÓF¡;˜%¸µ(¸gÑ2E—�¡;ÑFÐFùÒFs   �,£,c               ó$   € V ^8„  d   QhRRRRRR/# )r   ÚnameÚstrÚattrszdict[str, str]r   r   r   )r   s   "r   r   r      s!   € ÷ 3ñ 3 ð 3¨Nð 3¸tñ 3r   c                	ó@   € V P                   P                  R W34       R# )r!   N©r   Úappend)r   r&   r(   s   &&&r   ÚgotTagStartÚSux0r.gotTagStart   s   € Ø�‰×Ñ˜G TÐ1Ö2r   c               ó    € V ^8„  d   QhRRRR/# )r   Útextr'   r   r   r   )r   s   "r   r   r      s   € ÷ +ñ +˜Cð + Dñ +r   c                	ó@   € V P                   P                  R V34       R# )r/   Nr*   )r   r/   s   &&r   ÚgotTextÚSux0r.gotText   s   € Ø�‰×Ñ˜F D˜>Ö*r   r   N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r#   r,   r1   Ú__static_attributes__r   r   r   r   r      s   † õõ
Gõ3÷+ñ +r   r   c                  ó"   € ] tR t^#tR R ltRtR# )ÚSUXTestsc               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   ÚSUXTests.__annotate__$   s   € ÷ 4ñ 4˜4ñ 4r   c                	ó²   € R p\        4       pVP                  4        VP                  V4       V P                  \	        VP                  4       4      ^4       R# )s   <bork><bork><bork>N)r   ÚconnectionMadeÚdataReceivedÚassertEqualÚlenr#   )r   ÚsÚmss   &  r   Ú	test_borkÚSUXTests.test_bork$   sB   € Ø!ˆÜ‹WˆØ
×ÑÔØ
�‰˜ÔØ×Ñœ˜RŸ_™_Ó.Ó/°Ö3r   r   N)r3   r4   r5   r6   rC   r7   r   r   r   r9   r9   #   s   † ÷4ñ 4r   r9   c                  óv  € ] tR t^,tR R ltR R ltR R ltR R ltR	 R
 ltR R lt	R R lt
R R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R  ltR! R" ltR# R$ ltR% R& ltR' R( ltR) R* ltR+ R, ltR- R. ltR/ R0 ltR1 R2 ltR3 R4 ltR5 R6 ltR7 R8 lt. RgOt R9 R: lt!R; R< lt"R= R> lt#R? R@ lt$RA RB lt%RC RD lt&RE RF lt'RG RH lt(RI RJ lt)RK RL lt*RM RN lt+RO RP lt,RQ RR lt-RS RT lt.RU RV lt/RW RX lt0RY RZ lt1R[ R\ lt2R] R^ lt3R_ R` lt4Ra Rb lt5Rc Rd lt6Ret7Rf# )hÚMicroDOMTestsc               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   ÚMicroDOMTests.__annotate__-   s   € ÷ 
ñ 
¨$ñ 
r   c           	     ó4  € Rp\         P                  ! VRR7      pV P                  VP                  4       P	                  4       R4       \        4       pVP                  4       P                  VRRRR/ R4       V P                  VP                  4       R4       R# )zr
Make sure that if there's no top-level node lenient-mode won't
drop leading text that's outside of any elements.
zHi orders! <br>Well. <br>T©ÚbeExtremelyLenientz*<html>Hi orders! <br />Well. <br /></html>Ú s*   <html>Hi orders! <br />Well. <br /></html>N©r   ÚparseStringr?   Ú
firstChildÚtoxmlr   ÚwritexmlÚgetvalue©r   rA   ÚdÚ
byteStreams   &   r   Útest_leadingTextDroppingÚ&MicroDOMTests.test_leadingTextDropping-   s„   € ð
 (ˆÜ× Ò  °tÔ<ˆØ×ÑØ�L‰L‹N× Ñ Ó"Ð$Pô	
ô “Yˆ
Ø	�‰‹×Ñ 
¨B°°B¸¸BÀÔCØ×ÑØ×ÑÓ!Ð#Pö	
r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   =   s   € ÷ 
Rñ 
R¨4ñ 
Rr   c           	     ó4  € Rp\         P                  ! VRR7      pV P                  VP                  4       P	                  4       R4       \        4       pVP                  4       P                  VRRRR/ R4       V P                  VP                  4       R4       R# )zf
Ensure that no *trailing* text in a mal-formed
no-top-level-element document(s) will not be dropped.
z<br>Hi orders!TrJ   z<html><br />Hi orders!</html>rL   s   <html><br />Hi orders!</html>NrM   rS   s   &   r   Útest_trailingTextDroppingÚ'MicroDOMTests.test_trailingTextDropping=   s|   € ð
 ˆÜ× Ò  °tÔ<ˆØ×Ñ˜Ÿ™›×-Ñ-Ó/Ð1PÔQÜ“Yˆ
Ø	�‰‹×Ñ 
¨B°°B¸¸BÀÔCØ×Ñ˜×,Ñ,Ó.Ð0PÖQr   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   I   s   € ÷ Lñ L˜Tñ Lr   c                ó–   € Rp\         P                  ! VRR7      pV P                  VP                  4       P	                  4       R4       R# )zX
A string with nothing that looks like a tag at all should just
be parsed as body text.
z
Hi orders!TrJ   z<html>Hi orders!</html>N©r   rN   r?   rO   rP   ©r   rA   rT   s   &  r   Útest_noTagsÚMicroDOMTests.test_noTagsI   s;   € ð
 ˆÜ× Ò  °tÔ<ˆØ×Ñ˜Ÿ™›×-Ñ-Ó/Ð1JÖKr   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   R   s   € ÷ Rñ R dñ Rr   c                ó–   € Rp\         P                  ! VRR7      pV P                  VP                  4       P	                  4       R4       R# )zT
If a document is surrounded by non-xml text, the text should
be remain in the XML.
zHi<br> orders!TrJ   z<html>Hi<br /> orders!</html>Nr^   r_   s   &  r   Útest_surroundingCrapÚ"MicroDOMTests.test_surroundingCrapR   s;   € ð
 ˆÜ× Ò  °tÔ<ˆØ×Ñ˜Ÿ™›×-Ñ-Ó/Ð1PÖQr   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   [   s   € ÷ /ñ /¨dñ /r   c                	ó  € R p\         P                  ! V^R7      p\        P                  ! VP                  R4      p\        P
                  ! V^ ,          ^4      P                  RR4      pV P                  VP                  R4      R4       R# )al  
              <HTML><BODY>
              <P ALIGN="CENTER">
                <A HREF="http://www.apache.org/"><IMG SRC="/icons/apache_pb.gif"></A>
              </P>

              <P>
                This is an insane set of text nodes that should NOT be gathered under
                the A tag above.
              </P>
              </BODY></HTML>
            rJ   Úaz&nbsp;Ú ÚinsaneNéÿÿÿÿ)	r   rN   r   ÚfindNodesNamedÚdocumentElementÚgatherTextNodesÚreplacer?   Úfind)r   rA   rT   ÚlÚns   &    r   Útest_caseSensitiveSoonCloserÚ*MicroDOMTests.test_caseSensitiveSoonCloser[   sq   € ðˆô × Ò  °qÔ9ˆÜ×%Ò% a×&7Ñ&7¸Ó=ˆÜ×&Ò& q¨¥t¨QÓ/×7Ñ7¸À#ÓFˆØ×Ñ˜Ÿ™ Ó)¨2Ö.r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   m   s   € ÷ 

ñ 

 tñ 

r   c                ó¶   € Rp\         P                  ! V^R7      pV P                  VP                  VP                  P	                  4       P
                  4       R# )zr
Test that C{parentNode} attributes are set to meaningful values when
we are parsing HTML that lacks a root node.
z
<br/><br/>rJ   N©r   rN   ÚassertIdenticalrm   rO   Ú
parentNoder_   s   &  r   Útest_lenientParentingÚ#MicroDOMTests.test_lenientParentingm   sI   € ð ˆÜ× Ò  °qÔ9ˆØ×ÑØ×Ñ˜q×0Ñ0×;Ñ;Ó=×HÑHö	
r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   y   s   € ÷ 	
ñ 	
¨$ñ 	
r   c                ó¶   € Rp\         P                  ! V^R7      pV P                  VP                  VP                  P	                  4       P
                  4       R# )z…
Test that the C{parentNode} attribute is set to a meaningful value
when we parse an HTML document that has a non-Element root node.
ÚHellorJ   Nrw   r_   s   &  r   Útest_lenientParentSingleÚ&MicroDOMTests.test_lenientParentSingley   sI   € ð
 ˆÜ× Ò  °qÔ9ˆØ×ÑØ×Ñ˜q×0Ñ0×;Ñ;Ó=×HÑHö	
r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   „   s   € ÷ -ñ - ñ -r   c                	ó¨   € R p\         P                  ! V^R7      p\        P                  ! V4      pV P	                  VP                  R4      R4       R# )z
                <HTML>
                    This HTML goes between Stupid <=CrAzY!=> Dumb.
                </HTML>
            rJ   Ú>Nrk   )r   rN   r   rn   ÚassertNotEqualrp   ©r   rA   rT   rr   s   &   r   Útest_unEntitiesÚMicroDOMTests.test_unEntities„   sE   € ðˆô
 × Ò  °qÔ9ˆÜ×&Ò& qÓ)ˆØ×Ñ˜AŸF™F 3›K¨Ö,r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   Ž   s   € ÷ Dñ D ñ Dr   c                	ód   € V P                  \        P                  \        P                  R 4       R# )rL   N)ÚassertRaisesr	   Ú
ParseErrorr   rN   r   s   &r   Útest_emptyErrorÚMicroDOMTests.test_emptyErrorŽ   s   € Ø×Ñœ#Ÿ.™.¬(×*>Ñ*>ÀÖCr   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   ‘   s   € ÷ Xñ X 4ñ Xr   c                	ó²   € R p\         P                  ! V4      pV P                  \        P                  ! VP
                  4      P                  4       R4       R# )z”
        <test>
         <it>
          <is>
           <a>
            test
           </a>
          </is>
         </it>
        </test>
        ÚtestN)r   rN   r?   r   rn   rm   Ústripr_   s   &  r   Útest_tameDocumentÚMicroDOMTests.test_tameDocument‘   sF   € ð
ˆô × Ò  Ó#ˆØ×Ñœ×3Ò3°A×4EÑ4EÓF×LÑLÓNÐPVÖWr   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH       s   € ÷ $ñ $ 4ñ $r   c                	ó²   € R p\         P                  ! V^R7      p\        P                  ! VP                  R4      pV P                  \        V4      ^4       R# )a  
        <html>
        <head><title> I send you this message to have your advice!!!!</titl e
        </headd>

        <body bgcolor alink hlink vlink>

        <h1><BLINK>SALE</blINK> TWENTY MILLION EMAILS & FUR COAT NOW
        FREE WITH `ENLARGER'</h1>

        YES THIS WONDERFUL AWFER IS NOW HERER!!!

        <script LANGUAGE="javascript">
function give_answers() {
if (score < 70) {
alert("I hate you");
}}
        </script><a href=/foo.com/lalal name=foo>lalal</a>
        </body>
        </HTML>
        rJ   ÚblinkN)r   rN   r   rl   rm   r?   r@   )r   rA   rT   rq   s   &   r   Útest_awfulTagSoupÚMicroDOMTests.test_awfulTagSoup    sI   € ðˆô* × Ò  °qÔ9ˆÜ×%Ò% a×&7Ñ&7¸ÓAˆØ×Ñœ˜Q› Ö#r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   º   s   € ÷ 
ñ 
 Tñ 
r   c                	ób  € R p\         P                  ! V^R7      pV P                  VP                  4       P                  4       P                  4       P                  R4       V P                  VP                  4       P                  R4      ^,          P                  4       P                  R4       R# )zä
        <script>(foo < bar) and (bar > foo)</script>
        <script language="javascript">foo </scrip bar </script>
        <script src="foo">
        <script src="foo">baz</script>
        <script /><script></script>
        rJ   z(foo < bar) and (bar > foo)Úscriptzfoo </scrip bar N)r   rN   r?   rO   ÚdataÚgetElementsByTagNamer_   s   &  r   Útest_scriptLeniencyÚ!MicroDOMTests.test_scriptLeniencyº   sŠ   € ðˆô × Ò  °qÔ9ˆØ×ÑØ�L‰L‹N×%Ñ%Ó'×2Ñ2Ó4×9Ñ9Ð;Xô	
ð 	×ÑØ�L‰L‹N×/Ñ/°Ó9¸!Õ<×GÑGÓI×NÑNØö	
r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   Ë   s   € ÷ 
ñ 
°ñ 
r   c                	óª  € R pV P                  \        P                  ! V^R7      P                  4       P	                  4       V4       RpV P                  \        P                  ! V^R7      P                  4       P	                  4       V4       RpV P                  \        P                  ! V^R7      P                  4       P	                  4       V4       R# )z<script><!-- lalal --></script>rJ   z"<script><![CDATA[lalal]]></script>z:<script> // <![CDATA[
        lalal
        //]]></script>N)r?   r   rN   rO   rP   ©r   rA   s   & r   Útest_scriptLeniencyIntelligenceÚ-MicroDOMTests.test_scriptLeniencyIntelligenceË   s²   € ð 2ˆØ×ÑÜ× Ò  °qÔ9×DÑDÓF×LÑLÓNÐPQô	
ð 5ˆØ×ÑÜ× Ò  °qÔ9×DÑDÓF×LÑLÓNÐPQô	
ðˆð 	×ÑÜ× Ò  °qÔ9×DÑDÓF×LÑLÓNÐPQö	
r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   Ý   s   € ÷ Wñ W 4ñ Wr   c                	ó¸  € R pVP                  4       P                  RR4      p\        P                  ! V^^R7      p\        P                  ! V^^ R7      p\        P                  ! V^ ^R7      p\        P                  ! V^^ R7      p\        P                  ! V^^R7      pV P	                  VP
                  P                  4       V4       V P                  VP                  V4      VP                  4       : RVP                  4       : 24       V P                  VP                  V4      VP                  4       : RVP                  4       : 24       V P                  VP                  V4      VP                  4       : RVP                  4       : 24       V P                  VP                  V4      VP                  4       : RVP                  4       : 24       R# )zH<eNcApSuLaTe><sUxor></sUxor><bOrk><w00T>TeXt</W00t></BoRk></EnCaPsUlAtE>r/   ÚTeXt©ÚcaseInsensitiveÚpreserveCasez != N)	Úlowerro   r   rN   r?   rm   rP   Ú
assertTrueÚisEqualToDocument)r   rA   Ús2rT   Úd2Úd3Úd4Úd5s   &       r   Útest_preserveCaseÚMicroDOMTests.test_preserveCaseÝ   sh  € ØVˆØ�W‰W‹Y×Ñ˜v vÓ.ˆä× Ò  °AÀAÔFˆÜ×!Ò! !°QÀQÔGˆô ×!Ò! "°aÀaÔHˆÜ×!Ò! "°aÀaÔHˆÜ×!Ò! "°aÀaÔHˆð
 	×Ñ˜×*Ñ*×0Ñ0Ó2°AÔ6Ø�‰˜×+Ñ+¨BÓ/°A·G±G³I±=ÀÀRÇXÁXÃZÁNÐ1SÔTØ�‰˜×,Ñ,¨RÓ0°R·X±X³Z±NÀ$ÀrÇxÁxÃzÁnÐ2UÔVð 	�‰˜×,Ñ,¨RÓ0°R·X±X³Z±NÀ$ÀrÇxÁxÃzÁnÐ2UÔVØ�‰˜×,Ñ,¨RÓ0°R·X±X³Z±NÀ$ÀrÇxÁxÃzÁnÐ2UÖVr   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   õ   s   € ÷ 3ñ 3 dñ 3r   c                	óÒ   € R p\         P                  ! V4      pVP                  pV P                  VP	                  R4      R4       V P                  VP	                  R4      R4       R# )z<test a="a" b='b' />rh   ÚbN©r   rN   rm   r?   ÚgetAttribute©r   rA   rT   Úes   &   r   Útest_differentQuotesÚ"MicroDOMTests.test_differentQuotesõ   sT   € Ø$ˆÜ× Ò  Ó#ˆØ×ÑˆØ×Ñ˜Ÿ™¨Ó,¨cÔ2Ø×Ñ˜Ÿ™¨Ó,¨cÖ2r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   ü   s   € ÷ 4ñ 4 ñ 4r   c                	óÒ   € R p\         P                  ! V4      pVP                  pV P                  VP	                  R4      R4       V P                  VP	                  R4      R4       R# )z<test 
a="a"
	b="#b" />rh   r·   z#bNr¸   rº   s   &   r   Útest_LinebreaksÚMicroDOMTests.test_Linebreaksü   sT   € Ø(ˆÜ× Ò  Ó#ˆØ×ÑˆØ×Ñ˜Ÿ™¨Ó,¨cÔ2Ø×Ñ˜Ÿ™¨Ó,¨dÖ3r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH     s   € ÷ Pñ P Tñ Pr   c                	óv   € R F2  pV P                  \        P                  \        P                  V4       K4  	  R# )ú<test>N)rÄ   z<test> </tset>z</test>)rŠ   r   ÚMismatchedTagsrN   r¢   s   & r   Útest_mismatchedTagsÚ!MicroDOMTests.test_mismatchedTags  s*   € Û6ˆAØ×Ñœh×5Ñ5´x×7KÑ7KÈQÖOó 7r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH     s   € ÷ 
7ñ 
7˜dñ 
7r   c                	óº  € R p\         P                  ! V4      pVP                  pV P                  VP                  R4       VP
                  ^ ,          pV P                  \        V\         P                  4      4       V P                  VP                  R4       VP                  4       pV P                  WEJ4       V P                  VP                  4       R4       R# )z<bar><!--<foo />--></bar>Úbarú<foo />z<!--<foo />-->N)r   rN   rm   r?   ÚnodeNameÚ
childNodesr¬   Ú
isinstanceÚCommentÚvalueÚ	cloneNoderP   )r   rA   rT   r»   ÚcÚc2s   &     r   Útest_commentÚMicroDOMTests.test_comment  s    € Ø'ˆÜ× Ò  Ó#ˆØ×ÑˆØ×Ñ˜Ÿ™ UÔ+Ø�L‰L˜�OˆØ�‰œ
 1¤h×&6Ñ&6Ó7Ô8Ø×Ñ˜Ÿ™ )Ô,Ø�[‰[‹]ˆØ�‰˜˜Ô$Ø×Ñ˜Ÿ™›Ð%5Ö6r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH     s   € ÷ 0ñ 0˜4ñ 0r   c                	óz  € \         P                  ! R 4      P                  pVP                  ^ ,          pV P	                  \        V\         P                  4      4       V P                  VP                  R4       VP                  4       pV P	                  W2J4       V P                  VP                  4       R4       R# )z<bar>xxxx</bar>ÚxxxxN)r   rN   rm   rÍ   r¬   rÎ   ÚTextr?   rÐ   rÑ   rP   )r   rT   r/   Úclones   &   r   Ú	test_textÚMicroDOMTests.test_text  s‚   € Ü× Ò Ð!2Ó3×CÑCˆØ�|‰|˜A�ˆØ�‰œ
 4¬¯©Ó7Ô8Ø×Ñ˜Ÿ™ VÔ,Ø—‘Ó ˆØ�‰˜Ð)Ô*Ø×Ñ˜Ÿ™›¨Ö/r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH     s   € ÷ Eñ E˜tñ Er   c                	óê  € \         P                  ! R 4      P                  P                  pV P	                  \        V4      ^4       V P	                  V^ ,          P                  R4       V P	                  V^,          P                  R4       V P	                  V^ ,          P                  4       P                  4       R4       V F,  pV P                  \        V\         P                  4      4       K.  	  R# )z<b>&amp;&#12AB;</b>ú&amp;z&#12AB;N)r   rN   rm   rÍ   r?   r@   rœ   rÑ   rP   r¬   rÎ   ÚEntityReference)r   Únodesrr   s   &  r   Útest_entitiesÚMicroDOMTests.test_entities  s¬   € Ü×$Ò$Ð%:Ó;×KÑK×VÑVˆØ×Ñœ˜U› QÔ'Ø×Ñ˜˜q�Ÿ™¨Ô0Ø×Ñ˜˜q�Ÿ™¨	Ô2Ø×Ñ˜˜q�×+Ñ+Ó-×3Ñ3Ó5°wÔ?ÛˆAØ�O‰OœJ q¬(×*BÑ*BÓCÖDó r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   %  s   € ÷ Rñ R˜Dñ Rr   c                	óR  € R p\         P                  ! V4      P                  P                  ^ ,          pV P	                  \        V\         P                  4      4       V P                  VP                  R4       V P                  VP                  4       P                  4       R4       R# )z<x><![CDATA[</x>
 & foo]]></x>z</x>
 & fooz<![CDATA[</x>
 & foo]]>N)r   rN   rm   rÍ   r¬   rÎ   ÚCDATASectionr?   rœ   rÑ   rP   )r   rA   Úcdatas   &  r   Ú
test_CDataÚMicroDOMTests.test_CData%  sw   € Ø/ˆÜ×$Ò$ QÓ'×7Ñ7×BÑBÀ1ÕEˆØ�‰œ
 5¬(×*?Ñ*?Ó@ÔAØ×Ñ˜Ÿ™Ð%5Ô6Ø×Ñ˜Ÿ™Ó*×0Ñ0Ó2Ð4PÖQr   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   ,  s   € ÷ 	1ñ 	1 ñ 	1r   c                	óÞ  € R pRp\         P                  ! V4      P                  P                  p\         P                  ! V4      P                  P                  pV P	                  \        V4      ^4       \        W44       Fj  w  rVV P                  \        V\         P                  4      4       V P	                  VP                  R4       V P                  VP                  V4      4       Kl  	  R# )z<foo><b/><b /><b
/></foo>z<foo><b/><b/><b/></foo>r·   N)r   rN   rm   rÍ   r?   r@   Úzipr¬   rÎ   ÚElementrÌ   ÚisEqualToNode)r   rA   r®   rá   Únodes2rr   Ún2s   &      r   Útest_singletonsÚMicroDOMTests.test_singletons,  s«   € Ø(ˆØ&ˆÜ×$Ò$ QÓ'×7Ñ7×BÑBˆÜ×%Ò% bÓ)×9Ñ9×DÑDˆØ×Ñœ˜U› QÔ'Ü˜Ö'‰EˆAØ�O‰OœJ q¬(×*:Ñ*:Ó;Ô<Ø×Ñ˜QŸZ™Z¨Ô-Ø�O‰O˜AŸO™O¨BÓ/Ö0ó (r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   7  s   € ÷ :ñ : ñ :r   c                	ó  € R p\         P                  ! V4      P                  pV P                  VP	                  R4      R4       V P                  VP	                  R4      R4       V P                  VP                  R4      4       V P                  VP                  R4      '       * 4       VP                  R4      pV P                  VP                  R4       VP                  RR4       V P                  VP	                  R4      R4       R# )z<foo a="b" />rh   r·   rÒ   NÚfoorÊ   )
r   rN   rm   r?   r¹   r¬   ÚhasAttributeÚgetAttributeNoderÐ   ÚsetAttribute)r   rA   Únoderh   s   &   r   Útest_attributesÚMicroDOMTests.test_attributes7  sÓ   € ØˆÜ×#Ò# AÓ&×6Ñ6ˆà×Ñ˜×*Ñ*¨3Ó/°Ô5Ø×Ñ˜×*Ñ*¨3Ó/°Ô6Ø�‰˜×)Ñ)¨#Ó.Ô/Ø�‰˜D×-Ñ-¨cÓ2Ô2Ô3Ø×!Ñ! #Ó&ˆØ×Ñ˜Ÿ™ #Ô&à×Ñ˜% Ô'Ø×Ñ˜×*Ñ*¨5Ó1°5Ö9r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   E  s   € ÷ <ñ <˜tñ <r   c                	ó  € R p\         P                  ! V4      P                  pT P                  VP                   Uu. uF  q3P
                  NK  	  up. RO4       V P                  VP                  4       P
                  R4       V P                  VP                  4       P
                  R4       V P                  VP                  4       4       V P                  VP                  4       P                  4       '       * 4       R# u upi )z'<foo><bar /><baz /><bax>foo</bax></foo>rÊ   ÚbaxN)rÊ   Úbazrþ   )
r   rN   rm   r?   rÍ   rÌ   Ú	lastChildrO   r¬   ÚhasChildNodesr…   s   &   r   Útest_childrenÚMicroDOMTests.test_childrenE  s±   € Ø5ˆÜ× Ò  Ó#×3Ñ3ˆØ×Ñ¨a¯lªlÓ;©l¨Ÿ*œ*©lÑ;Ò=RÔSØ×Ñ˜Ÿ™›×/Ñ/°Ô7Ø×Ñ˜Ÿ™›×0Ñ0°%Ô8Ø�‰˜Ÿ™Ó)Ô*Ø�‰˜AŸL™L›N×8Ñ8Ó:Ô:Ö;ùò	 <s   ¼Dc               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   N  s   € ÷ -ñ -˜Tñ -r   c                	ó  € R pRpRp\         P                  ! V4      P                  p\         P                  ! V4      P                  p\         P                  ! V4      P                  pVP                  VP	                  4       4       VP                  RR4       VP                  ^ ,          pV P                  VP                  R4      R4       V P                  VP                  R4       VP                  \         P                  ! R4      V4       V P                  VP                  ^ ,          P                  R4       V P                  VP                  ^,          V4       VP                   F  pV P                  VP                  V4       K!  	  V P                  VP                  V4      4       VP                  V4       V P                  \!        VP                  4      ^4       V P                  VP                  ^ ,          P                  R4       \         P"                  ! R4      p	VP%                  W”P'                  4       4       V P                  VP'                  4       V	4       V P                  VP                  V4      4       R# )rË   z<foo a="b"><bar/><foo/></foo>z<foo a="b">foo</foo>rh   r·   Nrõ   rÊ   )r   rN   rm   ÚappendChildrÑ   rø   rÍ   r?   r¹   rÌ   ÚinsertBeforerí   ry   r¬   rî   ÚremoveChildr@   rÙ   ÚreplaceChildrO   )
r   rA   Ús1r®   rT   Úd1r¯   Úchildrr   Úts
   &         r   Útest_mutateÚMicroDOMTests.test_mutateN  sÃ  € ØˆØ,ˆØ#ˆÜ× Ò  Ó#×3Ñ3ˆÜ×!Ò! "Ó%×5Ñ5ˆÜ×!Ò! "Ó%×5Ñ5ˆà	�‰�a—k‘k“mÔ$Ø	�‰�s˜CÔ Ø—‘˜Q•ˆØ×Ñ˜×+Ñ+¨CÓ0°$Ô7Ø×Ñ˜Ÿ™¨Ô/à	�‰”x×'Ò'¨Ó.°Ô6Ø×Ñ˜Ÿ™ a�×1Ñ1°5Ô9Ø×Ñ˜Ÿ™ a�¨%Ô0Ø—”ˆAØ×Ñ˜QŸ\™\¨1Ö-ñ à�‰˜Ÿ™¨Ó+Ô,à	�‰�eÔØ×Ñœ˜QŸ\™\Ó*¨AÔ.Ø×Ñ˜Ÿ™ a�×1Ñ1°5Ô9ä�MŠM˜%Ó ˆØ	�‰�qŸ,™,›.Ô)Ø×Ñ˜Ÿ™›¨Ô+Ø�‰˜Ÿ™¨Ó+Ö,r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   l  s   € ÷ 	Pñ 	P dñ 	Pr   c                óÌ   € \         P                  ! R4      p\         P                  ! R4      p\         P                  ! R4      pV P                  \        VP                  W24       R# )z…
L{Node.replaceChild} raises L{ValueError} if the node given to be
replaced is not a child of the node C{replaceChild} is called on.
rË   z<bar />z<baz />N)r   rN   rŠ   Ú
ValueErrorr	  )r   ÚparentÚorphanÚreplacements   &   r   Útest_replaceNonChildÚ"MicroDOMTests.test_replaceNonChildl  sL   € ô
 ×%Ò% iÓ0ˆÜ×%Ò% iÓ0ˆÜ×*Ò*¨9Ó5ˆà×Ñœ* f×&9Ñ&9¸;ÖOr   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   w  s   € ÷ 
ñ 
˜Tñ 
r   c                	óv  € R pRp\         P                  ! V4      p\         P                  ! V^ ^R7      p\         P                  ! V^^R7      pVP                  pV P                  VP	                  4       VP                  R4      4       V P                  VP                  R4      WfP                  4       P	                  4       .4       VP                  pV P                  VP	                  4       VP                  R4      4       V P                  VP                  R4      V.4       V P                  VP                  R4      VP                  4       P	                  4       .4       V P                  VP                  R4      . 4       VP                  pV P                  VP	                  4       VP                  R4      4       V P                  VP                  R4      WfP                  4       P	                  4       .4       V P                  VP                  R4      WfP                  4       P	                  4       .4       R# )	z,<foo><bar id='me' /><baz><foo /></baz></foo>z,<fOo><bAr id='me' /><bAz><fOO /></bAz></fOo>r¨   Úmerõ   ÚfOoÚfOOÚFOON)r   rN   rm   r?   rO   ÚgetElementByIdr�   r   )r   rA   r®   rT   r¯   r°   Úroots   &      r   Útest_searchÚMicroDOMTests.test_searchw  sÍ  € Ø:ˆØ;ˆÜ× Ò  Ó#ˆÜ×!Ò! "°aÀaÔHˆÜ×!Ò! "°aÀaÔHˆà× Ñ ˆØ×Ñ˜Ÿ™Ó*¨A×,<Ñ,<¸TÓ,BÔCØ×ÑØ×"Ñ" 5Ó)¨D·.±.Ó2B×2MÑ2MÓ2OÐ+Pô	
ð ×!Ñ!ˆØ×Ñ˜Ÿ™Ó*¨B×,=Ñ,=¸dÓ,CÔDØ×Ñ˜×0Ñ0°Ó7¸$¸Ô@Ø×ÑØ×#Ñ# EÓ*¨T¯^©^Ó-=×-HÑ-HÓ-JÐ,Kô	
ð 	×Ñ˜×0Ñ0°Ó7¸Ô<à×!Ñ!ˆØ×Ñ˜Ÿ™Ó*¨B×,=Ñ,=¸dÓ,CÔDØ×ÑØ×#Ñ# EÓ*¨T·>±>Ó3C×3NÑ3NÓ3PÐ,Qô	
ð 	×ÑØ×#Ñ# EÓ*¨T·>±>Ó3C×3NÑ3NÓ3PÐ,Qö	
r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   •  s   € ÷ Mñ M˜dñ Mr   c                	ó†  € R pRp\         P                  ! V4      p\         P                  ! V4      pV P                  VP                  R4       V P                  VP	                  4       V4       V P                  VP                  V4      4       V P                  VP                  P                  VP                  4      4       R# )z`<?xml version="1.0"?><!DOCTYPE foo PUBLIC "baz" "http://www.example.com/example.dtd"><foo></foo>ú<foo/>ú5foo PUBLIC "baz" "http://www.example.com/example.dtd"N)
r   rN   r?   ÚdoctyperP   ÚassertFalser­   r¬   rm   rî   )r   rA   r®   rT   r¯   s   &    r   Útest_doctypeÚMicroDOMTests.test_doctype•  sŸ   € ðð 	
ð
 ˆÜ× Ò  Ó#ˆÜ×!Ò! "Ó%ˆØ×ÑØ�I‰IÐNô	
ð 	×Ñ˜Ÿ™› AÔ&Ø×Ñ˜×,Ñ,¨RÓ0Ô1Ø�‰˜×)Ñ)×7Ñ7¸×8JÑ8JÓKÖLr   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   ¬  s   € ÷ 5ñ 5˜Tñ 5r   c                	ó&  € V P                    F€  w  r\        P                  ! V^ R7      p\        P                  ! V^ R7      pVP                  P	                  4       pV P                  W%4       V P                  VP                  V4      4       K‚  	  R# )r    ©r©   N)Úsamplesr   rN   rm   rP   r?   r¬   r­   )r   rA   ÚoutrT   r¯   ÚtestOuts   &     r   Útest_outputÚMicroDOMTests.test_output¬  so   € Ø—l”l‰FˆAÜ×$Ò$ Q¸Ô:ˆAÜ×%Ò% c¸1Ô=ˆBØ×'Ñ'×-Ñ-Ó/ˆGØ×Ñ˜SÔ*Ø�O‰O˜A×/Ñ/°Ó3Ö4ó #r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   ´  s   € ÷ Bñ B˜Tñ Br   c                	ób   € R F(  pV P                  \        \        P                  V4       K*  	  R# )ú<foo>&am</foo>N)r4  z<fooz<f>&</f>z<() />)rŠ   Ú	Exceptionr   rN   r¢   s   & r   Útest_errorsÚMicroDOMTests.test_errors´  s%   € ÛAˆAØ×Ñœi¬×)=Ñ)=¸qÖAó Br   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   ¸  s   € ÷ Kñ K dñ Kr   c                	óä  € R pRpRpRp\         P                  ! V4      p\         P                  ! V4      p\         P                  ! V^R7      p\         P                  ! V^^R7      p\         P                  ! V^^ R7      p	\         P                  ! V^ ^ R7      p
\         P                  ! V4      P                  P                  4       pV P	                  \         P
                  \         P                  V^ R7       V P                  W²4       V P                  VP                  V4      4       V P                  VP                  V4      4       V P                  VP                  P                  R4      4       V P                  V
P                  P                  R4      4       V P                  VP                  P                  4       R4       V P                  V	P                  P                  4       R4       R	# )
z<foo a='b'><BAx>x</bax></FOO>ú<foo a="b"><bax>x</bax></foo>z<FOO a='b'><BAx>x</BAx></FOO>ú<foo A='b'>x</foo>r,  r¨   rh   ú<foo A="b">x</foo>z<foo a="b">x</foo>N)r   rN   rm   rP   rŠ   rÅ   r?   r¬   r­   rö   r'  )r   rA   r®   Ús3Ús4rT   r¯   r°   r±   r²   Úd6r.  s   &           r   Útest_caseInsensitiveÚ"MicroDOMTests.test_caseInsensitive¸  s…  € Ø+ˆØ,ˆØ,ˆØ!ˆÜ× Ò  Ó#ˆÜ×!Ò! "Ó%ˆÜ×!Ò! "°aÔ8ˆÜ×!Ò! "°aÀaÔHˆÜ×!Ò! "°aÀaÔHˆÜ×!Ò! "°aÀaÔHˆÜ×"Ò" 1Ó%×5Ñ5×;Ñ;Ó=ˆØ×ÑÜ×#Ñ#¤X×%9Ñ%9¸1Èað 	ô 	
ð 	×Ñ˜Ô!Ø�‰˜×+Ñ+¨BÓ/Ô0Ø�‰˜×+Ñ+¨BÓ/Ô0Ø�‰˜×*Ñ*×7Ñ7¸Ó<Ô=Ø×Ñ˜×+Ñ+×8Ñ8¸Ó=Ô>Ø×Ñ˜×+Ñ+×1Ñ1Ó3Ð5IÔJØ×Ñ˜×+Ñ+×1Ñ1Ó3Ð5IÖJr   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   Ï  s   € ÷ Vñ V tñ Vr   c                	ó$  € R p\         P                  ! V4      pV P                  VP                  P	                  4       '       * VP                  P
                  4       V P                  VP                  \         P                  ! R4      4      4       R# )z<hello>
        </hello>z<hello></hello>N)r   rN   r¬   rm   r  rÍ   r­   r_   s   &  r   Útest_eatingWhitespaceÚ#MicroDOMTests.test_eatingWhitespaceÏ  sm   € ðˆä× Ò  Ó#ˆØ�‰Ø×!Ñ!×/Ñ/Ó1Ô1°1×3DÑ3D×3OÑ3Oô	
ð 	�‰˜×+Ñ+¬H×,@Ò,@ÐARÓ,SÓTÖUr   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   Ø  s   € ÷ Pñ P tñ Pr   c                	óB  € R pR FT  w  r#\         P                  ! V RV R2^R7      pV P                  VP                  P	                  4       RV,          4       KV  	  \         P                  ! R^R7      pV P                  VP                  P	                  4       R4       R# )	z<?xml version='1.0'?>z<pre>z</pre>rJ   z<pre>%s</pre>z<t>hello & there</t>z<t>hello &amp; there</t>N))Ú&rß   )z& z&amp; )rß   rß   )z&hello monkeyz&amp;hello monkey©r   rN   r?   rm   rP   )r   ÚprefixÚiÚorT   s   &    r   Útest_lenientAmpersandÚ#MicroDOMTests.test_lenientAmpersandØ  s�   € Ø(ˆó
‰DˆAô ×$Ò$¨ x¨u°Q°C°vÐ%>ÐSTÔUˆAØ×Ñ˜Q×.Ñ.×4Ñ4Ó6¸È!Õ8KÖLñ
ô × Ò Ð!7ÈAÔNˆØ×Ñ˜×*Ñ*×0Ñ0Ó2Ð4NÖOr   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   ç  s   € ÷ Vñ V¨ñ Vr   c                	ó¦   € \         P                  ! R ^R7      pV P                  VP                  P	                  4       P                  4       R4       R# )z3<?xml version='1.0'?><bar><xA><y>c</Xa> <foo></bar>rJ   z<xa><y>c</y></xa>N)r   rN   r?   rm   rO   rP   )r   rT   s   & r   Útest_insensitiveLenientÚ%MicroDOMTests.test_insensitiveLenientç  sC   € ä× Ò ØAÐVWô
ˆð 	×Ñ˜×*Ñ*×5Ñ5Ó7×=Ñ=Ó?ÐATÖUr   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   î  s   € ÷ +ñ +¨ñ +r   c                	ó”   € R p\         P                  ! V^R7      pRpVP                  P                  4       pV P	                  W44       R# )z<ul><li>foo<li>bar<li>baz</ul>rJ   z-<ul><li>foo</li><li>bar</li><li>baz</li></ul>N©r   rN   rm   rP   r?   ©r   rA   rT   ÚexpectedÚactuals   &    r   Útest_laterCloserSimpleÚ$MicroDOMTests.test_laterCloserSimpleî  s@   € Ø,ˆÜ× Ò  °qÔ9ˆØBˆØ×"Ñ"×(Ñ(Ó*ˆØ×Ñ˜Ö*r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   õ  s   € ÷ +ñ +°ñ +r   c                	ó”   € R p\         P                  ! V^R7      pRpVP                  P                  4       pV P	                  W44       R# )z<DL><p><DT>foo<DD>bar</DL>rJ   z(<dl><p></p><dt>foo</dt><dd>bar</dd></dl>NrU  rV  s   &    r   Útest_laterCloserCaseInsensitiveÚ-MicroDOMTests.test_laterCloserCaseInsensitiveõ  s@   € Ø(ˆÜ× Ò  °qÔ9ˆØ=ˆØ×"Ñ"×(Ñ(Ó*ˆØ×Ñ˜Ö*r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   ü  s   € ÷ +ñ + Dñ +r   c                	ó”   € R pRp\         P                  ! V^R7      pVP                  P                  4       pV P	                  W$4       R# )zK<dl><dt>word<dd>definition<dt>word<dt>word<dd>definition<dd>definition</dl>zi<dl><dt>word</dt><dd>definition</dd><dt>word</dt><dt>word</dt><dd>definition</dd><dd>definition</dd></dl>rJ   NrU  )r   rA   rW  rT   rX  s   &    r   Útest_laterCloserDLÚ MicroDOMTests.test_laterCloserDLü  sL   € ðð 	
ðð 	ô × Ò  °qÔ9ˆØ×"Ñ"×(Ñ(Ó*ˆØ×Ñ˜Ö*r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH     s   € ÷ +
ñ +
 tñ +
r   c                	óâ  a€ ^ RI oRpRpRpR V3R llp\        P                  ! V! VP                  R4      4      4      p\        P                  ! VP                  R4      4      p\        P                  ! V4      pV P	                  VP                  V4      4       V P	                  VP                  V4      4       \        P                  ! V4      p\        P                  ! V! V4      4      p\        P                  ! V4      pV P	                  VP                  V4      4       V P	                  VP                  V4      4       \        P                  ! R4      pR	p	\        P                  ! 4       P                  R
^R7      P                  p
VP                  pVP                  V
4       VP                  VP                  R
4      4       V P                  VP                  4       V	R,           4       R# )r    Nz<foo><bar><baz /></bar></foo>ub   <?xml version="1.0" encoding="UCS-2" ?>
<JAPANESE>
<TITLE>å°‚é–€å®¶ãƒªã‚¹ãƒˆ </TITLE></JAPANESE>s®   ÿþ< ? x m l   v e r s i o n = " 1 . 0 "   e n c o d i n g = " U C S - 2 "   ? >  
 < J A P A N E S E >  
 < T I T L E > \€•¶[ê0¹0È0  < / T I T L E > < / J A P A N E S E > c               ó    € V ^8„  d   QhRRRR/# )r   rA   Úbytesr   r   )r   s   "r   r   Ú9MicroDOMTests.test_unicodeTolerance.<locals>.__annotate__  s   € ÷ 	Hñ 	H˜Eð 	H eñ 	Hr   c                ó¬   <€ \        \        V 4      ^,          4      R,           pSP                  ! RV,           .SP                  RV,           V 4      O5!  # )r   ÚHÚ<rƒ   )r'   r@   ÚpackÚunpack)rA   ÚfmtÚstructs   & €r   ÚreverseBytesÚ9MicroDOMTests.test_unicodeTolerance.<locals>.reverseBytes  sA   ø€ Ü”c˜!“f •kÓ" SÕ(ˆCØ—;’;˜s S�yÐG¨6¯=©=¸¸s½ÀAÓ+FÓGÐGr   zUTF-16r$  z<?xml version="1.0"?>u   âˆš©Úrawu#   <foo><div>âˆš</div><!--âˆš--></foo>)rn  r   rN   Úencoder¬   r­   Úlmxr/   rù   rm   r  ÚcreateCommentr?   rP   )r   rA   ÚjÚj2ro  ÚurdÚudÚsdÚj3ÚhdrÚdivÚdern  s   &           @r   Útest_unicodeToleranceÚ#MicroDOMTests.test_unicodeTolerance  sŒ  ø€ Ûà+ˆðNð 	
ð
Pð 	÷	Hð 	Hô ×"Ò"¡<°·±¸Ó0BÓ#CÓDˆÜ×!Ò! !§(¡(¨8Ó"4Ó5ˆÜ×!Ò! !Ó$ˆØ�‰˜×,Ñ,¨RÓ0Ô1Ø�‰˜×,Ñ,¨SÓ1Ô2Ü×!Ò! !Ó$ˆÜ×"Ò"¡<°Ó#3Ó4ˆÜ×!Ò! "Ó%ˆØ�‰˜×,Ñ,¨RÓ0Ô1Ø�‰˜×,Ñ,¨SÓ1Ô2ô ×!Ò! (Ó+ˆØ%ˆÜ�lŠl‹n×!Ñ! (°Ð!Ó2×7Ñ7ˆØ×ÑˆØ
�‰�sÔØ
�‰�r×'Ñ'¨Ó1Ô2Ø×ÑØ�H‰H‹J˜ÐJÕJö	
r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   :  s   € ÷ ?ñ ? Dñ ?r   c                	óL  € R ^R^ R^/pVP                  4        F‡  p\        P                  ! V4      P                  p\        P
                  ! VR4      pV P                  \        V4      W,          4       V'       g   Ke  V P                  \        V^ ,          R4      4       K‰  	  R# )z:<foo><bar /><bar unf='1' /><bar>asdfadsf</bar><bam/></foo>z<foo>asdf</foo>z!<foo><bar><bar></bar></bar></foo>rÊ   ÚtagNameN)
Úkeysr   rN   rm   r   ÚnamedChildrenr?   r@   r¬   Úhasattr)r   Útestsr  rù   Úresults   &    r   Útest_namedChildrenÚ MicroDOMTests.test_namedChildren:  s„   € àKÈQØ˜qØ/°ð
ˆð
 —‘–ˆAÜ×'Ò'¨Ó*×:Ñ:ˆDÜ×-Ò-¨d°EÓ:ˆFØ×ÑœS ›[¨%­(Ô3ß‰vØ—‘¤¨¨q­	°9Ó =Ö>ó r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   G  s   € ÷ :ñ : ñ :r   c                	ó¶  € R p\         P                  ! V4      P                  pVP                  ^R7      pV P	                  W#4       V P                  \        VP                  4      \        VP                  4      4       VP                  4       VP                  4       rTV P	                  WE4       V P                  \        VP                  4      \        VP                  4      4       V P	                  VP                  4       VP                  4       4       V P                  WP                  4       4       V P                  VP                  VP                  4       R# )r:  ©ÚdeepN)r   rN   rm   rÑ   ÚfailIfEqualsr?   r@   rÍ   rO   rP   Ú	namespace)r   rA   rù   rÚ   Úc1rÓ   s   &     r   Útest_cloneNodeÚMicroDOMTests.test_cloneNodeG  sî   € Ø+ˆÜ×#Ò# AÓ&×6Ñ6ˆØ—‘ A�Ó&ˆØ×Ñ˜$Ô&Ø×Ñœ˜TŸ_™_Ó-¬s°5×3CÑ3CÓ/DÔEØ—‘Ó" E×$4Ñ$4Ó$6ˆBØ×Ñ˜"Ô!Ø×Ñœ˜RŸ]™]Ó+¬S°·±Ó-?Ô@Ø×Ñ˜"Ÿ-™-›/¨2¯=©=«?Ô;Ø×Ñ˜ŸK™K›MÔ*Ø×Ñ˜Ÿ™¨¯©Ö9r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   T  s   € ÷ 7ñ 7 Dñ 7r   c                	óª  € R p\         P                  ! V4      pVP                  ^R7      pV P                  W#4       V P	                  \        VP                  4      \        VP                  4      4       V P	                  WP                  4       4       V P                  VP                  V4      4       V P                  VP                  V4      4       R# )z˜<?xml version="1.0"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><foo></foo>r�  N)
r   rN   rÑ   r�  r?   r@   rÍ   rP   r¬   r­   )r   rA   rù   rÚ   s   &   r   Útest_cloneDocumentÚ MicroDOMTests.test_cloneDocumentT  s£   € ðTð 	
ô ×#Ò# AÓ&ˆØ—‘ A�Ó&ˆØ×Ñ˜$Ô&Ø×Ñœ˜TŸ_™_Ó-¬s°5×3CÑ3CÓ/DÔEØ×Ñ˜ŸK™K›MÔ*à�‰˜×/Ñ/°Ó5Ô6Ø�‰˜×.Ñ.¨uÓ5Ö6r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   d  s   € ÷ 
'ñ 
'˜$ñ 
'r   c                	óR  € \         P                  ! R 4      p\         P                  ! V4      pVP                  R4       VP	                  RR7      pRVP                  4       R&   VP                  4        VP                  RRR7       RpV P                  WAP                  4       4       R	# )
Úprõ   rÒ   )rh   ÚzrÊ   Úy)rÒ   zF<p>foo<b a="c"><foo z="foo"></foo><foo></foo><bar c="y"></bar></b></p>N)	r   rí   rt  r/   r·   rõ   Úaddr?   rP   )r   rr   rt  r·   rA   s   &    r   Útest_LMXÚMicroDOMTests.test_LMXd  sz   € Ü×Ò˜SÓ!ˆÜ�lŠl˜1‹oˆØ�‰�ŒØ�E‰E�CˆE‹LˆØˆ�‰‹�‰Ø	�‰ŒØ	�‰ˆe�sˆÔàTˆØ×Ñ˜ŸG™G›IÖ&r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   p  s   € ÷ ñ ˜4ñ r   c                óH   € \         P                  ! R4      p\        V4       R# )z)
Returns a dictionary which is hashable.
rš  N)r   rí   Úhash)r   rr   s   & r   Ú	test_dictÚMicroDOMTests.test_dictp  s   € ô ×Ò˜SÓ!ˆÜˆQŽr   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   w  s   € ÷ 7ñ 7˜tñ 7r   c                	ó¨   € R pRp\         P                  ! V4      pV P                  W24       V P                  \         P                  ! V4      V4       R# )z&'some "stuff"', <what up?>z/&amp;'some &quot;stuff&quot;', &lt;what up?&gt;N)r   Úescaper?   Úunescape)r   rr  ÚcookedÚesc1s   &   r   Útest_escapingÚMicroDOMTests.test_escapingw  sC   € à-ˆØBˆÜ�Š˜sÓ#ˆØ×Ñ˜Ô&Ø×Ñœ×*Ò*¨4Ó0°#Ö6r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH     s   € ÷ 
ñ 
 ñ 
r   c                	ó  € R p\         P                  ! V4      pVP                  4       pV P                  VP                  P
                  R4       V P                  VP                  P                  R4      ^ ,          P
                  R4       V P                  VP                  P                  R4      ^,          P                  RR4      R4       \         P                  ! V4      pV P                  VP                  P
                  R4       V P                  VP                  P                  R4      ^ ,          P
                  R4       V P                  VP                  P                  R4      ^,          P                  RR4      R4       R# )z¹
        <x xmlns="base">
        <y />
        <y q="1" x:q="2" y:q="3" />
        <y:y xml:space="1">here is    some space </y:y>
        <y:y />
        <x:y />
        </x>
        Úbaserœ  ÚqÚ1N)r   rN   Útoprettyxmlr?   rm   r�  r�   ÚgetAttributeNS)r   rA   rT   r®   r¯   s   &    r   Útest_namespacesÚMicroDOMTests.test_namespaces  sB  € ðˆô × Ò  Ó#ˆà�]‰]‹_ˆØ×Ñ˜×*Ñ*×4Ñ4°fÔ=Ø×ÑØ×Ñ×2Ñ2°3Ó7¸Õ:×DÑDÀfô	
ð 	×ÑØ×Ñ×2Ñ2°3Ó7¸Õ:×IÑIÈ&ÐRUÓVØô	
ô
 ×!Ò! "Ó%ˆØ×Ñ˜×+Ñ+×5Ñ5°vÔ>Ø×ÑØ×Ñ×3Ñ3°CÓ8¸Õ;×EÑEÀvô	
ð 	×ÑØ×Ñ×3Ñ3°CÓ8¸Õ;×JÑJÈ6ÐSVÓWØö	
r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   Ÿ  s   € ÷ 	!ñ 	! dñ 	!r   c                ót   € Rp\         P                  ! V4      P                  4       pV P                  W4       R# )zG
Test that C{toxml} can support xml structures that remove namespaces.
z`<?xml version="1.0"?><html xmlns="http://www.w3.org/TR/REC-html40"><body xmlns=""></body></html>N)r   rN   rP   r?   )r   r
  r®   s   &  r   Útest_namespaceDeleteÚ"MicroDOMTests.test_namespaceDeleteŸ  s5   € ð
,ð 	ô ×!Ò! "Ó%×+Ñ+Ó-ˆØ×Ñ˜Ö r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   ª  s   € ÷ 
ñ 
¨4ñ 
r   c                ó²   € \         P                  ! R4      p\         P                  ! RRR7      pV.Vn        V P                  VP	                  4       R4       R# )zŠ
Check that unspecified namespace is a thing separate from undefined
namespace. This test added after discovering some weirdness in Lore.
Úolr}  zhttp://www.w3.org/1999/xhtml©r�  z9<div xmlns="http://www.w3.org/1999/xhtml"><ol></ol></div>N)r   rí   rÍ   r?   rP   )r   r  r  s   &  r   Útest_namespaceInheritanceÚ'MicroDOMTests.test_namespaceInheritanceª  sK   € ô × Ò  Ó&ˆÜ×!Ò! %Ð3QÔRˆØ"˜GˆÔØ×ÑØ�L‰L‹NÐWö	
r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   ·  s   € ÷ )(ñ )( 4ñ )(r   c                ó|  € RpRp\         P                  ! 4       pVP                  RVR7      pVP                  VR/4       VP                  RVR7      pVP                  RVR7      pVP	                  V4       VP	                  V4       VP	                  V4       RpVP                  4       pV P                  W‡4       R	# )
zÔ
XML elements with a prefixed name as per upper level tag definition
have a start-tag of C{"<prefix:tag>"} and an end-tag of
C{"</prefix:tag>"}.

Refer to U{http://www.w3.org/TR/xml-names/#ns-using} for details.
úhttp://example.com/outerúhttp://example.com/innerr  r½  ÚinnerÚtagr  zœ<?xml version="1.0"?><root xmlns="http://example.com/outer" xmlns:inner="http://example.com/inner"><inner:tag><inner:child></inner:child></inner:tag></root>N)r   ÚDocumentÚcreateElementÚaddPrefixesr  rP   r?   )	r   ÚouterNamespaceÚinnerNamespaceÚdocumentr  rÅ  r  ÚxmlOkÚxmlOuts	   &        r   Útest_prefixedTagsÚMicroDOMTests.test_prefixedTags·  sÄ   € ð 4ˆØ3ˆä×$Ò$Ó&ˆð ×%Ñ% f¸Ð%ÓGˆð 	×Ñ˜.¨'Ð2Ô3ð ×$Ñ$ U°nÐ$ÓEˆð ×&Ñ& w¸.Ð&ÓIˆà�‰˜ÔØ×Ñ˜ÔØ×Ñ˜TÔ"ðð 	ð —‘Ó!ˆØ×Ñ˜Ö'r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH   â  s   € ÷ 9(ñ 9(¨ñ 9(r   c                ó|  € RpRp\         P                  ! 4       pVP                  RVR7      pVP                  V4       VP	                  VR/4       VP                  RVR7      pVP                  V4       VP                  RVR7      pVP                  V4       RpVP                  4       pV P                  W‡4       R	# )
a¦  
Children of prefixed tags respect the default namespace at the point
where they are rendered.  Specifically, they are not influenced by the
prefix of their parent as that prefix has no bearing on them.

See U{http://www.w3.org/TR/xml-names/#scoping} for details.

To further clarify the matter, the following::

    <root xmlns="http://example.com/ns/test">
        <mytag xmlns="http://example.com/ns/mytags">
            <mysubtag xmlns="http://example.com/ns/mytags">
                <element xmlns="http://example.com/ns/test"></element>
            </mysubtag>
        </mytag>
    </root>

Should become this after all the namespace declarations have been
I{moved up}::

    <root xmlns="http://example.com/ns/test"
          xmlns:mytags="http://example.com/ns/mytags">
        <mytags:mytag>
            <mytags:mysubtag>
                <element></element>
            </mytags:mysubtag>
        </mytags:mytag>
    </root>
rÂ  rÃ  r  r½  rÄ  ÚmytagÚmysubtagzš<?xml version="1.0"?><root xmlns="http://example.com/outer" xmlns:inner="http://example.com/inner"><inner:mytag><mysubtag></mysubtag></inner:mytag></root>N)r   rÆ  rÇ  r  rÈ  rP   r?   )	r   rÉ  rÊ  rË  r  rÒ  rÓ  rÌ  rÍ  s	   &        r   Útest_prefixPropagationÚ$MicroDOMTests.test_prefixPropagationâ  sÂ   € ð< 4ˆØ3ˆä×$Ò$Ó&ˆà×%Ñ% f¸Ð%ÓGˆØ×Ñ˜TÔ"ð 	×Ñ˜.¨'Ð2Ô3Ø×&Ñ& w¸.Ð&ÓIˆØ×Ñ˜Ôð ×)Ñ)¨*ÀÐ)ÓOˆØ×Ñ˜(Ô#ðð 	ð —‘Ó!ˆØ×Ñ˜Ö'r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rH     s   € ÷ 

ñ 

 $ñ 

r   c                óÒ   € \        \        4       V P                  V P                  .4      pV P	                  ^\        V4      4       V P	                  RV^ ,          R,          4       R# )z/
An import will raise the deprecation warning.
z6twisted.web.microdom was deprecated at Twisted 23.10.0ÚmessageN)r   r   ÚflushWarningsÚtest_deprecationr?   r@   )r   Úwarningss   & r   rÚ  ÚMicroDOMTests.test_deprecation  sV   € ô 	ŒxÔØ×%Ñ% t×'<Ñ'<Ð&=Ó>ˆØ×Ñ˜œC ›MÔ*Ø×ÑØDØ�Q�K˜	Õ"ö	
r   r   N))z<img/>z<img />)r;  r<  )z<foo><BAR /></foo>z<foo><BAR></BAR></foo>)ú"<foo>hello there &amp; yoyoy</foo>rÝ  )8r3   r4   r5   r6   rV   rZ   r`   rd   rs   rz   r   r†   rŒ   r’   r—   rž   r£   r³   r¼   rÀ   rÆ   rÔ   rÛ   râ   rè   rñ   rú   r  r  r  r   r(  r-  r0  r6  r@  rD  rM  rQ  rY  r]  ra  r  r‰  r’  r–  rž  r£  r«  r´  r¸  r¾  rÎ  rÔ  rÚ  r7   r   r   r   rF   rF   ,   s  † õ
õ 
RõLõRõ/õ$

õ	
õ-õDõXõ$õ4
õ"
õ$Wõ03õ4õPõ
7õ0õEõRõ	1õ:õ<õ-õ<	Põ
õ<Mò €Gõ5õBõKõ.VõPõVõ+õ+õ+õ"+
õZ?õ:õ7õ 
'õõ7õ
õ@	!õ
õ)(õV9(÷v

ñ 

r   rF   c                  óf   € ] tR tRtRtRR R lltR R ltR R ltR	 R
 ltR R lt	R R lt
RtR# )ÚBrokenHTMLTestsi*  a+  
Tests for when microdom encounters very bad HTML and C{beExtremelyLenient}
is enabled. These tests are inspired by some HTML generated in by a mailer,
which breaks up very long lines by splitting them with '!\n '.
The expected behaviour is loosely modelled on the way Firefox treats very
bad HTML.
c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   Úinputr'   rW  rK   Úintr   r   r   )r   s   "r   r   ÚBrokenHTMLTests.__annotate__3  s2   € ÷ Cñ CØðCØ$'ðCØ=@ðCà	ñCr   c                óˆ   € \         P                  ! WR7      pV P                  VP                  P	                  4       V4       R# )zq
Check that C{input}, when parsed, produces a DOM where the XML
of the document element is equal to C{expected}.
rJ   NrI  )r   rá  rW  rK   Úoutputs   &&&& r   ÚcheckParsedÚBrokenHTMLTests.checkParsed3  s3   € ô ×%Ò% eÔSˆØ×Ñ˜×/Ñ/×5Ñ5Ó7¸ÖBr   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rã  =  s   € ÷ *ñ *¨$ñ *r   c                ó0   € RpRpV P                  W4       R# )z€
Check that microdom does its best to handle broken attribute names.
The important thing is that it doesn't raise an exception.
z6<body><h1><div al!
 ign="center">Foo</div></h1></body>z;<body><h1><div al="True" ign="center">Foo</div></h1></body>N©ræ  ©r   rá  rW  s   &  r   Útest_brokenAttributeNameÚ(BrokenHTMLTests.test_brokenAttributeName=  s   € ð
 JˆØSˆØ×Ñ˜Ö)r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rã  F  s   € ÷ *ñ *¨4ñ *r   c                ó0   € RpRpV P                  W4       R# )z:
Check that microdom encompasses broken attribute values.
z6<body><h1><div align="cen!
 ter">Foo</div></h1></body>Nrê  rë  s   &  r   Útest_brokenAttributeValueÚ)BrokenHTMLTests.test_brokenAttributeValueF  s   € ð JˆØLˆØ×Ñ˜Ö)r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rã  N  s   € ÷ *ñ * tñ *r   c                ó0   € RpRpV P                  W4       R# )z}
Check that microdom does its best to handle broken opening tags.
The important thing is that it doesn't raise an exception.
z2<body><h1><sp!
 an>Hello World!</span></h1></body>z5<body><h1><sp an="True">Hello World!</sp></h1></body>Nrê  rë  s   &  r   Útest_brokenOpeningTagÚ%BrokenHTMLTests.test_brokenOpeningTagN  s   € ð
 FˆØJˆØ×Ñ˜Ö)r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rã  W  s   € ÷ 9ñ 9¨4ñ 9r   c                óN   € V P                  RR4       V P                  RR4       R# )z�
Check that microdom does its best to handle broken self-closing tags
The important thing is that it doesn't raise an exception.
z<body><span /!
></body>z<body><span></span></body>z
<span!
 />z<span></span>Nrê  r   s   &r   Útest_brokenSelfClosingTagÚ)BrokenHTMLTests.test_brokenSelfClosingTagW  s&   € ð
 	×ÑÐ3Ð5QÔRØ×Ñ˜¨Ö8r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rã  _  s   € ÷ *ñ * tñ *r   c                ó¦   € RpRpV P                  W4       RpV P                  W4       RpV P                  W4       RpRpV P                  W4       R# )z}
Check that microdom does its best to handle broken closing tags.
The important thing is that it doesn't raise an exception.
z1<body><h1><span>Hello World!</sp!
an></h1></body>z/<body><h1><span>Hello World!</span></h1></body>z1<body><h1><span>Hello World!</!
span></h1></body>z1<body><h1><span>Hello World!</span!
></h1></body>z1<body><h1><span>Hello World!<!
/span></h1></body>z6<body><h1><span>Hello World!<!></!></span></h1></body>Nrê  rë  s   &  r   Útest_brokenClosingTagÚ%BrokenHTMLTests.test_brokenClosingTag_  s[   € ð
 EˆØDˆØ×Ñ˜Ô)ØDˆØ×Ñ˜Ô)ØDˆØ×Ñ˜Ô)ØDˆØKˆØ×Ñ˜Ö)r   r   N)é   )r3   r4   r5   r6   Ú__doc__ræ  rì  rð  rô  rø  rü  r7   r   r   r   rß  rß  *  s+   † ñ÷Cõ*õ*õ*õ9÷*ñ *r   rß  c                  ó2   € ] tR tRtRtR R ltR R ltRtR# )	Ú	NodeTestsip  z
Tests for L{Node}.
c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   ÚNodeTests.__annotate__u  s   € ÷ 5ñ 5 Dñ 5r   c                óž  € \         P                  ! \        4       4      pV P                  VP	                  V4      4       \         P                  ! \        4       4      pV P                  VP	                  V4      4       VP                  \         P                  ! \        4       4      4       V P                  VP	                  V4      4       VP                  \         P                  ! \        4       4      4       V P                  VP	                  V4      4       VP                  4       P                  \         P                  ! \        4       4      4       V P                  VP	                  V4      4       VP                  4       P                  \         P                  ! \        4       4      4       V P                  VP	                  V4      4       R# )z_
L{Node.isEqualToNode} returns C{True} if and only if passed a L{Node}
with the same children.
N)r   ÚNodeÚobjectr¬   rî   r  r'  rO   )r   rù   Úanothers   &  r   Útest_isNodeEqualToÚNodeTests.test_isNodeEqualTou  s,  € ô �}Š}œV›XÓ&ˆØ�‰˜×*Ñ*¨4Ó0Ô1Ü—-’-¤£Ó)ˆà�‰˜×*Ñ*¨7Ó3Ô4Ø×ÑœŸš¤v£xÓ0Ô1à×Ñ˜×+Ñ+¨GÓ4Ô5Ø×ÑœHŸMšM¬&«(Ó3Ô4ð 	�‰˜×*Ñ*¨7Ó3Ô4ð 	�‰Ó×%Ñ%¤h§m¢m´F³HÓ&=Ô>Ø×Ñ˜×+Ñ+¨GÓ4Ô5ð 	×ÑÓ×(Ñ(¬¯ª´v³xÓ)@ÔAØ�‰˜×*Ñ*¨7Ó3Ö4r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   r  �  s   € ÷ Dñ D¨ñ Dr   c                óº  € \         P                  ! 4       p\         P                  ! 4       pVP                  V4       V P                  \        VP                  R4       V P                  \        VP
                  VR4       V P                  \        VP
                  RV4       V P                  \        VP
                  RR4       VP                  V4       V P                  \        VP                  R4       V P                  \        VP                  VR4       V P                  \        VP                  RV4       V P                  \        VP                  RR4       R# )z?
Children of L{Node} instances must also be L{Node} instances.
N)r   r  r  rŠ   Ú	TypeErrorr  r  r	  )r   rù   r  s   &  r   Útest_validChildInstanceÚ!NodeTests.test_validChildInstance�  s  € ô �}Š}‹ˆÜ—’“ˆà×Ñ˜ÔØ×Ñœ) T×%5Ñ%5°tÔ<à×Ñœ) T×%6Ñ%6¸¸tÔDØ×Ñœ) T×%6Ñ%6¸¸eÔDØ×Ñœ) T×%6Ñ%6¸¸dÔCà×Ñ˜ÔØ×Ñœ) T×%5Ñ%5°tÔ<à×Ñœ) T×%6Ñ%6¸¸tÔDØ×Ñœ) T×%6Ñ%6¸¸eÔDØ×Ñœ) T×%6Ñ%6¸¸dÖCr   r   N)r3   r4   r5   r6   rÿ  r  r  r7   r   r   r   r  r  p  s   † ñõ5÷6Dñ Dr   r  c                  ó6   € ] tR tRtRtRtR R ltR R ltRtR	# )
ÚDocumentTestsi¦  z
Tests for L{Document}.
r%  c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   ÚDocumentTests.__annotate__­  s   € ÷ :ñ : Dñ :r   c                ó€  € \         P                  ! 4       pV P                  VP                  V4      4       \         P                  ! 4       pV P                  VP                  V4      4       V P                  Vn        V P                  VP                  V4      4       V P                  Vn        V P                  VP                  V4      4       VP                  \         P                  ! \        4       4      4       V P                  VP                  V4      4       VP                  \         P                  ! \        4       4      4       V P                  VP                  V4      4       VP                  P                  \         P                  ! \        4       4      4       V P                  VP                  V4      4       R# )z€
L{Document.isEqualToNode} returns C{True} if and only if passed a
L{Document} with the same C{doctype} and C{documentElement}.
N)
r   rÆ  r¬   rî   r&  r'  r  r  r  rm   )r   rË  r  s   &  r   Útest_isEqualToNodeÚ DocumentTests.test_isEqualToNode­  s7  € ô ×$Ò$Ó&ˆØ�‰˜×.Ñ.¨xÓ8Ô9ô ×#Ò#Ó%ˆØ�‰˜×.Ñ.¨wÓ7Ô8ð  Ÿ<™<ˆÔØ×Ñ˜×/Ñ/°Ó8Ô9àŸ,™,ˆŒØ�‰˜×.Ñ.¨wÓ7Ô8ð 	×ÑœXŸ]š]¬6«8Ó4Ô5Ø×Ñ˜×/Ñ/°Ó8Ô9à×ÑœHŸMšM¬&«(Ó3Ô4Ø�‰˜×.Ñ.¨wÓ7Ô8ð 	× Ñ ×,Ñ,¬X¯]ª]¼6»8Ó-DÔEØ×Ñ˜×/Ñ/°Ó8Ö9r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   r  Ì  s   € ÷ 	Eñ 	E tñ 	Er   c                óè   € \         P                  ! 4       p\         P                  ! 4       p\         P                  ! 4       pVP                  V4       V P	                  \
        VP                  V4       R# )zS
L{Document.appendChild} raises L{ValueError} if the document already
has a child.
N)r   rÆ  r  r  rŠ   r  )r   rË  r  r  s   &   r   Útest_childRestrictionÚ#DocumentTests.test_childRestrictionÌ  sN   € ô
 ×$Ò$Ó&ˆÜ—’“ˆÜ—-’-“/ˆØ×Ñ˜UÔ#Ø×Ñœ* h×&:Ñ&:¸GÖDr   r   N)	r3   r4   r5   r6   rÿ  r&  r  r  r7   r   r   r   r  r  ¦  s    † ñð F€Gõ:÷>	Eñ 	Er   r  c                  ó&   € ] tR tRtRtR R ltRtR# )ÚEntityReferenceTestsiØ  z
Tests for L{EntityReference}.
c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   Ú!EntityReferenceTests.__annotate__Ý  s   € ÷ 
ñ 
 Dñ 
r   c                ó&  € V P                  \        P                  ! R4      P                  \        P                  ! R4      4      4       V P	                  \        P                  ! R4      P                  \        P                  ! R4      4      4       R# )zt
L{EntityReference.isEqualToNode} returns C{True} if and only if passed
a L{EntityReference} with the same C{eref}.
ÚquotÚaposN)r¬   r   rà   rî   r'  r   s   &r   r  Ú'EntityReferenceTests.test_isEqualToNodeÝ  sn   € ð
 	�‰Ü×$Ò$ VÓ,×:Ñ:Ü×(Ò(¨Ó0óô	
ð
 	×ÑÜ×$Ò$ VÓ,×:Ñ:Ü×(Ò(¨Ó0óö	
r   r   N©r3   r4   r5   r6   rÿ  r  r7   r   r   r   r  r  Ø  s   † ñ÷
ñ 
r   r  c                  ó&   € ] tR tRtRtR R ltRtR# )ÚCharacterDataTestsiî  z
Tests for L{CharacterData}.
c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   ÚCharacterDataTests.__annotate__ó  ó   € ÷ 

ñ 

 Dñ 

r   c                ó&  € V P                  \        P                  ! R4      P                  \        P                  ! R4      4      4       V P	                  \        P                  ! R4      P                  \        P                  ! R4      4      4       R# )zn
L{CharacterData.isEqualToNode} returns C{True} if and only if passed a
L{CharacterData} with the same value.
rõ   rÊ   N)r¬   r   ÚCharacterDatarî   r'  r   s   &r   r  Ú%CharacterDataTests.test_isEqualToNodeó  sh   € ð
 	�‰Ü×"Ò" 5Ó)×7Ñ7¼×8NÒ8NÈuÓ8UÓVô	
ð 	×ÑÜ×"Ò" 5Ó)×7Ñ7¼×8NÒ8NÈuÓ8UÓVö	
r   r   Nr"  r   r   r   r$  r$  î  ó   † ñ÷

ñ 

r   r$  c                  ó&   € ] tR tRtRtR R ltRtR# )ÚCommentTestsi   z
Tests for L{Comment}.
c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   ÚCommentTests.__annotate__  s   € ÷ Yñ Y Dñ Yr   c                ó&  € V P                  \        P                  ! R4      P                  \        P                  ! R4      4      4       V P	                  \        P                  ! R4      P                  \        P                  ! R4      4      4       R# )zb
L{Comment.isEqualToNode} returns C{True} if and only if passed a
L{Comment} with the same value.
rõ   rÊ   N)r¬   r   rÏ   rî   r'  r   s   &r   r  ÚCommentTests.test_isEqualToNode  sa   € ð
 	�‰œ×(Ò(¨Ó/×=Ñ=¼h×>NÒ>NÈuÓ>UÓVÔWØ×Ñœ×)Ò)¨%Ó0×>Ñ>¼x×?OÒ?OÐPUÓ?VÓWÖXr   r   Nr"  r   r   r   r-  r-     s   † ñ÷Yñ Yr   r-  c                  ó&   € ] tR tRtRtR R ltRtR# )Ú	TextTestsi  z
Tests for L{Text}.
c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   ÚTextTests.__annotate__  s   € ÷ 
ñ 
 Dñ 
r   c           	     óÎ  € V P                  \        P                  ! RRR7      P                  \        P                  ! RRR7      4      4       V P	                  \        P                  ! RRR7      P                  \        P                  ! RRR7      4      4       V P	                  \        P                  ! RRR7      P                  \        P                  ! RRR7      4      4       R# )zg
L{Text.isEqualToNode} returns C{True} if and only if passed a L{Text}
which represents the same data.
rõ   Trq  FrÊ   N)r¬   r   rÙ   rî   r'  r   s   &r   r  ÚTextTests.test_isEqualToNode  s¡   € ð
 	�‰Ü�MŠM˜% TÔ*×8Ñ8¼¿ºÀuÐRVÔ9WÓXô	
ð 	×ÑÜ�MŠM˜% TÔ*×8Ñ8Ü—’˜e¨Ô/óô	
ð
 	×ÑÜ�MŠM˜% TÔ*×8Ñ8¼¿ºÀuÐRVÔ9WÓXö	
r   r   Nr"  r   r   r   r3  r3    s   † ñ÷
ñ 
r   r3  c                  ó&   € ] tR tRtRtR R ltRtR# )ÚCDATASectionTestsi%  z
Tests for L{CDATASection}.
c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   ÚCDATASectionTests.__annotate__*  r'  r   c                ó&  € V P                  \        P                  ! R4      P                  \        P                  ! R4      4      4       V P	                  \        P                  ! R4      P                  \        P                  ! R4      4      4       R# )zw
L{CDATASection.isEqualToNode} returns C{True} if and only if passed a
L{CDATASection} which represents the same data.
rõ   rÊ   N)r¬   r   ræ   rî   r'  r   s   &r   r  Ú$CDATASectionTests.test_isEqualToNode*  sh   € ð
 	�‰Ü×!Ò! %Ó(×6Ñ6´x×7LÒ7LÈUÓ7SÓTô	
ð 	×ÑÜ×!Ò! %Ó(×6Ñ6´x×7LÒ7LÈUÓ7SÓTö	
r   r   Nr"  r   r   r   r9  r9  %  r+  r   r9  c                  ó&   € ] tR tRtRtR R ltRtR# )ÚElementTestsi7  z
Tests for L{Element}.
c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   ÚElementTests.__annotate__<  s   € ÷ -
ñ -
 Dñ -
r   c                óP  € V P                  \        P                  ! RRR/\        4       RR7      P	                  \        P                  ! RRR/\        4       RR7      4      4       V P                  \        P                  ! RRR/\        4       RR7      P	                  \        P                  ! RRR/\        4       RR7      4      4       V P                  \        P                  ! RRR/\        4       RR7      P	                  \        P                  ! RRR/\        4       RR7      4      4       \        P                  ! RRR/\        4       RR7      p\        P                  ! RRR/\        4       RR7      pVP                  \        P                  ! \        4       4      4       V P                  VP	                  V4      4       V P                  \        P                  ! RRR/\        4       RR7      P	                  \        P                  ! RRR/\        4       RR7      4      4       R# )	z˜
L{Element.isEqualToNode} returns C{True} if and only if passed a
L{Element} with the same C{nodeName}, C{namespace}, C{childNodes}, and
C{attributes}.
rõ   rh   r·   rÊ   r½  rÿ   rÒ   N)r¬   r   rí   r  rî   r'  r  r  )r   ÚoneÚtwos   &  r   r  ÚElementTests.test_isEqualToNode<  s®  € ð 	�‰Ü×ÒØ˜˜S�z¤6£8°uôç‰mÜ× Ò  ¨¨c¨
´F³HÈÔNóô	
ð 	×ÑÜ×ÒØ˜˜S�z¤6£8°uôç‰mÜ× Ò  ¨¨c¨
´F³HÈÔNóô	
ð 	×ÑÜ×ÒØ˜˜S�z¤6£8°uôç‰mÜ× Ò  ¨¨c¨
´F³HÈÔNóô	
ô ×Ò˜u s¨C j´&³(ÀeÔLˆÜ×Ò˜u s¨C j´&³(ÀeÔLˆØ�‰œŸš¤f£hÓ/Ô0Ø×Ñ˜×*Ñ*¨3Ó/Ô0ð 	×ÑÜ×ÒØ˜˜S�z¤6£8°uôç‰mÜ× Ò  ¨¨c¨
´F³HÈÔNóö	
r   r   Nr"  r   r   r   r?  r?  7  s   † ñ÷-
ñ -
r   r?  N)rÿ  Ú
__future__r   Ú	importlibr   Úior   Útypingr   Útwisted.trial.unittestr   Útwisted.webr   r   r	   Ú	XMLParserr   r9   rF   rß  r  r  r  r$  r-  r3  r9  r?  r   r   r   Ú<module>rM     sÃ   ðñ
õ #å Ý å å +ß 1Ñ 1ô+ˆC�M‰Mô +ô 4ˆxô 4ô{
�Hô {
ô|C*�hô C*ôL3D�ô 3Dôl/E�Hô /Eôd
˜8ô 
ô,
˜ô 
ô$Y�8ô Yô
�ô 
ô.
˜ô 
ô$2
�8ö 2
r   