
    Mi                    2   S SK JrJrJr  S SKJrJr  S SKrSSKJ	r	  SSKJ
r
  SSKJr  SSKJr  SS	KJr  SS
KJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJ r   SS jr!SS jr"S r# " S S\$5      r%\RL                  S 5       r'S r(  SS jr) " S S\*5      r+g)    )absolute_importdivisionunicode_literals)with_metaclassviewkeysN   )_inputstream)
_tokenizer)treebuilders)Marker)_utils)spaceCharactersasciiUpper2LowerspecialElementsheadingElementscdataElementsrcdataElements
tokenTypestagTokenTypes
namespaceshtmlIntegrationPointElements"mathmlTextIntegrationPointElementsadjustForeignAttributesadjustMathMLAttributesadjustSVGAttributesE_ReparseExceptionc                 f    [         R                  " U5      n[        XBS9nUR                  " U 40 UD6$ )a  Parse an HTML document as a string or file-like object into a tree

:arg doc: the document to parse as a string or file-like object

:arg treebuilder: the treebuilder to use when parsing

:arg namespaceHTMLElements: whether or not to namespace HTML elements

:returns: parsed tree

Example:

>>> from html5lib.html5parser import parse
>>> parse('<html><body><p>This is a doc</p></body></html>')
<Element u'{http://www.w3.org/1999/xhtml}html' at 0x7feac4909db0>

namespaceHTMLElements)r   getTreeBuilder
HTMLParserparse)doctreebuilderr    kwargstbps         n/var/www/eduai.edurigo.com/storigo/production/storigo_env/lib/python3.13/site-packages/html5lib/html5parser.pyr#   r#      s2    $ 
	$	$[	1B2CA773!&!!    c                 j    [         R                  " U5      n[        XSS9nUR                  " U 4SU0UD6$ )a  Parse an HTML fragment as a string or file-like object into a tree

:arg doc: the fragment to parse as a string or file-like object

:arg container: the container context to parse the fragment in

:arg treebuilder: the treebuilder to use when parsing

:arg namespaceHTMLElements: whether or not to namespace HTML elements

:returns: parsed tree

Example:

>>> from html5lib.html5libparser import parseFragment
>>> parseFragment('<b>this is a fragment</b>')
<Element u'DOCUMENT_FRAGMENT' at 0x7feac484b090>

r   	container)r   r!   r"   parseFragment)r$   r,   r%   r    r&   r'   r(   s          r)   r-   r-   1   s7    ( 
	$	$[	1B2CA??3>)>v>>r*   c                 ,   ^   " U 4S jS[         5      nU$ )Nc                   "   > \ rS rSrU 4S jrSrg)-method_decorator_metaclass.<locals>.DecoratedK   c                    > UR                  5        H0  u  pE[        U[        R                  5      (       a  T" U5      nXSU'   M2     [        R                  XX#5      $ N)items
isinstancetypesFunctionTypetype__new__)meta	classnamebases	classDictattributeName	attributefunctions         r)   r9   5method_decorator_metaclass.<locals>.Decorated.__new__L   sO    ,5OO,=(i););<< ( 3I+4-(	 ->
 <<BBr*    N)__name__
__module____qualname____firstlineno__r9   __static_attributes__)r@   s   r)   	Decoratedr0   K   s    	C 	Cr*   rH   )r8   )r@   rH   s   ` r)   method_decorator_metaclassrI   J   s    CD C r*   c                       \ rS rSrSrSS jrSS jrS r\S 5       r	S r
S	 rS
 rS rS rSS jrS rS rS rS rS rS rSrg)r"   V   zUHTML parser

Generates a tree structure from a stream of (possibly malformed) HTML.

Nc           	          X l         Uc  [        R                  " S5      nU" U5      U l        / U l        [        U5      R                  5        VVs0 s H  u  pVXV" X R                  5      _M     snnU l        gs  snnf )ay  
:arg tree: a treebuilder class controlling the type of tree that will be
    returned. Built in treebuilders can be accessed through
    html5lib.treebuilders.getTreeBuilder(treeType)

:arg strict: raise an exception when a parse error is encountered

:arg namespaceHTMLElements: whether or not to namespace HTML elements

:arg debug: whether or not to enable debug mode which logs things

Example:

>>> from html5lib.html5parser import HTMLParser
>>> parser = HTMLParser()                     # generates parser with etree builder
>>> parser = HTMLParser('lxml', strict=True)  # generates parser with lxml builder which is strict

Netree)strictr   r!   treeerrors	getPhasesr4   phases)selfrO   rN   r    debugnameclss          r)   __init__HTMLParser.__init__]   sw    * <..w7D./	 !'--/1/ 7@dtSyy11/1 1s   A8c                    X l         X0l        X@l        [        R                  " U4SU 0UD6U l        U R                  5          U R                  5         g ! [         a#    U R                  5         U R                  5          g f = f)Nparser)	innerHTMLModer,   	scriptingr
   HTMLTokenizer	tokenizerresetmainLoopr   )rS   stream	innerHTMLr,   r\   r&   s         r)   _parseHTMLParser._parse|   sf    &""#11&PPP

	MMO  	JJLMMO	s   A *B ?B c                    U R                   R                  5         SU l        / U l        / U l        SU l        U R                  (       Ga	  U R                  R                  5       U l	        U R                  [        ;   a&  U R                  R                  U R                  l        OqU R                  [        ;   a&  U R                  R                  U R                  l        O7U R                  S:X  a&  U R                  R                   U R                  l        O U R"                  S   U l        U R$                  R'                  5         U R)                  5         OSU l	        U R"                  S   U l        S U l        S U l        SU l        g )NFz	no quirks	plaintext
beforeHtmlinitialT)rO   r_   firstStartTagrP   log
compatModer[   r,   lowerrb   r   r^   rcdataStatestater   rawtextStateplaintextStaterR   phaseinsertHtmlElementresetInsertionMode	lastPhasebeforeRCDataPhase
framesetOKrS   s    r)   r_   HTMLParser.reset   s   		"%!^^113DN~~.'+~~'A'A$>1'+~~'B'B$;.'+~~'D'D$ \2DJJJ((*##%"DNY/DJ!%r*   c                     [        U S5      (       d  gU R                  R                  R                  S   R                  $ )zwName of the character encoding that was used to decode the input stream, or
:obj:`None` if that is not determined yet

r^   Nr   )hasattrr^   ra   charEncodingrU   rw   s    r)   documentEncodingHTMLParser.documentEncoding   s5     t[))~~$$11!4999r*   c                    UR                   S:X  aR  UR                  [        S   :X  a;  SUR                  ;   =(       a%    UR                  S   R	                  [
        5      S;   $ UR                  UR                   4[        ;   $ )Nannotation-xmlmathmlencoding)z	text/htmlzapplication/xhtml+xml)rU   	namespacer   
attributes	translater   r   rS   elements     r)   isHTMLIntegrationPoint!HTMLParser.isHTMLIntegrationPoint   s{    LL,,!!Z%99'"4"44 ;&&z2<<(*:;<
 %%w||48TTTr*   c                 @    UR                   UR                  4[        ;   $ r3   )r   rU   r   r   s     r)   isMathMLTextIntegrationPoint'HTMLParser.isMathMLTextIntegrationPoint   s    !!7<<04VVVr*   c                    [         S   n[         S   n[         S   n[         S   n[         S   n[         S   n[         S   nU R                   GH6  nS n	Un
U
Gb  U
n	U R                  R                  (       a  U R                  R                  S   OS nU(       a  UR                  OS nU(       a  UR
                  OS nU
S	   nX:X  a)  U R                  U
S
   U
R                  S0 5      5        S n
GOU[        U R                  R                  5      S:X  d  XR                  R                  :X  dt  U R                  U5      (       a   X:X  a  US   [        SS/5      ;  dE  XU4;   d>  U[        S   :X  a  US:X  a  X:X  a	  US   S:X  d  U R                  U5      (       a  XX4;   a  U R                  nOU R                  S   nX:X  a  UR!                  U
5      n
OrX:X  a  UR#                  U
5      n
O[X:X  a  UR%                  U
5      n
ODX:X  a  UR'                  U
5      n
O-X:X  a  UR)                  U
5      n
OX:X  a  UR+                  U
5      n
U
b  GM  WU:X  d  GM  U	S   (       d  GM  U	S   (       a  GM  U R                  SSU	S   05        GM9     Sn/ nU(       aX  UR-                  U R                  5        U R                  R/                  5       nU(       a  U R                  U;  d   eU(       a  MW  g g )N
CharactersSpaceCharactersStartTagEndTagCommentDoctype
ParseErrorr8   datadatavarsr   rU   mglyph
malignmarkr   r   svginForeignContentselfClosingselfClosingAcknowledgedz&non-void-element-with-trailing-solidusT)r   r^   rO   openElementsr   rU   
parseErrorgetlendefaultNamespacer   	frozensetr   r   rq   rR   processCharactersprocessSpaceCharactersprocessStartTagprocessEndTagprocessCommentprocessDoctypeappend
processEOF)rS   CharactersTokenSpaceCharactersTokenStartTagTokenEndTagTokenCommentTokenDoctypeTokenParseErrorTokentoken
prev_token	new_tokencurrentNodecurrentNodeNamespacecurrentNodeNamer8   rq   	reprocessrR   s                     r)   r`   HTMLParser.mainLoop   s   $\2)*;<":. *!),!),$\2^^EJI'&
<@II<R<Rdii44R8X\@K{'<'<QU$6A+"2"2t (*OOIf$5y}}ZQS7TU $IDII223q8,		0J0JJ::;GG0 =	8\:R0SS4H"II-H1EE(,<<.v%/44[AA!WW $

 $,> ?.$)$;$;I$F	5$)$@$@$K	.$)$9$9)$D	,$)$7$7	$B	-$)$8$8$C	-$)$8$8$C	O 'R %*]*C*C"#<== H!'F); <>] $d 	MM$**%

--/Izz///	 ir*   c                 f    U R                   " USS/UQ70 UD6  U R                  R                  5       $ )a  Parse a HTML document into a well-formed tree

:arg stream: a file-like object or string containing the HTML to be parsed

    The optional encoding parameter must be a string that indicates
    the encoding.  If specified, that encoding will be used,
    regardless of any BOM or later declaration (such as in a meta
    element).

:arg scripting: treat noscript elements as if JavaScript was turned on

:returns: parsed tree

Example:

>>> from html5lib.html5parser import HTMLParser
>>> parser = HTMLParser()
>>> parser.parse('<html><body><p>This is a doc</p></body></html>')
<Element u'{http://www.w3.org/1999/xhtml}html' at 0x7feac4909db0>

FN)rc   rO   getDocumentrS   ra   argsr&   s       r)   r#   HTMLParser.parse  s1    , 	FE49$9&9yy$$&&r*   c                 d    U R                   " US/UQ70 UD6  U R                  R                  5       $ )a  Parse a HTML fragment into a well-formed tree fragment

:arg container: name of the element we're setting the innerHTML
    property if set to None, default to 'div'

:arg stream: a file-like object or string containing the HTML to be parsed

    The optional encoding parameter must be a string that indicates
    the encoding.  If specified, that encoding will be used,
    regardless of any BOM or later declaration (such as in a meta
    element)

:arg scripting: treat noscript elements as if JavaScript was turned on

:returns: parsed tree

Example:

>>> from html5lib.html5libparser import HTMLParser
>>> parser = HTMLParser()
>>> parser.parseFragment('<b>this is a fragment</b>')
<Element u'DOCUMENT_FRAGMENT' at 0x7feac484b090>

T)rc   rO   getFragmentr   s       r)   r-   HTMLParser.parseFragment  s/    2 	FD24262yy$$&&r*   c                     Uc  0 nU R                   R                  U R                  R                  R	                  5       X45        U R
                  (       a  [        [        U   U-  5      eg r3   )rP   r   r^   ra   positionrN   r   r   )rS   	errorcoder   s      r)   r   HTMLParser.parseError;  sW    HDNN11::<iRS;;Qy\H455 r*   c                 $    [        U[        5        g r3   )adjust_attributesr   rS   r   s     r)   r   !HTMLParser.adjustMathMLAttributesC  s    %!78r*   c                 $    [        U[        5        g r3   )r   r   r   s     r)   r   HTMLParser.adjustSVGAttributesF  s    %!45r*   c                 $    [        U[        5        g r3   )r   adjustForeignAttributesMapr   s     r)   r   "HTMLParser.adjustForeignAttributesI  s    %!;<r*   c                 8    U R                   R                  5         g r3   )rZ   rq   r   s     r)   reparseTokenNormalHTMLParser.reparseTokenNormalL  s    r*   c                     SnSSSSSSSSSSS	S	S
SS.nU R                   R                  S S S2    H  nUR                  nS nX0R                   R                  S   :X  a!  U R                  (       d   eSnU R                  nUS;   a  U R                  (       d   eU(       d&  UR                  U R                   R
                  :w  a  M  XB;   a  U R                  X$      n  OU(       d  M  U R                  S	   n  O   WU l        g )NFinSelectinCellinRowinTableBody	inCaptioninColumnGroupinTableinBody
inFrameset
beforeHead)selecttdthtrtbodytheadtfootcaptioncolgrouptableheadbodyframesethtmlr   r   T)r   r   r   r   )rO   r   rU   rb   r   r   rR   rq   )rS   lastnewModesnodenodeName	new_phases         r)   rs   HTMLParser.resetInsertionModeP  s     """"'$ 
  II**4R40DyyHIyy--a00~~%~>> AA~~%~DNNdii.H.HH# KK(:;	 KK1	) 1, 
r*   c                 6   US;   d   eU R                   R                  U5        US:X  a&  U R                  R                  U R                  l        O%U R                  R
                  U R                  l        U R                  U l        U R                  S   U l        g )N)RAWTEXTRCDATAr   text)	rO   insertElementr^   ro   rn   rm   rq   originalPhaserR   )rS   r   contentTypes      r)   parseRCDataRawtextHTMLParser.parseRCDataRawtext|  ss    3333		&)##'>>#>#>DNN #'>>#=#=DNN !ZZ[[(
r*   )ru   rk   r,   rP   ri   rv   rb   r[   rt   rj   r   rq   rR   r\   rN   r^   rO   )NFTF)FdivF)zXXX-undefined-errorN)rC   rD   rE   rF   __doc__rW   rc   r_   propertyr|   r   r   r`   r#   r-   r   r   r   r   r   rs   r   rG   rB   r*   r)   r"   r"   V   sl    1> D : :UWA0F'2'8696=*X)r*   r"   c           
        ^^^ S nS n " S S[        U" X5      5      5      m " S ST5      n " S ST5      n " S	 S
T5      n " S ST5      n " S ST5      n " S ST5      n " UU4S jST5      m " S ST5      n	 " U4S jST5      n
 " U4S jST5      m " U4S jST5      n " U4S jST5      n " U4S jST5      n " U4S jS T5      n " U4S! jS"T5      n " U4S# jS$T5      n " S% S&T5      n " U4S' jS(T5      n " S) S*T5      n " U4S+ jS,T5      n " U4S- jS.T5      n " S/ S0T5      n " S1 S2T5      n0 S3U_S4U_S5U_S6U_S7U_S8U_S9T_S:U	_S;U
_S<T_S=U_S>U_S?U_S@U_SAU_SBU_SCU_UUUUUUSD.E$ )ENc                 x   ^ ^ [         R                  " 5        VVs0 s H  u  pX!_M	     snnmU U4S jnU$ s  snnf )z4Logger that records which phase processes each tokenc                 
  > TR                   R                  S5      (       a  [        U5      S:  a  US   nSTUS      0nUS   [        ;   a  US   US'   U R                  R
                  R                  U R                  R                  R                  R                   U R                  R                  R                  R                   U R                  R                   TR                   U45        T" U /UQ70 UD6$ T" U /UQ70 UD6$ )Nprocessr   r8   rU   )rC   
startswithr   r   rZ   rj   r   r^   rn   rq   	__class__)rS   r   r&   r   infor@   
type_namess        r)   wrapped'getPhases.<locals>.log.<locals>.wrapped  s      ++I663t9q=Q
5= 9:=M1#(=DL&&(=(=(C(C(L(L(,(9(9(C(C(L(L(,(?(?(0(9(9(,	(. /
  6t6v666t6v66r*   )r   r4   )r@   keyvaluer  r  s   `   @r)   rj   getPhases.<locals>.log  s8    3=3C3C3EF3EZSej3EF
	7 # Gs   6c                 2    U (       a  [        U5      $ [        $ r3   )rI   r8   )use_metaclassmetaclass_funcs     r)   getMetaclassgetPhases.<locals>.getMetaclass  s    -n==Kr*   c                   R    \ rS rSrSrSrS rS rS rS r	S r
S	 rS
 rS rS rSrg)getPhases.<locals>.Phasei  zNBase class for helper object that implements each phase of processing
        )rZ   rO   __startTagCache__endTagCachec                 8    Xl         X l        0 U l        0 U l        g r3   )rZ   rO   _Phase__startTagCache_Phase__endTagCache)rS   rZ   rO   s      r)   rW   !getPhases.<locals>.Phase.__init__  s     KI#%D !#Dr*   c                     [         er3   )NotImplementedErrorrw   s    r)   r   #getPhases.<locals>.Phase.processEOF  s    %%r*   c                 h    U R                   R                  XR                   R                  S   5        g )Nr   rO   insertCommentr   r   s     r)   r   'getPhases.<locals>.Phase.processComment  s%     II##E99+A+A"+EFr*   c                 :    U R                   R                  S5        g )Nzunexpected-doctyperZ   r   r   s     r)   r   'getPhases.<locals>.Phase.processDoctype  s    KK""#78r*   c                 @    U R                   R                  US   5        g Nr   rO   
insertTextr   s     r)   r   *getPhases.<locals>.Phase.processCharacters      II  v/r*   c                 @    U R                   R                  US   5        g r"  r#  r   s     r)   r   /getPhases.<locals>.Phase.processSpaceCharacters  r&  r*   c                    US   nX R                   ;   a  U R                   U   nOU R                  U   =o0R                   U'   [        U R                   5      [        U R                  5      S-  :  ah  U R                   R                  [	        [        U R                   5      5      5        [        U R                   5      [        U R                  5      S-  :  a  Mh  U" U5      $ NrU   g?)r  startTagHandlerr   popnextiterrS   r   rU   funcs       r)   r   (getPhases.<locals>.Phase.processStartTag  s     =D +++++D1484H4H4NN++D1$../#d6J6J2Kc2QQ((,,T$t7K7K2L-MN $../#d6J6J2Kc2QQ ;r*   c                 v   U R                   R                  (       d$  US   S:X  a  U R                   R                  S5        US   R                  5        HR  u  p#X R                  R
                  S   R                  ;  d  M-  X0R                  R
                  S   R                  U'   MT     SU R                   l        g )NrU   r   znon-html-rootr   r   F)rZ   ri   r   r4   rO   r   r   rS   r   attrr  s       r)   startTagHtml%getPhases.<locals>.Phase.startTagHtml  s    ;;,,v&1H&&7  %V}224yy55a8CCCAFII**1-88>  5 ).DKK%r*   c                    US   nX R                   ;   a  U R                   U   nOU R                  U   =o0R                   U'   [        U R                   5      [        U R                  5      S-  :  ah  U R                   R                  [	        [        U R                   5      5      5        [        U R                   5      [        U R                  5      S-  :  a  Mh  U" U5      $ r*  )r  endTagHandlerr   r,  r-  r.  r/  s       r)   r   &getPhases.<locals>.Phase.processEndTag  s     =D )))))$/262D2DT2JJ))$/$,,-D4F4F0G#0MM&&**4T5G5G0H+IJ $,,-D4F4F0G#0MM ;r*   )r  r  rZ   rO   N)rC   rD   rE   rF   r   	__slots__rW   r   r   r   r   r   r   r5  r   rG   rB   r*   r)   Phaser    s:    	J		$	&	G
	9	0	0	"	.	r*   r;  c                   R    \ rS rSr\" 5       rS rS rS rS r	S r
S rS rS	 rS
rg)getPhases.<locals>.InitialPhasei  c                     g r3   rB   r   s     r)   r   6getPhases.<locals>.InitialPhase.processSpaceCharacters      r*   c                 b    U R                   R                  XR                   R                  5        g r3   rO   r  documentr   s     r)   r   .getPhases.<locals>.InitialPhase.processComment      II##E99+=+=>r*   c                    US   nUS   nUS   nUS   nUS:w  d  Uc	  Ub!  US:w  a  U R                   R                  S5        Uc  SnU R                  R                  U5        US:w  a  UR	                  [
        5      nU(       aY  US   S:w  dP  UR                  S	5      (       d:  US
;   d4  UR                  S5      (       a  Ub  U(       a&  UR                  5       S:X  a  SU R                   l        O@UR                  S5      (       d  UR                  S5      (       a  Ub  SU R                   l        U R                   R                  S   U R                   l
        g )NrU   publicIdsystemIdcorrectr   zabout:legacy-compatzunknown-doctype )7z*+//silmaril//dtd html pro v0r11 19970101//z4-//advasoft ltd//dtd html 3.0 aswedit + extensions//z*-//as//dtd html 3.0 aswedit + extensions//z-//ietf//dtd html 2.0 level 1//z-//ietf//dtd html 2.0 level 2//z&-//ietf//dtd html 2.0 strict level 1//z&-//ietf//dtd html 2.0 strict level 2//z-//ietf//dtd html 2.0 strict//z-//ietf//dtd html 2.0//z-//ietf//dtd html 2.1e//z-//ietf//dtd html 3.0//z-//ietf//dtd html 3.2 final//z-//ietf//dtd html 3.2//z-//ietf//dtd html 3//z-//ietf//dtd html level 0//z-//ietf//dtd html level 1//z-//ietf//dtd html level 2//z-//ietf//dtd html level 3//z"-//ietf//dtd html strict level 0//z"-//ietf//dtd html strict level 1//z"-//ietf//dtd html strict level 2//z"-//ietf//dtd html strict level 3//z-//ietf//dtd html strict//z-//ietf//dtd html//z(-//metrius//dtd metrius presentational//z5-//microsoft//dtd internet explorer 2.0 html strict//z.-//microsoft//dtd internet explorer 2.0 html//z0-//microsoft//dtd internet explorer 2.0 tables//z5-//microsoft//dtd internet explorer 3.0 html strict//z.-//microsoft//dtd internet explorer 3.0 html//z0-//microsoft//dtd internet explorer 3.0 tables//z#-//netscape comm. corp.//dtd html//z*-//netscape comm. corp.//dtd strict html//z*-//o'reilly and associates//dtd html 2.0//z3-//o'reilly and associates//dtd html extended 1.0//z;-//o'reilly and associates//dtd html extended relaxed 1.0//zN-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//zE-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//z$-//spyglass//dtd html 2.0 extended//z+-//sq//dtd html 2.0 hotmetal + extensions//z--//sun microsystems corp.//dtd hotjava html//z4-//sun microsystems corp.//dtd hotjava strict html//z-//w3c//dtd html 3 1995-03-24//z-//w3c//dtd html 3.2 draft//z-//w3c//dtd html 3.2 final//z-//w3c//dtd html 3.2//z-//w3c//dtd html 3.2s draft//z-//w3c//dtd html 4.0 frameset//z#-//w3c//dtd html 4.0 transitional//z(-//w3c//dtd html experimental 19960712//z&-//w3c//dtd html experimental 970421//z-//w3c//dtd w3 html//z-//w3o//dtd w3 html 3.0//z#-//webtechs//dtd mozilla html 2.0//z-//webtechs//dtd mozilla html//)z$-//w3o//dtd w3 html strict 3.0//en//z"-/w3c/dtd html 4.0 transitional/enr   )z -//w3c//dtd html 4.01 frameset//z$-//w3c//dtd html 4.01 transitional//z:http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtdquirks)z -//w3c//dtd xhtml 1.0 frameset//z$-//w3c//dtd xhtml 1.0 transitional//zlimited quirksrg   )rZ   r   rO   insertDoctyper   r   r  rl   rk   rR   rq   )rS   r   rU   rG  rH  rI  s         r)   r   .getPhases.<locals>.InitialPhase.processDoctype  sg   =DZ(HZ(HI&G("6(X9N-N&&'89II##E*2~#--.>?uV}6''6<7= 7=p  !) ) ''AB B $!15q!q)1&%%=> > %%?@ @ &)9& $ 2 2< @DKKr*   c                 v    SU R                   l        U R                   R                  S   U R                   l        g )NrK  rg   )rZ   rk   rR   rq   rw   s    r)   anythingElse,getPhases.<locals>.InitialPhase.anythingElseZ  s)    %-DKK" $ 2 2< @DKKr*   c                 \    U R                   R                  S5        U R                  5         U$ )Nzexpected-doctype-but-got-charsrZ   r   rO  r   s     r)   r   1getPhases.<locals>.InitialPhase.processCharacters^  s&    KK""#CDLr*   c                 h    U R                   R                  SSUS   05        U R                  5         U$ )Nz"expected-doctype-but-got-start-tagrU   rR  r   s     r)   r   /getPhases.<locals>.InitialPhase.processStartTagc  s4    KK""#G$*E&M#:<Lr*   c                 h    U R                   R                  SSUS   05        U R                  5         U$ )Nz expected-doctype-but-got-end-tagrU   rR  r   s     r)   r   -getPhases.<locals>.InitialPhase.processEndTagi  s4    KK""#E$*E&M#:<Lr*   c                 Z    U R                   R                  S5        U R                  5         g)Nzexpected-doctype-but-got-eofTrR  rw   s    r)   r   *getPhases.<locals>.InitialPhase.processEOFo  s$    KK""#ABr*   rB   N)rC   rD   rE   rF   tupler:  r   r   r   rO  r   r   r   r   rG   rB   r*   r)   InitialPhaser=    s5    G			?]	A~	A	
			r*   r[  c                   L    \ rS rSr\" 5       rS rS rS rS r	S r
S rS rS	rg
)"getPhases.<locals>.BeforeHtmlPhaseit  c                     U R                   R                  [        SS5      5        U R                  R                  S   U R                  l        g )Nr   r   r   )rO   
insertRootimpliedTagTokenrZ   rR   rq   rw   s    r)   rr   4getPhases.<locals>.BeforeHtmlPhase.insertHtmlElementx  s6    II  !DE $ 2 2< @DKKr*   c                 $    U R                  5         gNTrr   rw   s    r)   r   -getPhases.<locals>.BeforeHtmlPhase.processEOF}  s    ""$r*   c                 b    U R                   R                  XR                   R                  5        g r3   rB  r   s     r)   r   1getPhases.<locals>.BeforeHtmlPhase.processComment  rE  r*   c                     g r3   rB   r   s     r)   r   9getPhases.<locals>.BeforeHtmlPhase.processSpaceCharacters  r@  r*   c                 &    U R                  5         U$ r3   rd  r   s     r)   r   4getPhases.<locals>.BeforeHtmlPhase.processCharacters  s    ""$Lr*   c                 Z    US   S:X  a  SU R                   l        U R                  5         U$ )NrU   r   T)rZ   ri   rr   r   s     r)   r   2getPhases.<locals>.BeforeHtmlPhase.processStartTag  s+    V}&,0)""$Lr*   c                 |    US   S;  a"  U R                   R                  SSUS   05        g U R                  5         U$ )NrU   r   r   r   brzunexpected-end-tag-before-html)rZ   r   rr   r   s     r)   r   0getPhases.<locals>.BeforeHtmlPhase.processEndTag  sD    V}$BB&&'G(.f'>@ &&(r*   rB   N)rC   rD   rE   rF   rZ  r:  rr   r   r   r   r   r   r   rG   rB   r*   r)   BeforeHtmlPhaser]  t  s-    G		A
		?				r*   rr  c                       \ rS rSr\" 5       rS rS rS rS r	S r
S rS rS	 r\R                  " S
\	4S\
4/5      r\\l        \R                  " S\4/5      r\\l        Srg)"getPhases.<locals>.BeforeHeadPhasei  c                 :    U R                  [        SS5      5        g)Nr   r   TstartTagHeadr`  rw   s    r)   r   -getPhases.<locals>.BeforeHeadPhase.processEOF  s    ofjABr*   c                     g r3   rB   r   s     r)   r   9getPhases.<locals>.BeforeHeadPhase.processSpaceCharacters  r@  r*   c                 <    U R                  [        SS5      5        U$ Nr   r   rv  r   s     r)   r   4getPhases.<locals>.BeforeHeadPhase.processCharacters      ofjABLr*   c                 R    U R                   R                  S   R                  U5      $ Nr   rZ   rR   r   r   s     r)   r5  /getPhases.<locals>.BeforeHeadPhase.startTagHtml  "    ;;%%h/??FFr*   c                     U R                   R                  U5        U R                   R                  S   U R                   l        U R                  R
                  S   U R                  l        g )Nr   inHead)rO   r   r   headPointerrZ   rR   rq   r   s     r)   rw  /getPhases.<locals>.BeforeHeadPhase.startTagHead  sJ    II##E*$(II$:$:2$>DII! $ 2 28 <DKKr*   c                 <    U R                  [        SS5      5        U$ r|  rv  r   s     r)   startTagOther0getPhases.<locals>.BeforeHeadPhase.startTagOther  r~  r*   c                 <    U R                  [        SS5      5        U$ r|  rv  r   s     r)   endTagImplyHead2getPhases.<locals>.BeforeHeadPhase.endTagImplyHead  r~  r*   c                 F    U R                   R                  SSUS   05        g )Nzend-tag-after-implied-rootrU   r  r   s     r)   endTagOther.getPhases.<locals>.BeforeHeadPhase.endTagOther  s#    KK""#?$*E&M#:<r*   r   r   ro  rB   N)rC   rD   rE   rF   rZ  r:  r   r   r   r5  rw  r  r  r  r   MethodDispatcherr+  defaultr8  rG   rB   r*   r)   BeforeHeadPhasert    s    G					G	=
			< !11\"\"3
  #0//+_=1
  !,r*   r  c                      \ rS rSr\" 5       rS rS rS rS r	S r
S rS rS	 rS
 rS rS rS rS rS rS r\R,                  " S\4S\4S\4S\4S\4S\
4S\4S\	4/5      r\\l        \R,                  " S\4S\4/5      r\\l        Srg)getPhases.<locals>.InHeadPhasei  c                 $    U R                  5         grc  rO  rw   s    r)   r   )getPhases.<locals>.InHeadPhase.processEOF      r*   c                 &    U R                  5         U$ r3   r  r   s     r)   r   0getPhases.<locals>.InHeadPhase.processCharacters      Lr*   c                 R    U R                   R                  S   R                  U5      $ r  r  r   s     r)   r5  +getPhases.<locals>.InHeadPhase.startTagHtml  r  r*   c                 :    U R                   R                  S5        g )Nz!two-heads-are-not-better-than-oner  r   s     r)   rw  +getPhases.<locals>.InHeadPhase.startTagHead  s    KK""#FGr*   c                     U R                   R                  U5        U R                   R                  R                  5         SUS'   g NTr   rO   r   r   r,  r   s     r)   startTagBaseLinkCommand6getPhases.<locals>.InHeadPhase.startTagBaseLinkCommand  5    II##E*II""&&(/3E+,r*   c                    U R                   R                  U5        U R                   R                  R                  5         SUS'   US   nU R                  R
                  R                  R                  S   S:X  a  SU;   a3  U R                  R
                  R                  R                  US   5        g SU;   a  SU;   a  US   R                  5       S	:X  a~  [        R                  " US   R                  S
5      5      n[        R                  " U5      nUR                  5       nU R                  R
                  R                  R                  U5        g g g g g )NTr   r   r   	tentativecharsetcontentz
http-equivzcontent-typezutf-8)rO   r   r   r,  rZ   r^   ra   r{   changeEncodingrl   r	   EncodingBytesencodeContentAttrParserr#   )rS   r   r   r   rZ   codecs         r)   startTagMeta+getPhases.<locals>.InHeadPhase.startTagMeta  s$   II##E*II""&&(/3E+,vJ{{$$++88;{J
*KK))00??
9@UV:-"j0 .446.H
 (55j6K6R6RSZ6[\D);;DAF"LLNEKK))00??F I 1 . Kr*   c                 <    U R                   R                  US5        g )Nr   rZ   r   r   s     r)   startTagTitle,getPhases.<locals>.InHeadPhase.startTagTitle  s    KK**5(;r*   c                 <    U R                   R                  US5        g )Nr   r  r   s     r)   startTagNoFramesStyle4getPhases.<locals>.InHeadPhase.startTagNoFramesStyle      KK**5)<r*   c                     U R                   R                  (       a  U R                   R                  US5        g U R                  R	                  U5        U R                   R
                  S   U R                   l        g )Nr   inHeadNoscript)rZ   r\   r   rO   r   rR   rq   r   s     r)   startTagNoscript/getPhases.<locals>.InHeadPhase.startTagNoscript  sQ    {{$$..ui@		''.$(KK$6$67G$H!r*   c                 F   U R                   R                  U5        U R                  R                  R                  U R                  R                  l        U R                  R                  U R                  l        U R                  R                  S   U R                  l        g )Nr   )	rO   r   rZ   r^   scriptDataStatern   rq   r   rR   r   s     r)   startTagScript-getPhases.<locals>.InHeadPhase.startTagScript   sg    II##E**.++*?*?*O*ODKK!!'(,(9(9DKK% $ 2 26 :DKKr*   c                 &    U R                  5         U$ r3   r  r   s     r)   r  ,getPhases.<locals>.InHeadPhase.startTagOther  r  r*   c                     U R                   R                  R                  R                  5       nUR                  S:X  d   SUR                  -  5       eU R                   R
                  S   U R                   l        g )Nr   zExpected head got %s	afterHeadrZ   rO   r   r,  rU   rR   rq   rS   r   r   s      r)   
endTagHead)getPhases.<locals>.InHeadPhase.endTagHead
  s\    ;;##00446D99&J(>(JJ& $ 2 2; ?DKKr*   c                 &    U R                  5         U$ r3   r  r   s     r)   endTagHtmlBodyBr/getPhases.<locals>.InHeadPhase.endTagHtmlBodyBr  r  r*   c                 F    U R                   R                  SSUS   05        g Nunexpected-end-tagrU   r  r   s     r)   r  *getPhases.<locals>.InHeadPhase.endTagOther       KK""#7&%-9PQr*   c                 8    U R                  [        S5      5        g )Nr   )r  r`  rw   s    r)   rO  +getPhases.<locals>.InHeadPhase.anythingElse  s    OOOF34r*   r   title)noframesstylenoscriptscript)basebasefontbgsoundcommandlinkr:   r   )rp  r   r   rB   N)rC   rD   rE   rF   rZ  r:  r   r   r5  rw  r  r  r  r  r  r  r  r  r  r  rO  r   r  r+  r  r8  rG   rB   r*   r)   InHeadPhaser    s    G				G	H	4
	G*	<	=	I	;		@
		R	5 !11\"m$"$9:)*~&?$&\"\"
3
 
 #0//Z #%561
  !,r*   r  c                       \ rS rSr\" 5       rS rS rS rS r	S r
S rS rS	 rS
 rS rS rS r\R&                  " S\
4S\4S\4/5      r\\l        \R&                  " S\4S\4/5      r\\l        Srg)&getPhases.<locals>.InHeadNoscriptPhasei,  c                 Z    U R                   R                  S5        U R                  5         g)Nzeof-in-head-noscriptTrR  rw   s    r)   r   1getPhases.<locals>.InHeadNoscriptPhase.processEOF/  s$    KK""#9:r*   c                 R    U R                   R                  S   R                  U5      $ Nr  )rZ   rR   r   r   s     r)   r   5getPhases.<locals>.InHeadNoscriptPhase.processComment4  s"    ;;%%h/>>uEEr*   c                 \    U R                   R                  S5        U R                  5         U$ )Nzchar-in-head-noscriptrR  r   s     r)   r   8getPhases.<locals>.InHeadNoscriptPhase.processCharacters7  s&    KK""#:;Lr*   c                 R    U R                   R                  S   R                  U5      $ r  rZ   rR   r   r   s     r)   r   =getPhases.<locals>.InHeadNoscriptPhase.processSpaceCharacters<  "    ;;%%h/FFuMMr*   c                 R    U R                   R                  S   R                  U5      $ r  r  r   s     r)   r5  3getPhases.<locals>.InHeadNoscriptPhase.startTagHtml?  r  r*   c                 R    U R                   R                  S   R                  U5      $ r  r  r   s     r)   r  >getPhases.<locals>.InHeadNoscriptPhase.startTagBaseLinkCommandB  r  r*   c                 F    U R                   R                  SSUS   05        g Nunexpected-start-tagrU   r  r   s     r)   startTagHeadNoscript;getPhases.<locals>.InHeadNoscriptPhase.startTagHeadNoscriptE       KK""#9FE&M;RSr*   c                 h    U R                   R                  SSUS   05        U R                  5         U$ Nzunexpected-inhead-noscript-tagrU   rR  r   s     r)   r  4getPhases.<locals>.InHeadNoscriptPhase.startTagOtherH  2    KK""#CfeTZmE\]Lr*   c                     U R                   R                  R                  R                  5       nUR                  S:X  d   SUR                  -  5       eU R                   R
                  S   U R                   l        g )Nr  zExpected noscript got %sr  r  r  s      r)   endTagNoscript5getPhases.<locals>.InHeadNoscriptPhase.endTagNoscriptM  s\    ;;##00446D99
*R,F,RR* $ 2 28 <DKKr*   c                 h    U R                   R                  SSUS   05        U R                  5         U$ r  rR  r   s     r)   endTagBr/getPhases.<locals>.InHeadNoscriptPhase.endTagBrR  r  r*   c                 F    U R                   R                  SSUS   05        g r  r  r   s     r)   r  2getPhases.<locals>.InHeadNoscriptPhase.endTagOtherW  r  r*   c                 8    U R                  [        S5      5        g )Nr  )r  r`  rw   s    r)   rO  3getPhases.<locals>.InHeadNoscriptPhase.anythingElseZ  s    
 ;<r*   r   )r  r  r  r:   r  r  )r   r  r  rp  rB   N)rC   rD   rE   rF   rZ  r:  r   r   r   r   r5  r  r  r  r  r  r  rO  r   r  r+  r  r8  rG   rB   r*   r)   InHeadNoscriptPhaser  ,  s    G		
	F	
	N	G	G	T	
	=
	
	R	= !11\"IKbc!#783
 
 #0//(81
  !,r*   r  c                       \ rS rSr\" 5       rS rS rS rS r	S r
S rS rS	 rS
 rS rS r\R$                  " S\4S\	4S\
4S\4S\4/5      r\\l        \R$                  " S\4/5      r\\l        Srg)!getPhases.<locals>.AfterHeadPhaseik  c                 $    U R                  5         grc  r  rw   s    r)   r   ,getPhases.<locals>.AfterHeadPhase.processEOFn  r  r*   c                 &    U R                  5         U$ r3   r  r   s     r)   r   3getPhases.<locals>.AfterHeadPhase.processCharactersr  r  r*   c                 R    U R                   R                  S   R                  U5      $ r  r  r   s     r)   r5  .getPhases.<locals>.AfterHeadPhase.startTagHtmlv  r  r*   c                     SU R                   l        U R                  R                  U5        U R                   R                  S   U R                   l        g )NFr   )rZ   rv   rO   r   rR   rq   r   s     r)   startTagBody.getPhases.<locals>.AfterHeadPhase.startTagBodyy  s;    %*DKK"II##E* $ 2 28 <DKKr*   c                     U R                   R                  U5        U R                  R                  S   U R                  l        g )Nr   )rO   r   rZ   rR   rq   r   s     r)   startTagFrameset2getPhases.<locals>.AfterHeadPhase.startTagFrameset~  s/    II##E* $ 2 2< @DKKr*   c                    U R                   R                  SSUS   05        U R                  R                  R	                  U R                  R
                  5        U R                   R                  S   R                  U5        U R                  R                  S S S2    H:  nUR                  S:X  d  M  U R                  R                  R                  U5          g    g )Nz#unexpected-start-tag-out-of-my-headrU   r  r   r   )
rZ   r   rO   r   r   r  rR   r   rU   remover  s      r)   startTagFromHead2getPhases.<locals>.AfterHeadPhase.startTagFromHead  s    KK""#H$*E&M#:<II""))$))*?*?@KKx(88?		..tt499&II**11$7 5r*   c                 F    U R                   R                  SSUS   05        g r  r  r   s     r)   rw  .getPhases.<locals>.AfterHeadPhase.startTagHead  r  r*   c                 &    U R                  5         U$ r3   r  r   s     r)   r  /getPhases.<locals>.AfterHeadPhase.startTagOther  r  r*   c                 &    U R                  5         U$ r3   r  r   s     r)   r  2getPhases.<locals>.AfterHeadPhase.endTagHtmlBodyBr  r  r*   c                 F    U R                   R                  SSUS   05        g r  r  r   s     r)   r  -getPhases.<locals>.AfterHeadPhase.endTagOther  r  r*   c                     U R                   R                  [        SS5      5        U R                  R                  S   U R                  l        SU R                  l        g )Nr   r   r   T)rO   r   r`  rZ   rR   rq   rv   rw   s    r)   rO  .getPhases.<locals>.AfterHeadPhase.anythingElse  sB    II##OFJ$GH $ 2 28 <DKK%)DKK"r*   r   r   r   )	r  r  r  r  r:   r  r  r  r  r   )r   r   rp  rB   N)rC   rD   rE   rF   rZ  r:  r   r   r5  r  r  r  rw  r  r  r  rO  r   r  r+  r  r8  rG   rB   r*   r)   AfterHeadPhaser  k  s    G				G	=
	A		T			R	*
 !11\"\")*  \"3
  #0//2H2B2D 1E F +r*   r!  c                     >^  \ rS rSrSrUU 4S jrS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S* r,S+ r-S, r.S- r/S. r0S/ r1S0 r2S1 r3S2 r4S3 r5S4 r6S5 r7\8Rr                  " / S6 YRt                  4PS7\4PS8\4PS9\4PS:\4P\;\4PS;\4PS<\4PS=\4PS>\4PS?\4PS@\4PSA\4PSB\4PSC\4PSD\4PSE\4PSF\4PSG\4PSH\4PSI\4PSJ\ 4PSK\!4PSL\"4PSM\#4PSN\$4PSO\%4PSP\'4PSQ\(4PSR\&4PSS\)4PST\*4PSU\+4P5      r<\,\<l=        \8Rr                  " S8\.4S6\/4SV\04S<\14SW\-4SX\24\;\34SY\44SC\54SZ\64/
5      r>\7\>l=        Sr?U =r@$ )[getPhases.<locals>.InBodyPhasei  )r   c                 H   > [         TU ]  " U0 UD6  U R                  U l        g r3   )superrW   processSpaceCharactersNonPrer   )rS   r   r&   InBodyPhaser  s      r)   rW   'getPhases.<locals>.InBodyPhase.__init__  s%    +t-t>v>*.*K*KD'r*   c                     UR                   UR                   :H  =(       a9    UR                  UR                  :H  =(       a    UR                  UR                  :H  $ r3   )rU   r   r   )rS   node1node2s      r)   isMatchingFormattingElement:getPhases.<locals>.InBodyPhase.isMatchingFormattingElement  sE    JJ%**, 9OOu69$$(8(88:r*   c                    U R                   R                  U5        U R                   R                  S   n/ nU R                   R                  S S S2    H7  nU[        L a    O-U R                  XB5      (       d  M&  UR                  U5        M9     [        U5      S::  d   e[        U5      S:X  a(  U R                   R                  R                  US   5        U R                   R                  R                  U5        g )Nr      )	rO   r   r   activeFormattingElementsr   r,  r   r   r  )rS   r   r   matchingElementsr   s        r)   addFormattingElement3getPhases.<locals>.InBodyPhase.addFormattingElement  s    II##E*ii,,R0G!		::4R4@6>55dDD$++D1	 A '(A---#$)		2299:J2:NOII..55g>r*   c                     [        S5      nU R                  R                  S S S2    H0  nUR                  U;  d  M  U R                  R                  S5          g    g )N)dddtlir(   r   r   r   r   r   r   r   r   r   z expected-closing-tag-but-got-eof)r   rO   r   rU   rZ   r   )rS   allowed_elementsr   s      r)   r   )getPhases.<locals>.InBodyPhase.processEOF  sT    ( *2  3 		..tt499$44KK**+MN 5r*   c                    US   nU R                   U l        UR                  S5      (       aX  U R                  R                  S   R
                  S;   a1  U R                  R                  S   R                  5       (       d  USS  nU(       a6  U R                  R                  5         U R                  R                  U5        g g )Nr   
r   )prelistingtextarear   )	r&  r   r  rO   r   rU   
hasContent#reconstructActiveFormattingElementsr$  )rS   r   r   s      r)   !processSpaceCharactersDropNewline@getPhases.<locals>.InBodyPhase.processSpaceCharactersDropNewline  s     =D*.*K*KD'%%		&&r*//3QQ		..r2==??ABx		==?		$$T* r*   c                 D   US   S:X  a  g U R                   R                  5         U R                   R                  US   5        U R                  R                  (       a>  [        US    Vs/ s H  nU[        ;  PM     sn5      (       a  SU R                  l        g g g s  snf )Nr    F)rO   r@  r$  rZ   rv   anyr   )rS   r   chars      r)   r   0getPhases.<locals>.InBodyPhase.processCharacters  s    V}(II99;II  v/&&!&v0!. 0!.0 1 1).&1 '0s   *Bc                 t    U R                   R                  5         U R                   R                  US   5        g r"  )rO   r@  r$  r   s     r)   r&  ;getPhases.<locals>.InBodyPhase.processSpaceCharactersNonPre  s(    II99;II  v/r*   c                 R    U R                   R                  S   R                  U5      $ r  r  r   s     r)   startTagProcessInHead4getPhases.<locals>.InBodyPhase.startTagProcessInHead  r  r*   c                    U R                   R                  SSS05        [        U R                  R                  5      S:X  d'  U R                  R                  S   R
                  S:w  a  U R                   R                  (       d   eg SU R                   l        US   R                  5        HR  u  p#X R                  R                  S   R                  ;  d  M-  X0R                  R                  S   R                  U'   MT     g )Nr  rU   r   r   Fr   )
rZ   r   r   rO   r   rU   rb   rv   r4   r   r3  s       r)   r  +getPhases.<locals>.InBodyPhase.startTagBody  s    KK""#9FF;KLDII**+q0II**1-22f<{{,,,,).&#(=#6#6#8KD99#9#9!#<#G#GGEJ		..q1<<TB $9r*   c                    U R                   R                  SSS05        [        U R                  R                  5      S:X  d'  U R                  R                  S   R
                  S:w  a  U R                   R                  (       d   eg U R                   R                  (       d  g U R                  R                  S   R                  (       aI  U R                  R                  S   R                  R                  U R                  R                  S   5        U R                  R                  S   R
                  S:w  aM  U R                  R                  R                  5         U R                  R                  S   R
                  S:w  a  MM  U R                  R                  U5        U R                   R                  S   U R                   l        g )	Nr  rU   r   r   r   r   r   r   )rZ   r   r   rO   r   rU   rb   rv   parentremoveChildr,  r   rR   rq   r   s     r)   r  /getPhases.<locals>.InBodyPhase.startTagFrameset  s=   KK""#9FJ;OPDII**+q0DII4J4J14M4R4RV\4\{{,,,,[[++99))!,33II**1-44@@AWAWXYAZ[ii,,R055?II**..0 ii,,R055?		''.$(KK$6$6|$D!r*   c                     U R                   R                  SSS9(       a  U R                  [        S5      5        U R                   R	                  U5        g Nr(   buttonvariant)rO   elementInScopeendTagPr`  r   r   s     r)   startTagCloseP-getPhases.<locals>.InBodyPhase.startTagCloseP  s<    yy''X'>_S12II##E*r*   c                     U R                   R                  SSS9(       a  U R                  [        S5      5        U R                   R	                  U5        SU R
                  l        U R                  U l        g )Nr(   rU  rV  F)	rO   rX  rY  r`  r   rZ   rv   rA  r   r   s     r)   startTagPreListing1getPhases.<locals>.InBodyPhase.startTagPreListing  sV    yy''X'>_S12II##E*%*DKK"*.*P*PD'r*   c                 p   U R                   R                  (       a  U R                  R                  SSS05        g U R                   R	                  SSS9(       a  U R                  [        S5      5        U R                   R                  U5        U R                   R                  S   U R                   l        g )Nr  rU   formr(   rU  rV  r   )	rO   formPointerrZ   r   rX  rY  r`  r   r   r   s     r)   startTagForm+getPhases.<locals>.InBodyPhase.startTagForm  s~    yy$$&&'=?OP99++C+BLL!56		''.(,		(>(>r(B		%r*   c                 N   SU R                   l        S/SS/SS/S.nX!S      n[        U R                  R                  5       Hv  nUR
                  U;   a;  U R                   R                  R                  [        UR
                  S5      5          O,UR                  [        ;   d  Md  UR
                  S;  d  Mv    O   U R                  R                  S	S
S9(       a/  U R                   R                  R                  [        S	S5      5        U R                  R                  U5        g )NFr7  r6  r5  )r7  r6  r5  rU   r   )addressr   r(   r(   rU  rV  )rZ   rv   reversedrO   r   rU   rq   r   r`  	nameTupler   rX  r   )rS   r   stopNamesMap	stopNamesr   s        r)   startTagListItem/getPhases.<locals>.InBodyPhase.startTagListItem&  s    %*DKK"#'&#',#',0L %6]3I !7!7899	)KK%%33'		8<>NNo5		)@@ 9 yy''X'>!!//#C24 II##E*r*   c                    U R                   R                  SSS9(       a  U R                  [        S5      5        U R                   R	                  U5        U R
                  R                  R                  U R
                  R                  l        g rT  )	rO   rX  rY  r`  r   rZ   r^   rp   rn   r   s     r)   startTagPlaintext0getPhases.<locals>.InBodyPhase.startTagPlaintext<  s^    yy''X'>_S12II##E**.++*?*?*N*NDKK!!'r*   c                    U R                   R                  SSS9(       a  U R                  [        S5      5        U R                   R                  S   R
                  [        ;   aE  U R                  R                  SSUS   05        U R                   R                  R                  5         U R                   R                  U5        g )Nr(   rU  rV  r   r  rU   )rO   rX  rY  r`  r   rU   r   rZ   r   r,  r   r   s     r)   startTagHeading.getPhases.<locals>.InBodyPhase.startTagHeadingB  s    yy''X'>_S12yy%%b)../A&&'=f?VW		&&**,II##E*r*   c                    U R                   R                  S5      nU(       a  U R                  R                  SSSS.5        U R	                  [        S5      5        X R                   R                  ;   a%  U R                   R                  R                  U5        X R                   R                  ;   a%  U R                   R                  R                  U5        U R                   R                  5         U R                  U5        g )Na$unexpected-start-tag-implies-end-tag	startNameendName)rO   !elementInActiveFormattingElementsrZ   r   endTagFormattingr`  r   r  r0  r@  r2  )rS   r   afeAElements      r)   	startTagA(getPhases.<locals>.InBodyPhase.startTagAJ  s    ))EEcJK&&'M58S'IK%%oc&:;))"8"88II**11+>))"D"DDII66==kJII99;%%e,r*   c                 Z    U R                   R                  5         U R                  U5        g r3   )rO   r@  r2  r   s     r)   startTagFormatting1getPhases.<locals>.InBodyPhase.startTagFormattingW  s     II99;%%e,r*   c                 @   U R                   R                  5         U R                   R                  S5      (       aS  U R                  R	                  SSSS.5        U R                  [        S5      5        U R                   R                  5         U R                  U5        g )Nnobrrt  ru  )rO   r@  rX  rZ   r   r   r`  r2  r   s     r)   startTagNobr+getPhases.<locals>.InBodyPhase.startTagNobr[  sv    II99;yy''//&&'M5;'OQ""?6#:;		==?%%e,r*   c                 F   U R                   R                  S5      (       a;  U R                  R                  SSSS.5        U R	                  [        S5      5        U$ U R                   R                  5         U R                   R                  U5        SU R                  l        g )NrU  rt  ru  F)	rO   rX  rZ   r   r   r`  r@  r   rv   r   s     r)   startTagButton-getPhases.<locals>.InBodyPhase.startTagButtone  s{    yy''11&&'M5=('SU""?8#<=		==?		''.).&r*   c                     U R                   R                  5         U R                   R                  U5        U R                   R                  R	                  [
        5        SU R                  l        g NF)rO   r@  r   r0  r   r   rZ   rv   r   s     r)   startTagAppletMarqueeObject:getPhases.<locals>.InBodyPhase.startTagAppletMarqueeObjectp  sH    II99;II##E*II..55f=%*DKK"r*   c                    U R                   R                  SSS9(       a  U R                  [        S5      5        U R                   R	                  5         SU R
                  l        U R
                  R                  US5        g )Nr(   rU  rV  Fr   )rO   rX  rY  r`  r@  rZ   rv   r   r   s     r)   startTagXmp*getPhases.<locals>.InBodyPhase.startTagXmpv  sZ    yy''X'>_S12II99;%*DKK"KK**5)<r*   c                 R   U R                   R                  S:w  a9  U R                  R                  SSS9(       a  U R	                  [        S5      5        U R                  R                  U5        SU R                   l        U R                   R                  S   U R                   l	        g )NrK  r(   rU  rV  Fr   )
rZ   rk   rO   rX  r   r`  r   rv   rR   rq   r   s     r)   startTagTable,getPhases.<locals>.InBodyPhase.startTagTable}  sw    {{%%199++C+B&&s';<II##E*%*DKK" $ 2 29 =DKKr*   c                     U R                   R                  5         U R                   R                  U5        U R                   R                  R	                  5         SUS'   SU R
                  l        g )NTr   F)rO   r@  r   r   r,  rZ   rv   r   s     r)   startTagVoidFormatting5getPhases.<locals>.InBodyPhase.startTagVoidFormatting  sQ    II99;II##E*II""&&(/3E+,%*DKK"r*   c                     U R                   R                  nU R                  U5        SUS   ;   a1  US   S   R                  [        5      S:X  a  X R                   l        g g g )Nr8   r   hidden)rZ   rv   r  r   r   )rS   r   rv   s      r)   startTagInput,getPhases.<locals>.InBodyPhase.startTagInput  s]    //J''.%-'&M&)334DEQ)3& R (r*   c                     U R                   R                  U5        U R                   R                  R                  5         SUS'   g r  r  r   s     r)   startTagParamSource2getPhases.<locals>.InBodyPhase.startTagParamSource  r  r*   c                     U R                   R                  SSS9(       a  U R                  [        S5      5        U R                   R	                  U5        U R                   R
                  R                  5         SUS'   SU R                  l        g )Nr(   rU  rV  Tr   F)	rO   rX  rY  r`  r   r   r,  rZ   rv   r   s     r)   
startTagHr)getPhases.<locals>.InBodyPhase.startTagHr  si    yy''X'>_S12II##E*II""&&(/3E+,%*DKK"r*   c           	          U R                   R                  SSSS.5        U R                  [        SSUS   US   S95        g )	Nzunexpected-start-tag-treated-asimageimgoriginalNamenewNamer   r   r   r   r   )rZ   r   r   r`  r   s     r)   startTagImage,getPhases.<locals>.InBodyPhase.startTagImage  sJ    KK""#D4;#NP  
<A&M=B==Q"S Tr*   c           	         U R                   R                  SSS05        U R                  R                  (       a  g 0 nSUS   ;   a  US   S   US'   U R	                  [        SSUS95        U R	                  [        S	S5      5        U R	                  [        S
S5      5        SUS   ;   a	  US   S   nOSnU R                  [        S   US.5        US   R                  5       nSU;   a  US	 SU;   a  US	 SUS'   U R	                  [        SSUUS   S95        U R                  [        S
5      5        U R	                  [        S	S5      5        U R                  [        S5      5        g )Nzdeprecated-tagrU   isindexactionr   r`  r   )r   hrlabelpromptz3This is a searchable index. Enter search keywords: r   r8   r   inputr   r  )
rZ   r   rO   ra  r   r`  r   r   copyr   )rS   r   
form_attrsr  r   s        r)   startTagIsIndex.getPhases.<locals>.InBodyPhase.startTagIsIndex  sr   KK""#3fi5HIyy$$J5=(',V}X'>
8$  <F"H I  z!BC  *!EF5=(vx0N""#L16BDv++-J:%x(:%x(!*Jv  *<F=B==Q"S T w78  z!BCv67r*   c                     U R                   R                  U5        U R                  R                  R                  U R                  R                  l        U R                  U l        SU R                  l        g r  )	rO   r   rZ   r^   rm   rn   rA  r   rv   r   s     r)   startTagTextarea/getPhases.<locals>.InBodyPhase.startTagTextarea  sP    II##E**.++*?*?*K*KDKK!!'*.*P*PD'%*DKK"r*   c                 H    SU R                   l        U R                  U5        g r  )rZ   rv   startTagRawtextr   s     r)   startTagIFrame-getPhases.<locals>.InBodyPhase.startTagIFrame  s    %*DKK"  'r*   c                     U R                   R                  (       a  U R                  U5        g U R                  U5        g r3   )rZ   r\   r  r  r   s     r)   r  /getPhases.<locals>.InBodyPhase.startTagNoscript  s+    {{$$$$U+""5)r*   c                 <    U R                   R                  US5        g)z8iframe, noembed noframes, noscript(if scripting enabled)r   Nr  r   s     r)   r  .getPhases.<locals>.InBodyPhase.startTagRawtext  r  r*   c                 ,   U R                   R                  S   R                  S:X  a.  U R                  R                  R                  [        S5      5        U R                   R                  5         U R                  R                   R                  U5        g Nr   option)	rO   r   rU   rZ   rq   r   r`  r@  r   r   s     r)   startTagOpt*getPhases.<locals>.InBodyPhase.startTagOpt  sd    yy%%b)..(:!!//0IJII99;KK**51r*   c                    U R                   R                  5         U R                   R                  U5        SU R                  l        U R                  R
                  U R                  R                  S   U R                  R                  S   U R                  R                  S   U R                  R                  S   U R                  R                  S   U R                  R                  S   4;   a)  U R                  R                  S   U R                  l        g U R                  R                  S	   U R                  l        g )
NFr   r   r   r   r   r   inSelectInTabler   )rO   r@  r   rZ   rv   rq   rR   r   s     r)   startTagSelect-getPhases.<locals>.InBodyPhase.startTagSelect  s    II99;II##E*%*DKK"{{  T[[%7%7	%B%)[[%7%7%D%)[[%7%7%H%)[[%7%7%F%)[[%7%7%@%)[[%7%7%A%C C %)KK$6$67H$I!$(KK$6$6z$B!r*   c                 0   U R                   R                  S5      (       a[  U R                   R                  5         U R                   R                  S   R                  S:w  a  U R
                  R                  5         U R                   R                  U5        g )Nrubyr   )rO   rX  generateImpliedEndTagsr   rU   rZ   r   r   r   s     r)   startTagRpRt+getPhases.<locals>.InBodyPhase.startTagRpRt  sf    yy''//		00299))"-22f<KK**,II##E*r*   c                 Z   U R                   R                  5         U R                  R                  U5        U R                  R	                  U5        [
        S   US'   U R                   R                  U5        US   (       a*  U R                   R                  R                  5         SUS'   g g )Nr   r   r   Tr   )	rO   r@  rZ   r   r   r   r   r   r,  r   s     r)   startTagMath+getPhases.<locals>.InBodyPhase.startTagMath  s    II99;KK..u5KK//6!+H!5E+II##E* ]#		&&**,37/0 $r*   c                 Z   U R                   R                  5         U R                  R                  U5        U R                  R	                  U5        [
        S   US'   U R                   R                  U5        US   (       a*  U R                   R                  R                  5         SUS'   g g )Nr   r   r   Tr   )	rO   r@  rZ   r   r   r   r   r   r,  r   s     r)   startTagSvg*getPhases.<locals>.InBodyPhase.startTagSvg  s    II99;KK++E2KK//6!+E!2E+II##E* ]#		&&**,37/0 $r*   c                 F    U R                   R                  SSUS   05        g)zElements that should be children of other elements that have a
different insertion mode; here they are ignored
"caption", "col", "colgroup", "frame", "frameset", "head",
"option", "optgroup", "tbody", "td", "tfoot", "th", "thead",
"tr", "noscript"
zunexpected-start-tag-ignoredrU   Nr  r   s     r)   startTagMisplaced0getPhases.<locals>.InBodyPhase.startTagMisplaced  s#     KK""#AFERXMCZ[r*   c                 n    U R                   R                  5         U R                   R                  U5        g r3   )rO   r@  r   r   s     r)   r  ,getPhases.<locals>.InBodyPhase.startTagOther  s$    II99;II##E*r*   c                    U R                   R                  SSS9(       dU  U R                  [        SS5      5        U R                  R                  SSS05        U R                  [        SS5      5        g U R                   R                  S5        U R                   R                  S   R                  S:w  a  U R                  R                  SSS05        U R                   R                  R                  5       nUR                  S:w  a7  U R                   R                  R                  5       nUR                  S:w  a  M6  g g )	Nr(   rU  rV  r   r  rU   r   r   )rO   rX  rZ  r`  rZ   r   rY  r  r   rU   r,  r  s      r)   rY  &getPhases.<locals>.InBodyPhase.endTagP  s    99++C+B##OC$DE&&';fc]K_S(;<		00599))"-22c9KK**+?&#Oyy--113ii3&9911557D ii3&r*   c                    U R                   R                  S5      (       d  U R                  R                  5         g U R                   R                  S   R
                  S:w  ad  U R                   R                  SS   HG  nUR
                  [        S5      ;  d  M  U R                  R                  SSUR
                  S.5          O   U R                  R                  S   U R                  l        g )Nr   r      )r5  r6  r7  optgroupr  r(   rprtr   r   r   r   r   r   r   r   $expected-one-end-tag-but-got-anothergotNameexpectedName	afterBody)	rO   rX  rZ   r   r   rU   r   rR   rq   r  s      r)   
endTagBody)getPhases.<locals>.InBodyPhase.endTagBody)  s    99++F33&&(''+00F: II22126Dyy	 3; )< < ..B(.		JL  7 !% 2 2; ?DKKr*   c                 |    U R                   R                  S5      (       a  U R                  [        S5      5        U$ g )Nr   )rO   rX  r  r`  r   s     r)   
endTagHtml)getPhases.<locals>.InBodyPhase.endTagHtml;  s2    yy''// 78 0r*   c                 >   US   S:X  a  U R                   U l        U R                  R                  US   5      nU(       a  U R                  R	                  5         U R                  R
                  S   R                  US   :w  a!  U R                  R                  SSUS   05        U(       ar  U R                  R
                  R                  5       nUR                  US   :w  a:  U R                  R
                  R                  5       nUR                  US   :w  a  M9  g g g )NrU   r<  r   end-tag-too-early)
r&  r   rO   rX  r  r   rU   rZ   r   r,  )rS   r   inScoper   s       r)   endTagBlock*getPhases.<locals>.InBodyPhase.endTagBlockA  s    V}%.2.O.O+ii..uV}=G		002yy%%b)..%-?&&':VU6]<STyy--113ii5=09911557D ii5=0 r*   c                    U R                   R                  nS U R                   l        Ub   U R                   R                  U5      (       d  U R                  R	                  SSS05        g U R                   R                  5         U R                   R                  S   U:w  a  U R                  R	                  SSS05        U R                   R                  R                  U5        g )Nr  rU   r`  r   zend-tag-too-early-ignored)rO   ra  rX  rZ   r   r  r   r  r  s      r)   
endTagForm)getPhases.<locals>.InBodyPhase.endTagFormO  s    99((D$(DII!|499#;#;D#A#A&&';(.'79 		00299))"-5KK**+F,2F+;=		&&--d3r*   c                 X   US   S:X  a  SnOS nU R                   R                  US   US9(       d"  U R                  R                  SSUS   05        g U R                   R	                  US   S9  U R                   R
                  S   R                  US   :w  a!  U R                  R                  SSUS   05        U R                   R
                  R                  5       nUR                  US   :w  a:  U R                   R
                  R                  5       nUR                  US   :w  a  M9  g g )	NrU   r7  listrV  r  excluder   r  )rO   rX  rZ   r   r  r   rU   r,  )rS   r   rW  r   s       r)   endTagListItem-getPhases.<locals>.InBodyPhase.endTagListItem\  s    V}$ 99++E&M7+K&&';feFm=TU		00v0G99))"-22eFmCKK**+v/1 yy--113ii5=09911557D ii5=0r*   c                 n   [          H?  nU R                  R                  U5      (       d  M%  U R                  R                  5           O   U R                  R                  S   R
                  US   :w  a!  U R                  R                  SSUS   05        [          H  nU R                  R                  U5      (       d  M%  U R                  R                  R                  5       nUR
                  [         ;  a:  U R                  R                  R                  5       nUR
                  [         ;  a  M:    g    g )Nr   rU   r  )	r   rO   rX  r  r   rU   rZ   r   r,  )rS   r   items      r)   endTagHeading,getPhases.<locals>.InBodyPhase.endTagHeadingm  s    '99++D11II446 ( yy%%b)..%-?&&':VU6]<ST'99++D119911557D))?:#yy5599; ))?: (r*   c                 H   SnUS:  Ga  US-  nU R                   R                  US   5      nU(       aC  X0R                   R                  ;   a<  U R                   R                  UR                  5      (       d  U R                  U5        gX0R                   R                  ;  aG  U R                  R                  SSUS   05        U R                   R                  R                  U5        gU R                   R                  UR                  5      (       d"  U R                  R                  SSUS   05        gX0R                   R                  S   :w  a!  U R                  R                  S	SUS   05        U R                   R                  R                  U5      nSnU R                   R                  US  H  nUR                  [        ;   d  M  Un  O   Ucz  U R                   R                  R                  5       nXc:w  a+  U R                   R                  R                  5       nXc:w  a  M+  U R                   R                  R                  U5        gU R                   R                  US-
     nU R                   R                  R                  U5      nU=pSnU R                   R                  R                  U
5      nUS
:  Gah  US-  nUS-  nU R                   R                  U   n
XR                   R                  ;  a'  U R                   R                  R                  U
5        Mj  X:X  a  OX:X  a(  U R                   R                  R                  U
5      S-   nU
R                  5       nUU R                   R                  U R                   R                  R                  U
5      '   UU R                   R                  U R                   R                  R                  U
5      '   Un
U	R                  (       a  U	R                  R!                  U	5        U
R#                  U	5        U
n	US
:  a  GMh  U	R                  (       a  U	R                  R!                  U	5        UR                  [%        S5      ;   a.  U R                   R'                  5       u  pUR)                  X5        OUR#                  U	5        UR                  5       nUR+                  U5        UR#                  U5        U R                   R                  R                  U5        U R                   R                  R-                  X5        U R                   R                  R                  U5        U R                   R                  R-                  U R                   R                  R                  U5      S-   U5        US:  a  GM  gg)z)The much-feared adoption agency algorithmr      r   rU   Nzadoption-agency-1.2zadoption-agency-4.4r   zadoption-agency-1.3r/  r   r   r   r   r   )rO   rx  r   rX  rU   r  rZ   r   r0  r  indexrg  r   r,  	cloneNoderP  rQ  appendChildr   getTableMisnestedNodePositioninsertBeforereparentChildreninsert)rS   r   outerLoopCounterformattingElementafeIndexfurthestBlockr   commonAncestorbookmarklastNoder   innerLoopCounterr  clonerP  r  s                   r)   ry  /getPhases.<locals>.InBodyPhase.endTagFormatting|  s     ! #Q& !A%  %)II$O$O&M%#!)&))*@*@@112C2H2HII $$U+ 'ii.D.DDKK**+@65QW=BYZII66==>OP 112C2H2HIIKK**+@65QW=BYZ )II,B,B2,FF../DvuU[}F]^  9911778IJ $#yy55hi@G((O;(/  A !("ii4488:G!6"&))"8"8"<"<"> "6II66==gF "&!7!71!E  99==CCDUV #0/#$ 		..44T:&*$)$QJE9911%8D99#E#EE		..55d; 00#'99#E#E#K#KD#QTU#U NN,E KP II66		::@@FH ?D II**		..44T:< D   33H=$$X.#H9 '*D ??OO//9!&&)4^*__+/99+R+R+T(F''?"..x8 *335 ..u5 ))%0 		2299:KL		2299(J 		&&--.?@		&&--II**00?!CULo #Q&&r*   c                 p   U R                   R                  US   5      (       a  U R                   R                  5         U R                   R                  S   R                  US   :w  a!  U R
                  R                  SSUS   05        U R                   R                  US   5      (       a  U R                   R                  R                  5       nUR                  US   :w  a9  U R                   R                  R                  5       nUR                  US   :w  a  M9  U R                   R                  5         g g )NrU   r   r  )	rO   rX  r  r   rU   rZ   r   r,  clearActiveFormattingElements)rS   r   r   s      r)   endTagAppletMarqueeObject8getPhases.<locals>.InBodyPhase.endTagAppletMarqueeObject  s    yy''f66		002yy%%b)..%-?&&':VU6]<STyy''f66))00446lleFm3"ii4488:G lleFm3		779	 7r*   c                    U R                   R                  SSSS.5        U R                  R                  5         U R                  R	                  [        SS5      5        U R                  R                  R                  5         g )Nzunexpected-end-tag-treated-asrp  z
br elementr  r   )rZ   r   rO   r@  r   r`  r   r,  r   s     r)   r  'getPhases.<locals>.InBodyPhase.endTagBr+  s_    KK""#B48\#RTII99;II##OD*$EFII""&&(r*   c                 X   U R                   R                  S S S2    GH	  nUR                  US   :X  a  U R                   R                  US   S9  U R                   R                  S   R                  US   :w  a!  U R                  R                  SSUS   05        U R                   R                  R                  5       U:w  a+   U R                   R                  R                  5       U:w  a  M+    g UR                  [        ;   d  M  U R                  R                  SSUS   05          g    g )Nr   rU   r  r  )	rO   r   rU   r  rZ   r   r,  rg  r   r  s      r)   r  *getPhases.<locals>.InBodyPhase.endTagOther2  s    		..tt499f-II44U6]4Kyy--b166%-G../CfeTZmE\]))00446$> ))00446$>~~8../CfeTZmE\] 5r*   r   )	r  r  r  r  r  r:   r  r  r  r   r   )re  articleaside
blockquotecenterdetailsdirr   dlfieldset
figcaptionfigurefooterheaderhgroupmainmenunavolr(   sectionsummaryul)r<  r=  r`  )r7  r5  r6  rf   rs  )bbigcodeemfontissmallstrikestrongttur  rU  )appletmarqueeobjectxmpr   )arearp  embedr  keygenwbr)paramsourcetrackr  r  r  r  r>  iframer  )noembedr  r   )r  r  )r  r  mathr   )r   colr   framer   r   r   r   r   r   r   )re  r  r  r  rU  r  r  dialogr  r   r  r  r  r  r   r!  r"  r=  r#  r$  r%  r&  r<  r'  r(  r)  r(   )r5  r6  r7  )rs  r*  r+  r,  r-  r.  r/  r  r0  r1  r2  r3  r4  r5  rp  )ArC   rD   rE   rF   r:  rW   r,  r2  r   rA  r   r&  rK  r  r  rZ  r]  rb  rj  rm  rp  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rY  r  r  r  r  r  r  ry  r  r  r  r   r  r5  r   r+  r  r8  rG   __classcell__)r  r'  r;  s   @r)   r'  r#    s    0		L
	:	?"		+
	/	0	G		K	E	+
	Q	C	+,	O	+	-	-	-		/	+	=	>	+	4	4
	+	T	8>	+	(	*	=	2	C	+
	8
	8	\	+	8	@$		8	4	8"	a	LF
	:	)	 !11 ,3
U''(,3
*"$,3

 \",3
 )*,3
* 	,3
 o.,3
  !34,3
 \",3
  !12,3
  +,!,3
" )#,3
$#$68%,3
( \"),3
* ~&+,3
, -.IJ-,3
. K /,3
0 m$1,3
2 =#%3,3
6 *+>?7,3
8 m$9,3
: :;,3
< m$=,3
> (?,3
@ )*A,3
B ~&C,3
D )*E,3
F %o6G,3
H ~&I,3
J <(K,3
L $[1M,3
N |$O,3
P k"Q,3
R&(S,3
 ,Z #0//Z Z * ,78 Z 'N0m,-.>@,.GH81
   !,r*   r'  c                       \ rS rSr\" 5       rS rS rS rS r	S r
\R                  " / 5      r\\l        \R                  " S\	4/5      r\
\l        Srg	)
getPhases.<locals>.TextPhasei  c                 @    U R                   R                  US   5        g r"  r#  r   s     r)   r   .getPhases.<locals>.TextPhase.processCharacters  r&  r*   c                    U R                   R                  SSU R                  R                  S   R                  05        U R                  R                  R                  5         U R                   R                  U R                   l        g)Nz&expected-named-closing-tag-but-got-eofrU   r   T)rZ   r   rO   r   rU   r,  r   rq   rw   s    r)   r   'getPhases.<locals>.TextPhase.processEOF  sd    KK""#K$*DII,B,B2,F,K,K#LNII""&&( $ 9 9DKKr*   c                      SUS   -  5       e)Nz4Tried to process start tag %s in RCDATA/RAWTEXT moderU   rB   r   s     r)   r  *getPhases.<locals>.TextPhase.startTagOther  s    `PSXY_S```5r*   c                     U R                   R                  R                  5       nUR                  S:X  d   eU R                  R
                  U R                  l        g )Nr  )rO   r   r,  rU   rZ   r   rq   r  s      r)   endTagScript)getPhases.<locals>.TextPhase.endTagScript  sB    99))--/D99((( $ 9 9DKKr*   c                     U R                   R                  R                  5         U R                  R                  U R                  l        g r3   )rO   r   r,  rZ   r   rq   r   s     r)   r  (getPhases.<locals>.TextPhase.endTagOther  s.    II""&&( $ 9 9DKKr*   r  rB   N)rC   rD   rE   rF   rZ  r:  r   r   r  rQ  r  r   r  r+  r  r8  rG   rB   r*   r)   	TextPhaserI    sb    G		0		a	:	: !11"5"///|$1& ' +r*   rU  c                   R  > \ rS rSr\" 5       rS rS rS rS r	S r
S rS rS	 rS
 rS rS rS rS rS rS rS rS rS r\R2                  " S Y R4                  4S\4S\4S\4S\4S\4S\4S\4S\4S\4/
5      r\\l        \R2                  " S\4S\4/5      r\\l        Srg )!getPhases.<locals>.InTablePhasei  c                     U R                   R                  S   R                  S;  aN  U R                   R                  R                  5         U R                   R                  S   R                  S;  a  MM  g g )Nr   )r   r   )rO   r   rU   r,  rw   s    r)   clearStackToTableContext8getPhases.<locals>.InTablePhase.clearStackToTableContext  sX    ))((,119JJ 		&&**, ))((,119JJr*   c                     U R                   R                  S   R                  S:w  a  U R                  R	                  S5        g U R                  R
                  (       d   eg )Nr   r   zeof-in-tablerO   r   rU   rZ   r   rb   rw   s    r)   r   *getPhases.<locals>.InTablePhase.processEOF  sD    yy%%b)..&8&&~6{{,,,,r*   c                     U R                   R                  nU R                   R                  S   U R                   l        X R                   R                  l        U R                   R                  R	                  U5        g NinTableText)rZ   rq   rR   r   r   rS   r   r   s      r)   r   6getPhases.<locals>.InTablePhase.processSpaceCharacters  sT     KK--M $ 2 2= ADKK.;KK+KK44U;r*   c                     U R                   R                  nU R                   R                  S   U R                   l        X R                   R                  l        U R                   R                  R	                  U5        g r_  )rZ   rq   rR   r   r   ra  s      r)   r   1getPhases.<locals>.InTablePhase.processCharacters  sT     KK--M $ 2 2= ADKK.;KK+KK//6r*   c                     SU R                   l        U R                  R                  S   R	                  U5        SU R                   l        g )NTr   F)rO   insertFromTablerZ   rR   r   r   s     r)   r$  *getPhases.<locals>.InTablePhase.insertText  s9     )-DII%KKx(::5A(-DII%r*   c                     U R                  5         U R                  R                  R                  [        5        U R                  R                  U5        U R                  R                  S   U R                  l        g )Nr   )	rY  rO   r0  r   r   r   rZ   rR   rq   r   s     r)   startTagCaption/getPhases.<locals>.InTablePhase.startTagCaption  sS    ))+II..55f=II##E* $ 2 2; ?DKKr*   c                     U R                  5         U R                  R                  U5        U R                  R                  S   U R                  l        g )Nr   rY  rO   r   rZ   rR   rq   r   s     r)   startTagColgroup0getPhases.<locals>.InTablePhase.startTagColgroup  s;    ))+II##E* $ 2 2? CDKKr*   c                 <    U R                  [        SS5      5        U$ )Nr   r   )rm  r`  r   s     r)   startTagCol+getPhases.<locals>.InTablePhase.startTagCol  s    !!/*j"IJLr*   c                     U R                  5         U R                  R                  U5        U R                  R                  S   U R                  l        g Nr   rl  r   s     r)   startTagRowGroup0getPhases.<locals>.InTablePhase.startTagRowGroup  s;    ))+II##E* $ 2 2= ADKKr*   c                 <    U R                  [        SS5      5        U$ )Nr   r   )rt  r`  r   s     r)   startTagImplyTbody2getPhases.<locals>.InTablePhase.startTagImplyTbody  s    !!/':"FGLr*   c                     U R                   R                  SSSS.5        U R                   R                  R                  [	        S5      5        U R                   R
                  (       d  U$ g )Nrt  r   ru  )rZ   r   rq   r   r`  rb   r   s     r)   r  -getPhases.<locals>.InTablePhase.startTagTable  sT    KK""#I18W#MOKK++OG,DE;;(( )r*   c                 R    U R                   R                  S   R                  U5      $ r  r  r   s     r)   startTagStyleScript3getPhases.<locals>.InTablePhase.startTagStyleScript  r  r*   c                 ,   SUS   ;   az  US   S   R                  [        5      S:X  a[  U R                  R                  S5        U R                  R                  U5        U R                  R                  R                  5         g U R                  U5        g )Nr8   r   r  z unexpected-hidden-input-in-table)	r   r   rZ   r   rO   r   r   r,  r  r   s     r)   r  -getPhases.<locals>.InTablePhase.startTagInput  st    %-'&M&)334DEQ&&'IJ		''.		&&**,""5)r*   c                 8   U R                   R                  S5        U R                  R                  ch  U R                  R	                  U5        U R                  R
                  S   U R                  l        U R                  R
                  R                  5         g g )Nzunexpected-form-in-tabler   )rZ   r   rO   ra  r   r   r,  r   s     r)   rb  ,getPhases.<locals>.InTablePhase.startTagForm  sm    KK""#=>yy$$,		''.(,		(>(>r(B		%		&&**, -r*   c                     U R                   R                  SSUS   05        SU R                  l        U R                   R                  S   R                  U5        SU R                  l        g )Nz)unexpected-start-tag-implies-table-voodoorU   Tr   F)rZ   r   rO   rf  rR   r   r   s     r)   r  -getPhases.<locals>.InTablePhase.startTagOther  sY    KK""#NQWY^_eYfPgh(,DII%KKx(88?(-DII%r*   c                    U R                   R                  SSS9(       Ga4  U R                   R                  5         U R                   R                  S   R                  S:w  a@  U R
                  R                  SSU R                   R                  S   R                  S.5        U R                   R                  S   R                  S:w  aM  U R                   R                  R                  5         U R                   R                  S   R                  S:w  a  MM  U R                   R                  R                  5         U R
                  R                  5         g U R
                  R                  (       d   eU R
                  R                  5         g )Nr   rV  r   zend-tag-too-early-namedr  )
rO   rX  r  r   rU   rZ   r   r,  rs   rb   r   s     r)   endTagTable+getPhases.<locals>.InTablePhase.endTagTable  s   yy'''A		00299))"-22g=KK**+D7><@II<R<RSU<V<[<[,]^ ii,,R055@II**..0 ii,,R055@		&&**,..0 {{,,,,&&(r*   c                 F    U R                   R                  SSUS   05        g r  r  r   s     r)   endTagIgnore,getPhases.<locals>.InTablePhase.endTagIgnore  r  r*   c                     U R                   R                  SSUS   05        SU R                  l        U R                   R                  S   R                  U5        SU R                  l        g )Nz'unexpected-end-tag-implies-table-voodoorU   Tr   F)rZ   r   rO   rf  rR   r   r   s     r)   r  +getPhases.<locals>.InTablePhase.endTagOther  sX    KK""#LvW\]cWdNef(,DII%KKx(66u=(-DII%r*   r   r   r   rD  r   r   r   )r   r   r   r   )r  r  r  r`  )r   r   rD  r   r   r   r   r   r   r   r   rB   N)rC   rD   rE   rF   rZ  r:  rY  r   r   r   r$  ri  rm  rp  rt  rw  r  r|  r  rb  r  r  r  r  r   r  r5  r+  r  r8  rG   r;  s   r)   InTablePhaserW    s   G		-	-	<	7	.	@	D
		B
			G	*	-	.	) 	R	. !11U''(()*K (*:;!34m$ "56m$\"3
  #0//k",-9;1
 
 !,r*   r  c                   Z   >^  \ rS rSrSrUU 4S jrS rS rS rS r	S r
S	 rS
 rSrU =r$ )#getPhases.<locals>.InTableTextPhasei3  )r   characterTokensc                 B   > [         TU ]  " U0 UD6  S U l        / U l        g r3   )r%  rW   r   r  )rS   r   r&   InTableTextPhaser  s      r)   rW   ,getPhases.<locals>.InTableTextPhase.__init__6  s(    "D2DCFC!%D#%D r*   c                 ~   SR                  U R                   Vs/ s H  oS   PM	     sn5      n[        U Vs/ s H  o[        ;  PM     sn5      (       a5  [        S   US.nU R
                  R                  S   R                  U5        O"U(       a  U R                  R                  U5        / U l        g s  snf s  snf )NrJ  r   r   r  r   )	joinr  rE  r   r   rZ   rR   r$  rO   )rS   r  r   r   s       r)   flushCharacters3getPhases.<locals>.InTableTextPhase.flushCharacters;  s    77T5I5IJ5ITL5IJKDDADD/DABB!+L!94H""9-88?		$$T*#%D  KAs
   B5B:c                 \    U R                  5         U R                  U R                  l        U$ r3   r  r   rZ   rq   r   s     r)   r   2getPhases.<locals>.InTableTextPhase.processCommentD  %      " $ 2 2DKKLr*   c                 Z    U R                  5         U R                  U R                  l        grc  r  rw   s    r)   r   .getPhases.<locals>.InTableTextPhase.processEOFI  s#      " $ 2 2DKKr*   c                 N    US   S:X  a  g U R                   R                  U5        g Nr   rD  r  r   r   s     r)   r   5getPhases.<locals>.InTableTextPhase.processCharactersN  s%    V}(  ''.r*   c                 :    U R                   R                  U5        g r3   r  r   s     r)   r   :getPhases.<locals>.InTableTextPhase.processSpaceCharactersS  s      ''.r*   c                 \    U R                  5         U R                  U R                  l        U$ r3   r  r   s     r)   r   3getPhases.<locals>.InTableTextPhase.processStartTagX  r  r*   c                 \    U R                  5         U R                  U R                  l        U$ r3   r  r   s     r)   r   1getPhases.<locals>.InTableTextPhase.processEndTag]  r  r*   )r  r   )rC   rD   rE   rF   r:  rW   r  r   r   r   r   r   r   rG   rG  )r  r  s   @r)   r  r  3  s5    8		&
	&	
	
	/
	/
	
	 	r*   r  c                      > \ rS rSr\" 5       rS rS rS rS r	S r
S rS rS	 rS
 r\R                   " S Y R"                  4S\	4/5      r\
\l        \R                   " S\4S\4S\4/5      r\\l        Srg)!getPhases.<locals>.InCaptionPhaseib  c                 @    U R                   R                  SSS9(       + $ )Nr   r   rV  rO   rX  rw   s    r)   ignoreEndTagCaption5getPhases.<locals>.InCaptionPhase.ignoreEndTagCaptionf  s    yy//	7/KKKr*   c                 R    U R                   R                  S   R                  5         g r  rZ   rR   r   rw   s    r)   r   ,getPhases.<locals>.InCaptionPhase.processEOFi      KKx(335r*   c                 R    U R                   R                  S   R                  U5      $ r  rZ   rR   r   r   s     r)   r   3getPhases.<locals>.InCaptionPhase.processCharactersl  "    ;;%%h/AA%HHr*   c                     U R                   R                  5         U R                  5       nU R                   R                  R	                  [        S5      5        U(       d  U$ g Nr   rZ   r   r  rq   r   r`  rS   r   ignoreEndTags      r)   startTagTableElement6getPhases.<locals>.InCaptionPhase.startTagTableElemento  sJ    KK""$335LKK++OI,FG  r*   c                 R    U R                   R                  S   R                  U5      $ r  r  r   s     r)   r  /getPhases.<locals>.InCaptionPhase.startTagOtherw  r  r*   c                 V   U R                  5       (       Gd\  U R                  R                  5         U R                  R                  S   R                  S:w  a@  U R
                  R                  SSU R                  R                  S   R                  S.5        U R                  R                  S   R                  S:w  aM  U R                  R                  R                  5         U R                  R                  S   R                  S:w  a  MM  U R                  R                  R                  5         U R                  R                  5         U R
                  R                  S   U R
                  l
        g U R
                  R                  (       d   eU R
                  R                  5         g )Nr   r   r  r  r   )r  rO   r  r   rU   rZ   r   r,  r  rR   rq   rb   r   s     r)   endTagCaption/getPhases.<locals>.InCaptionPhase.endTagCaptionz  s0   ++--		00299))"-22i?KK**+Q7@<@II<R<RSU<V<[<[,]^ ii,,R055BII**..0 ii,,R055B		&&**,		779$(KK$6$6y$A! {{,,,,&&(r*   c                     U R                   R                  5         U R                  5       nU R                   R                  R	                  [        S5      5        U(       d  U$ g r  r  r  s      r)   r  -getPhases.<locals>.InCaptionPhase.endTagTable  sJ    KK""$335LKK++OI,FG  r*   c                 F    U R                   R                  SSUS   05        g r  r  r   s     r)   r  .getPhases.<locals>.InCaptionPhase.endTagIgnore  r  r*   c                 R    U R                   R                  S   R                  U5      $ r  rZ   rR   r   r   s     r)   r  -getPhases.<locals>.InCaptionPhase.endTagOther  "    ;;%%h/==eDDr*   r   	r   rD  r   r   r   r   r   r   r   r   r   )
r   rD  r   r   r   r   r   r   r   r   rB   N)rC   rD   rE   rF   rZ  r:  r  r   r   r  r  r  r  r  r  r   r  r5  r+  r  r8  rG   r  s   r)   InCaptionPhaser  b  s    G		L	6	I		G	)$		R	E !11U''(243
 
 #0//&k"*,1
  !,r*   r  c                      > \ rS rSr\" 5       rS rS rS rS r	S r
S rS rS	 r\R                  " S
 Y R                   4S\	4/5      r\
\l        \R                  " S\4S\4/5      r\\l        Srg)%getPhases.<locals>.InColumnGroupPhasei  c                 N    U R                   R                  S   R                  S:H  $ )Nr   r   )rO   r   rU   rw   s    r)   ignoreEndTagColgroup:getPhases.<locals>.InColumnGroupPhase.ignoreEndTagColgroup  s"    99))"-22f<<r*   c                     U R                   R                  S   R                  S:X  a  U R                  R                  (       d   eg U R                  5       nU R                  [        S5      5        U(       d  gg )Nr   r   r   T)rO   r   rU   rZ   rb   r  endTagColgroupr`  )rS   r  s     r)   r   0getPhases.<locals>.InColumnGroupPhase.processEOF  sa    yy%%b)..&8{{,,,,#88:##OJ$?@# $r*   c                 j    U R                  5       nU R                  [        S5      5        U(       d  U$ g Nr   r  r  r`  r  s      r)   r   7getPhases.<locals>.InColumnGroupPhase.processCharacters  0    446L
 ;<  r*   c                     U R                   R                  U5        U R                   R                  R                  5         SUS'   g r  r  r   s     r)   rp  1getPhases.<locals>.InColumnGroupPhase.startTagCol  r  r*   c                 j    U R                  5       nU R                  [        S5      5        U(       d  U$ g r  r  r  s      r)   r  3getPhases.<locals>.InColumnGroupPhase.startTagOther  r  r*   c                 6   U R                  5       (       a8  U R                  R                  (       d   eU R                  R                  5         g U R                  R
                  R                  5         U R                  R                  S   U R                  l        g Nr   )	r  rZ   rb   r   rO   r   r,  rR   rq   r   s     r)   r  4getPhases.<locals>.InColumnGroupPhase.endTagColgroup  se    ((**{{,,,,&&(		&&**,$(KK$6$6y$A!r*   c                 @    U R                   R                  SSS05        g )Nz
no-end-tagrU   rD  r  r   s     r)   	endTagCol/getPhases.<locals>.InColumnGroupPhase.endTagCol  s    KK""<&%Ar*   c                 j    U R                  5       nU R                  [        S5      5        U(       d  U$ g r  r  r  s      r)   r  1getPhases.<locals>.InColumnGroupPhase.endTagOther  r  r*   r   rD  r   rB   N)rC   rD   rE   rF   rZ  r:  r  r   r   rp  r  r  r  r  r   r  r5  r+  r  r8  rG   r  s   r)   InColumnGroupPhaser    s    G		=	 		4
		B	B	 !11U''(K 3
  #0//(I1
  !,r*   r  c                     > \ rS rSr\" 5       rS rS rS rS r	S r
S rS rS	 rS
 rS rS rS r\R&                  " S Y R(                  4S\
4S\4S\4/5      r\\l        \R&                  " S\4S\4S\4/5      r\\l        Srg)#getPhases.<locals>.InTableBodyPhasei  c                 v   U R                   R                  S   R                  S;  aM  U R                   R                  R                  5         U R                   R                  S   R                  S;  a  MM  U R                   R                  S   R                  S:X  a  U R                  R
                  (       d   eg g )Nr   )r   r   r   r   r   )rO   r   rU   r,  rZ   rb   rw   s    r)   clearStackToTableBodyContext@getPhases.<locals>.InTableBodyPhase.clearStackToTableBodyContext  s    ))((,11 :K K 		&&**,	 ))((,11 :K K
 yy%%b)..&8{{,,,, 9r*   c                 R    U R                   R                  S   R                  5         g r  r  rw   s    r)   r   .getPhases.<locals>.InTableBodyPhase.processEOF      KKy)446r*   c                 R    U R                   R                  S   R                  U5      $ r  r  r   s     r)   r   :getPhases.<locals>.InTableBodyPhase.processSpaceCharacters  "    ;;%%i0GGNNr*   c                 R    U R                   R                  S   R                  U5      $ r  r  r   s     r)   r   5getPhases.<locals>.InTableBodyPhase.processCharacters  "    ;;%%i0BB5IIr*   c                     U R                  5         U R                  R                  U5        U R                  R                  S   U R                  l        g )Nr   )r  rO   r   rZ   rR   rq   r   s     r)   
startTagTr.getPhases.<locals>.InTableBodyPhase.startTagTr   s;    --/II##E* $ 2 27 ;DKKr*   c                 ~    U R                   R                  SSUS   05        U R                  [        SS5      5        U$ )Nzunexpected-cell-in-table-bodyrU   r   r   )rZ   r   r  r`  r   s     r)   startTagTableCell5getPhases.<locals>.InTableBodyPhase.startTagTableCell  s;    KK""#B$*E&M#:<OOOD*=>Lr*   c                    U R                   R                  SSS9(       d>  U R                   R                  SSS9(       d  U R                   R                  SSS9(       aM  U R                  5         U R                  [	        U R                   R
                  S   R                  5      5        U$ U R                  R                  (       d   eU R                  R                  5         g Nr   r   rV  r   r   r   
rO   rX  r  endTagTableRowGroupr`  r   rU   rZ   rb   r   r   s     r)   startTagTableOther6getPhases.<locals>.InTableBodyPhase.startTagTableOther  s    		(('(B		(('(BII,,Wg,F113((#DII$:$:2$>$C$CDF {{,,,,&&(r*   c                 R    U R                   R                  S   R                  U5      $ r  r  r   s     r)   r  1getPhases.<locals>.InTableBodyPhase.startTagOther  "    ;;%%i0@@GGr*   c                 D   U R                   R                  US   SS9(       a]  U R                  5         U R                   R                  R	                  5         U R
                  R                  S   U R
                  l        g U R
                  R                  SSUS   05        g )NrU   r   rV  r    unexpected-end-tag-in-table-body)	rO   rX  r  r   r,  rZ   rR   rq   r   r   s     r)   r  7getPhases.<locals>.InTableBodyPhase.endTagTableRowGroup  s|    yy''fw'G113		&&**,$(KK$6$6y$A!&&'I(.f'>@r*   c                    U R                   R                  SSS9(       d>  U R                   R                  SSS9(       d  U R                   R                  SSS9(       aM  U R                  5         U R                  [	        U R                   R
                  S   R                  5      5        U$ U R                  R                  (       d   eU R                  R                  5         g r  r  r   s     r)   r  /getPhases.<locals>.InTableBodyPhase.endTagTable%  s    		(('(B		(('(BII,,Wg,F113((#DII$:$:2$>$C$CDF {{,,,,&&(r*   c                 F    U R                   R                  SSUS   05        g )Nr  rU   r  r   s     r)   r  0getPhases.<locals>.InTableBodyPhase.endTagIgnore2  #    KK""#E$*E&M#:<r*   c                 R    U R                   R                  S   R                  U5      $ r  r  r   s     r)   r  /getPhases.<locals>.InTableBodyPhase.endTagOther6  "    ;;%%i0>>uEEr*   r   r   r   r   )r   rD  r   r   r   r   r  r   )r   r   rD  r   r   r   r   r   rB   N)rC   rD   rE   rF   rZ  r:  r  r   r   r   r  r  r  r  r  r  r  r  r   r  r5  r+  r  r8  rG   r  s   r)   InTableBodyPhaser    s    G		-	7	O	J	<
		)	H	@	)	<	F !11U''(:,-F!	3
  #0//(*=>k"!#1
  !,r*   r  c                     > \ rS rSr\" 5       rS rS rS rS r	S r
S rS rS	 rS
 rS rS rS rS r\R(                  " S Y R*                  4S\4S\4/5      r\\l        \R(                  " S\4S\4S\4S\4/5      r\\l        Srg)getPhases.<locals>.InRowPhaseiJ  c                 l   U R                   R                  S   R                  S;  a  U R                  R	                  SSU R                   R                  S   R                  05        U R                   R                  R                  5         U R                   R                  S   R                  S;  a  M  g g )Nr   )r   r   z'unexpected-implied-end-tag-in-table-rowrU   )rO   r   rU   rZ   r   r,  rw   s    r)   clearStackToTableRowContext9getPhases.<locals>.InRowPhase.clearStackToTableRowContextO  s    ))((,11G&&'P(.		0F0Fr0J0O0O'PR		&&**, ))((,11Gr*   c                 @    U R                   R                  SSS9(       + $ )Nr   r   rV  r  rw   s    r)   ignoreEndTagTr,getPhases.<locals>.InRowPhase.ignoreEndTagTrU  s    yy//g/FFFr*   c                 R    U R                   R                  S   R                  5         g r  r  rw   s    r)   r   (getPhases.<locals>.InRowPhase.processEOFY  r  r*   c                 R    U R                   R                  S   R                  U5      $ r  r  r   s     r)   r   4getPhases.<locals>.InRowPhase.processSpaceCharacters\  r  r*   c                 R    U R                   R                  S   R                  U5      $ r  r  r   s     r)   r   /getPhases.<locals>.InRowPhase.processCharacters_  r  r*   c                     U R                  5         U R                  R                  U5        U R                  R                  S   U R                  l        U R                  R                  R                  [        5        g )Nr   )	r  rO   r   rZ   rR   rq   r0  r   r   r   s     r)   r  /getPhases.<locals>.InRowPhase.startTagTableCellb  sS    ,,.II##E* $ 2 28 <DKKII..55f=r*   c                 j    U R                  5       nU R                  [        S5      5        U(       d  U$ g Nr   r  endTagTrr`  r  s      r)   r  0getPhases.<locals>.InRowPhase.startTagTableOtherh  s.    ..0LMM/$/0  r*   c                 R    U R                   R                  S   R                  U5      $ r  r  r   s     r)   r  +getPhases.<locals>.InRowPhase.startTagOthero  r  r*   c                 V   U R                  5       (       d]  U R                  5         U R                  R                  R	                  5         U R
                  R                  S   U R
                  l        g U R
                  R                  (       d   eU R
                  R                  5         g rs  )
r  r  rO   r   r,  rZ   rR   rq   rb   r   r   s     r)   r$  &getPhases.<locals>.InRowPhase.endTagTrr  ss    &&((002		&&**,$(KK$6$6}$E! {{,,,,&&(r*   c                 j    U R                  5       nU R                  [        S5      5        U(       d  U$ g r"  r#  r  s      r)   r  )getPhases.<locals>.InRowPhase.endTagTable|  s0    ..0LMM/$/0    r*   c                     U R                   R                  US   SS9(       a  U R                  [        S5      5        U$ U R                  R                  5         g )NrU   r   rV  r   )rO   rX  r$  r`  rZ   r   r   s     r)   r  1getPhases.<locals>.InRowPhase.endTagTableRowGroup  sC    yy''fw'God34&&(r*   c                 F    U R                   R                  SSUS   05        g )Nzunexpected-end-tag-in-table-rowrU   r  r   s     r)   r  *getPhases.<locals>.InRowPhase.endTagIgnore  s#    KK""#D$*E&M#:<r*   c                 R    U R                   R                  S   R                  U5      $ r  r  r   s     r)   r  )getPhases.<locals>.InRowPhase.endTagOther  r  r*   r   r  )r   rD  r   r   r   r   r   r   r   r  )r   r   rD  r   r   r   r   rB   N)rC   rD   rE   rF   rZ  r:  r  r  r   r   r   r  r  r  r$  r  r  r  r  r   r  r5  r+  r  r8  rG   r  s   r)   
InRowPhaser  J  s    G		-	G	7	O	J	>		H	)		)	<	F !11U''(,-')3
  #0//8k"(*=>G	1
  !,r*   r2  c                      > \ rS rSr\" 5       rS rS rS rS r	S r
S rS rS	 rS
 r\R                   " S Y R"                  4S\	4/5      r\
\l        \R                   " S\4S\4S\4/5      r\\l        Srg)getPhases.<locals>.InCellPhasei  c                     U R                   R                  SSS9(       a  U R                  [        S5      5        g U R                   R                  SSS9(       a  U R                  [        S5      5        g g Nr   r   rV  r   )rO   rX  endTagTableCellr`  rw   s    r)   	closeCell(getPhases.<locals>.InCellPhase.closeCell  s\    yy''g'>$$_T%:;))$)@$$_T%:; Ar*   c                 R    U R                   R                  S   R                  5         g r  r  rw   s    r)   r   )getPhases.<locals>.InCellPhase.processEOF  r  r*   c                 R    U R                   R                  S   R                  U5      $ r  r  r   s     r)   r   0getPhases.<locals>.InCellPhase.processCharacters  r  r*   c                    U R                   R                  SSS9(       d  U R                   R                  SSS9(       a  U R                  5         U$ U R                  R                  (       d   eU R                  R                  5         g r6  )rO   rX  r8  rZ   rb   r   r   s     r)   r  1getPhases.<locals>.InCellPhase.startTagTableOther  sd    		((w(?II,,T7,C  {{,,,,&&(r*   c                 R    U R                   R                  S   R                  U5      $ r  r  r   s     r)   r  ,getPhases.<locals>.InCellPhase.startTagOther  r  r*   c                    U R                   R                  US   SS9(       Ga  U R                   R                  US   5        U R                   R                  S   R                  US   :w  a\  U R
                  R                  SSUS   05         U R                   R                  R                  5       nUR                  US   :X  a  O&M:  U R                   R                  R                  5         U R                   R                  5         U R
                  R                  S   U R
                  l
        g U R
                  R                  SSUS   05        g )NrU   r   rV  r   zunexpected-cell-end-tagr   r  )rO   rX  r  r   rU   rZ   r   r,  r  rR   rq   r  s      r)   r7  .getPhases.<locals>.InCellPhase.endTagTableCell  s
   yy''fw'G		00v?99))"-22eFmCKK**+D,2E&M+BD#yy5599;99f5! 
 II**..0		779$(KK$6$6w$?!&&';feFm=TUr*   c                 F    U R                   R                  SSUS   05        g r  r  r   s     r)   r  +getPhases.<locals>.InCellPhase.endTagIgnore  r  r*   c                     U R                   R                  US   SS9(       a  U R                  5         U$ U R                  R	                  5         g )NrU   r   rV  )rO   rX  r8  rZ   r   r   s     r)   endTagImply*getPhases.<locals>.InCellPhase.endTagImply  s>    yy''fw'G  &&(r*   c                 R    U R                   R                  S   R                  U5      $ r  r  r   s     r)   r  *getPhases.<locals>.InCellPhase.endTagOther  r  r*   r   r  r  )r   r   rD  r   r   r  rB   N)rC   rD   rE   rF   rZ  r:  r8  r   r   r  r  r7  r  rG  r  r   r  r5  r+  r  r8  rG   r  s   r)   InCellPhaser4    s    G		<	6	I	)	G	V"	R	)	E !11U''(023
 
 #0//?+;\J7E1
 
 !,r*   rK  c            	         > \ rS rSr\" 5       rS rS rS rS r	S r
S rS rS	 rS
 rS rS rS r\R&                  " S Y R(                  4S\4S\	4S\
4S\4S\4/5      r\\l        \R&                  " S\4S\4S\4/5      r\\l        Srg) getPhases.<locals>.InSelectPhasei  c                     U R                   R                  S   R                  S:w  a  U R                  R	                  S5        g U R                  R
                  (       d   eg )Nr   r   zeof-in-selectr\  rw   s    r)   r   +getPhases.<locals>.InSelectPhase.processEOF  sD    yy%%b)..&8&&7{{,,,,r*   c                 T    US   S:X  a  g U R                   R                  US   5        g r  r#  r   s     r)   r   2getPhases.<locals>.InSelectPhase.processCharacters  s'    V}(II  v/r*   c                     U R                   R                  S   R                  S:X  a$  U R                   R                  R                  5         U R                   R	                  U5        g r  rO   r   rU   r,  r   r   s     r)   startTagOption/getPhases.<locals>.InSelectPhase.startTagOption  sG    yy%%b)..(:		&&**,II##E*r*   c                 f   U R                   R                  S   R                  S:X  a$  U R                   R                  R                  5         U R                   R                  S   R                  S:X  a$  U R                   R                  R                  5         U R                   R	                  U5        g )Nr   r  r  rS  r   s     r)   startTagOptgroup1getPhases.<locals>.InSelectPhase.startTagOptgroup	  sz    yy%%b)..(:		&&**,yy%%b)..*<		&&**,II##E*r*   c                 n    U R                   R                  S5        U R                  [        S5      5        g )Nzunexpected-select-in-selectr   )rZ   r   endTagSelectr`  r   s     r)   r  /getPhases.<locals>.InSelectPhase.startTagSelect	  s(    KK""#@Aoh78r*   c                     U R                   R                  S5        U R                  R                  SSS9(       a  U R	                  [        S5      5        U$ U R                   R                  (       d   eg )Nzunexpected-input-in-selectr   rV  )rZ   r   rO   rX  rZ  r`  rb   r   s     r)   r  .getPhases.<locals>.InSelectPhase.startTagInput	  sW    KK""#?@yy''('C!!/(";<{{,,,,r*   c                 R    U R                   R                  S   R                  U5      $ r  r  r   s     r)   r  /getPhases.<locals>.InSelectPhase.startTagScript	  r  r*   c                 F    U R                   R                  SSUS   05        g )Nzunexpected-start-tag-in-selectrU   r  r   s     r)   r  .getPhases.<locals>.InSelectPhase.startTagOther	  #    KK""#C$*E&M#:<r*   c                     U R                   R                  S   R                  S:X  a%  U R                   R                  R                  5         g U R                  R                  SSS05        g )Nr   r  unexpected-end-tag-in-selectrU   rO   r   rU   r,  rZ   r   r   s     r)   endTagOption-getPhases.<locals>.InSelectPhase.endTagOption	  sR    yy%%b)..(:		&&**,&&'E(.'9;r*   c                    U R                   R                  S   R                  S:X  aK  U R                   R                  S   R                  S:X  a$  U R                   R                  R                  5         U R                   R                  S   R                  S:X  a%  U R                   R                  R                  5         g U R                  R                  SSS05        g )Nr   r  r  rd  rU   re  r   s     r)   endTagOptgroup/getPhases.<locals>.InSelectPhase.endTagOptgroup%	  s    		&&r*//8;II**2.33zA		&&**,yy%%b)..*<		&&**, &&'E(.
';=r*   c                    U R                   R                  SSS9(       a  U R                   R                  R                  5       nUR                  S:w  a6  U R                   R                  R                  5       nUR                  S:w  a  M6  U R
                  R                  5         g U R
                  R                  (       d   eU R
                  R                  5         g )Nr   rV  )	rO   rX  r   r,  rU   rZ   rs   rb   r   r  s      r)   rZ  -getPhases.<locals>.InSelectPhase.endTagSelect2	  s    yy''('Cyy--113ii8+9911557D ii8+..0 {{,,,,&&(r*   c                 F    U R                   R                  SSUS   05        g )Nrd  rU   r  r   s     r)   r  ,getPhases.<locals>.InSelectPhase.endTagOther=	  #    KK""#A$*E&M#:<r*   r   r  r  r   )r  r<  r>  r  rB   N)rC   rD   rE   rF   rZ  r:  r   r   rT  rW  r  r  r  r  rf  rj  rZ  r  r   r  r5  r+  r  r8  rG   r  s   r)   InSelectPhaserM    s    G		-	0
	+	+	9	-	G	<	;	=		)	< !11U''(~&)*~&,m<~&3
  #0//|$(|$1
 
 !,r*   rq  c                       \ rS rSr\" 5       rS rS rS rS r	S r
S r\R                  " S\4/5      r\	\l        \R                  " S\
4/5      r\\l        S	rg
)'getPhases.<locals>.InSelectInTablePhaseiR	  c                 R    U R                   R                  S   R                  5         g Nr   r  rw   s    r)   r   2getPhases.<locals>.InSelectInTablePhase.processEOFU	  s    KKz*557r*   c                 R    U R                   R                  S   R                  U5      $ ru  r  r   s     r)   r   9getPhases.<locals>.InSelectInTablePhase.processCharactersX	  s"    ;;%%j1CCEJJr*   c                 |    U R                   R                  SSUS   05        U R                  [        S5      5        U$ )Nz5unexpected-table-element-start-tag-in-select-in-tablerU   r   )rZ   r   r  r`  r   s     r)   r  5getPhases.<locals>.InSelectInTablePhase.startTagTable[	  s<    KK""#Z]cejkqer\st_X67Lr*   c                 R    U R                   R                  S   R                  U5      $ ru  r  r   s     r)   r  5getPhases.<locals>.InSelectInTablePhase.startTagOther`	  s"    ;;%%j1AA%HHr*   c                     U R                   R                  SSUS   05        U R                  R                  US   SS9(       a  U R	                  [        S5      5        U$ g )Nz3unexpected-table-element-end-tag-in-select-in-tablerU   r   rV  r   )rZ   r   rO   rX  r  r`  r   s     r)   r  3getPhases.<locals>.InSelectInTablePhase.endTagTablec	  s]    KK""#X[achiocpZqryy''fw'G  !:; Hr*   c                 R    U R                   R                  S   R                  U5      $ ru  r  r   s     r)   r  3getPhases.<locals>.InSelectInTablePhase.endTagOtheri	  s"    ;;%%j1??FFr*   )r   r   r   r   r   r   r   r   rB   N)rC   rD   rE   rF   rZ  r:  r   r   r  r  r  r  r   r  r+  r  r8  rG   rB   r*   r)   InSelectInTablePhasers  R	  s    G		8	K	
	I		G !11N3
  #0//N1
  !,r*   r  c                   V   > \ rS rSr\" 5       r\" / SQ5      rS rU 4S jr	S r
S rSrg)	(getPhases.<locals>.InForeignContentPhaseix	  ),r*  r+  r  r   rp  r  r,  r5  r   r  r6  r-  r;  h1h2h3h4h5h6r   r  r/  r  r7  r=  r$  r:   r  r&  r(   r<  r  r0  r1  spanr3  r2  subsupr   r4  r5  r)  varc                 
   0 SS_SS_SS_SS_S	S
_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS _S!S"_0 S#S$_S%S&_S'S(_S)S*_S+S,_S-S._S/S0_S1S2_S3S4_S5S6_S7S8_S9S:_S;S<_S=S>_S?S@_SASB_SCSD_ESESFSG.EnUSH   U;   a  X!SH      USH'   g g )INaltglyphaltGlyphaltglyphdefaltGlyphDefaltglyphitemaltGlyphItemanimatecoloranimateColoranimatemotionanimateMotionanimatetransformanimateTransformclippathclipPathfeblendfeBlendfecolormatrixfeColorMatrixfecomponenttransferfeComponentTransferfecompositefeCompositefeconvolvematrixfeConvolveMatrixfediffuselightingfeDiffuseLightingfedisplacementmapfeDisplacementMapfedistantlightfeDistantLightfefloodfeFloodfefuncafeFuncAfefuncbfeFuncBfefuncgfeFuncGfefuncrfeFuncRfegaussianblurfeGaussianBlurfeimagefeImagefemergefeMergefemergenodefeMergeNodefemorphologyfeMorphologyfeoffsetfeOffsetfepointlightfePointLightfespecularlightingfeSpecularLightingfespotlightfeSpotLightfetilefeTilefeturbulencefeTurbulenceforeignobjectforeignObjectglyphrefglyphReflineargradientlinearGradientradialGradienttextPath)radialgradienttextpathrU   rB   )rS   r   replacementss      r)   adjustSVGTagNames:getPhases.<locals>.InForeignContentPhase.adjustSVGTagNames	  s   #4J
 #4)=#4*N#4 +N#4 ,_	#4
 /0B#4 '
#4 &y#4 ,_#4 23H#4 *=#4 /0B#4 01D#4 01D#4 -.>#4 &y#4  &y!#4" &y##4$ &y%#4& &y'#4( -.>)#4* &y+#4, &y-#4. *=/#40 +N1#42 '
3#44 +N5#46 12F7#48 *=9#4: %h;#4< +N=#4> ,_?#4@ '
A#4B -.>C#4D /?(2G#4LJ V}, ,6] ;f -r*   c                    > US   S:X  a  SUS'   OFU R                   R                  (       a+  [        S US    5       5      (       a  SU R                   l        TR                  X5        g )Nr   rD  u   �c              3   2   #    U  H  o[         ;  v   M     g 7fr3   )r   ).0rF  s     r)   	<genexpr>MgetPhases.<locals>.InForeignContentPhase.processCharacters.<locals>.<genexpr>	  s     Lmd/1ms   F)rZ   rv   rE  r   )rS   r   r;  s     r)   r   :getPhases.<locals>.InForeignContentPhase.processCharacters	  sT    V}( (f++((LeFmLLL).&##D0r*   c                    U R                   R                  S   nUS   U R                  ;   d1  US   S:X  Ga  [        US   R	                  5       5      1 Sk-  (       Ga  U R
                  R                  SSUS   05        U R                   R                  S   R                  U R                   R                  :w  Ga>  U R
                  R                  U R                   R                  S   5      (       Gd  U R
                  R                  U R                   R                  S   5      (       d  U R                   R                  R                  5         U R                   R                  S   R                  U R                   R                  :w  ap  U R
                  R                  U R                   R                  S   5      (       d9  U R
                  R                  U R                   R                  S   5      (       d  M  U$ UR                  [        S   :X  a  U R
                  R                  U5        OCUR                  [        S   :X  a,  U R                  U5        U R
                  R                  U5        U R
                  R!                  U5        UR                  US	'   U R                   R#                  U5        US
   (       a*  U R                   R                  R                  5         SUS'   g g )Nr   rU   r.  r   >   facesizecolorz*unexpected-html-element-in-foreign-contentr   r   r   r   Tr   )rO   r   breakoutElementssetkeysrZ   r   r   r   r   r   r,  r   r   r  r   r   r   )rS   r   r   s      r)   r   8getPhases.<locals>.InForeignContentPhase.processStartTag	  s5   ))004Kf!6!66v&(U6]'')*-FFF&&'S(.f'>@yy--b1;;yy112;;==dii>T>TUW>XYY;;CCDIIDZDZ[]D^__II**..0	 yy--b1;;yy112;;==dii>T>TUW>XYY;;CCDIIDZDZ[]D^__ ((Jx,@@KK66u= **j.??**51KK33E:33E:%0%:%:k"		''.'II**..07;E34 (r*   c                    [        U R                  R                  5      S-
  nU R                  R                  S   nUR                  R	                  [
        5      US   :w  a!  U R                  R                  SSUS   05         UR                  R	                  [
        5      US   :X  a  U R                  R                  U R                  R                  S   :X  aS  U R                  R                  R                  5         U R                  R                  R                  U R                  l        U R                  R                  R                  5       U:w  aG  U R                  R                  (       d   eU R                  R                  R                  5       U:w  a  MG  S n U$ US-  nU R                  R                  U   nUR                  U R                  R                  :w  a  GMd  U R                  R                  R                  U5      n U$ )Nr   r   rU   r  r`  )r   rO   r   rU   r   r   rZ   r   rq   rR   r  r   r,  r   r   r   )rS   r   	nodeIndexr   r   s        r)   r   6getPhases.<locals>.InForeignContentPhase.processEndTag	  s   DII223a7I99))"-Dyy""#34fE&&';feFm=TU99&&'78E&MI{{((DKK,>,>},MM))99;,0KK,=,=,K,K)))00446$>#yy5555 ))00446$> $I  Q	yy--i8>>TYY%?%?? $ 1 1 ? ? FIr*   rB   N)rC   rD   rE   rF   rZ  r:  r   r  r  r   r   r   rG   r  s   r)   InForeignContentPhaser  x	  s1    G	$ &G H'	<R	1	<6	r*   r  c                       \ rS rSr\" 5       rS rS rS rS r	S r
S rS r\R                  " S	\	4/5      r\
\l        \R                  " S	\4/5      r\\l        S
rg)!getPhases.<locals>.AfterBodyPhasei	  c                     g r3   rB   rw   s    r)   r   ,getPhases.<locals>.AfterBodyPhase.processEOF	      r*   c                 h    U R                   R                  XR                   R                  S   5        g )Nr   r  r   s     r)   r   0getPhases.<locals>.AfterBodyPhase.processComment	  s%     II##E99+A+A!+DEr*   c                     U R                   R                  S5        U R                   R                  S   U R                   l        U$ )Nzunexpected-char-after-bodyr   rZ   r   rR   rq   r   s     r)   r   3getPhases.<locals>.AfterBodyPhase.processCharacters	  s5    KK""#?@ $ 2 28 <DKKLr*   c                 R    U R                   R                  S   R                  U5      $ r  r  r   s     r)   r5  .getPhases.<locals>.AfterBodyPhase.startTagHtml	  r  r*   c                     U R                   R                  SSUS   05        U R                   R                  S   U R                   l        U$ )Nzunexpected-start-tag-after-bodyrU   r   r  r   s     r)   r  /getPhases.<locals>.AfterBodyPhase.startTagOther	  sC    KK""#D$*E&M#:< $ 2 28 <DKKLr*   c                     U R                   R                  (       a  U R                   R                  S5        g U R                   R                  S   U R                   l        g )Nz'unexpected-end-tag-after-body-innerhtmlafterAfterBody)rZ   rb   r   rR   rq   )rS   rU   s     r)   r  ,getPhases.<locals>.AfterBodyPhase.endTagHtml
  s>    {{$$&&'PQ$(KK$6$67G$H!r*   c                     U R                   R                  SSUS   05        U R                   R                  S   U R                   l        U$ )Nzunexpected-end-tag-after-bodyrU   r   r  r   s     r)   r  -getPhases.<locals>.AfterBodyPhase.endTagOther

  sC    KK""#B$*E&M#:< $ 2 28 <DKKLr*   r   rB   N)rC   rD   rE   rF   rZ  r:  r   r   r   r5  r  r  r  r   r  r+  r  r8  rG   rB   r*   r)   AfterBodyPhaser  	  sx    G			F
	
	G		I	 !11\"3
  #0//&*1E0FG +r*   r  c                      > \ rS rSr\" 5       rS rS rS rS r	S r
S rS rS	 r\R                  " S
 Y R                   4S\4S\	4S\
4/5      r\\l        \R                  " S\4/5      r\\l        Srg)"getPhases.<locals>.InFramesetPhasei
  c                     U R                   R                  S   R                  S:w  a  U R                  R	                  S5        g U R                  R
                  (       d   eg )Nr   r   zeof-in-framesetr\  rw   s    r)   r   -getPhases.<locals>.InFramesetPhase.processEOF
  sE    yy%%b)..&8&&'89{{,,,,r*   c                 :    U R                   R                  S5        g )Nzunexpected-char-in-framesetr  r   s     r)   r   4getPhases.<locals>.InFramesetPhase.processCharacters"
  s    KK""#@Ar*   c                 :    U R                   R                  U5        g r3   )rO   r   r   s     r)   r  3getPhases.<locals>.InFramesetPhase.startTagFrameset%
  s    II##E*r*   c                     U R                   R                  U5        U R                   R                  R                  5         g r3   r  r   s     r)   startTagFrame0getPhases.<locals>.InFramesetPhase.startTagFrame(
  s*    II##E*II""&&(r*   c                 R    U R                   R                  S   R                  U5      $ r  r  r   s     r)   startTagNoframes3getPhases.<locals>.InFramesetPhase.startTagNoframes,
  r  r*   c                 F    U R                   R                  SSUS   05        g )Nz unexpected-start-tag-in-framesetrU   r  r   s     r)   r  0getPhases.<locals>.InFramesetPhase.startTagOther/
  r  r*   c                    U R                   R                  S   R                  S:X  a  U R                  R	                  S5        O$U R                   R                  R                  5         U R                  R                  (       dQ  U R                   R                  S   R                  S:w  a)  U R                  R                  S   U R                  l        g g g )Nr   r   z)unexpected-frameset-in-frameset-innerhtmlr   afterFrameset)	rO   r   rU   rZ   r   r,  rb   rR   rq   r   s     r)   endTagFrameset1getPhases.<locals>.InFramesetPhase.endTagFrameset3
  s    yy%%b)..&8&&'RS		&&**,KK))II**2.33zA %)KK$6$6$G! B *r*   c                 F    U R                   R                  SSUS   05        g )Nzunexpected-end-tag-in-framesetrU   r  r   s     r)   r  .getPhases.<locals>.InFramesetPhase.endTagOther?
  rb  r*   r   r   rE  r  rB   N)rC   rD   rE   rF   rZ  r:  r   r   r  r	  r  r  r  r  r   r  r5  r+  r  r8  rG   r  s   r)   InFramesetPhaser  
  s    G		-	B	+	)	G	<
	H	< !11U''()*m$)*	3
  #0//(1
  !,r*   r  c                      > \ rS rSr\" 5       rS rS rS rS r	S r
S r\R                  " S Y R                  4S	\4/5      r\	\l        \R                  " S\
4/5      r\\l        S
rg)%getPhases.<locals>.AfterFramesetPhaseiP
  c                     g r3   rB   rw   s    r)   r   0getPhases.<locals>.AfterFramesetPhase.processEOFT
  r  r*   c                 :    U R                   R                  S5        g )Nzunexpected-char-after-framesetr  r   s     r)   r   7getPhases.<locals>.AfterFramesetPhase.processCharactersX
  s    KK""#CDr*   c                 R    U R                   R                  S   R                  U5      $ r  r  r   s     r)   r  6getPhases.<locals>.AfterFramesetPhase.startTagNoframes[
  r  r*   c                 F    U R                   R                  SSUS   05        g )Nz#unexpected-start-tag-after-framesetrU   r  r   s     r)   r  3getPhases.<locals>.AfterFramesetPhase.startTagOther^
  s#    KK""#H$*E&M#:<r*   c                 T    U R                   R                  S   U R                   l        g )NafterAfterFrameset)rZ   rR   rq   r   s     r)   r  0getPhases.<locals>.AfterFramesetPhase.endTagHtmlb
  s     $ 2 23G HDKKr*   c                 F    U R                   R                  SSUS   05        g )Nz!unexpected-end-tag-after-framesetrU   r  r   s     r)   r  1getPhases.<locals>.AfterFramesetPhase.endTagOthere
  s#    KK""#F$*E&M#:<r*   r   r  rB   N)rC   rD   rE   rF   rZ  r:  r   r   r  r  r  r  r   r  r5  r+  r  r8  rG   r  s   r)   AfterFramesetPhaser  P
  s    G			E	G	<	I	< !11U''()*3
  #0//Z 1
  !,r*   r&  c                       \ rS rSr\" 5       rS rS rS rS r	S r
S rS r\R                  " S	\
4/5      r\\l        S
rg)&getPhases.<locals>.AfterAfterBodyPhaseit
  c                     g r3   rB   rw   s    r)   r   1getPhases.<locals>.AfterAfterBodyPhase.processEOFw
  r@  r*   c                 b    U R                   R                  XR                   R                  5        g r3   rB  r   s     r)   r   5getPhases.<locals>.AfterAfterBodyPhase.processCommentz
  rE  r*   c                 R    U R                   R                  S   R                  U5      $ r  r  r   s     r)   r   =getPhases.<locals>.AfterAfterBodyPhase.processSpaceCharacters}
  r  r*   c                     U R                   R                  S5        U R                   R                  S   U R                   l        U$ )Nexpected-eof-but-got-charr   r  r   s     r)   r   8getPhases.<locals>.AfterAfterBodyPhase.processCharacters
  s5    KK""#>? $ 2 28 <DKKLr*   c                 R    U R                   R                  S   R                  U5      $ r  r  r   s     r)   r5  3getPhases.<locals>.AfterAfterBodyPhase.startTagHtml
  r  r*   c                     U R                   R                  SSUS   05        U R                   R                  S   U R                   l        U$ )Nexpected-eof-but-got-start-tagrU   r   r  r   s     r)   r  4getPhases.<locals>.AfterAfterBodyPhase.startTagOther
  sC    KK""#C$*E&M#:< $ 2 28 <DKKLr*   c                     U R                   R                  SSUS   05        U R                   R                  S   U R                   l        U$ )Nexpected-eof-but-got-end-tagrU   r   r  r   s     r)   r   4getPhases.<locals>.AfterAfterBodyPhase.processEndTag
  sC    KK""#A$*E&M#:< $ 2 28 <DKKLr*   r   rB   N)rC   rD   rE   rF   rZ  r:  r   r   r   r   r5  r  r   r   r  r+  r  rG   rB   r*   r)   AfterAfterBodyPhaser(  t
  sW    G			?	N	
	G		 !11\"3
  #0r*   r:  c                       \ rS rSr\" 5       rS rS rS rS r	S r
S rS rS	 r\R                  " S
\
4S\4/5      r\\l        Srg)*getPhases.<locals>.AfterAfterFramesetPhasei
  c                     g r3   rB   rw   s    r)   r   5getPhases.<locals>.AfterAfterFramesetPhase.processEOF
  r@  r*   c                 b    U R                   R                  XR                   R                  5        g r3   rB  r   s     r)   r   9getPhases.<locals>.AfterAfterFramesetPhase.processComment
  rE  r*   c                 R    U R                   R                  S   R                  U5      $ r  r  r   s     r)   r   AgetPhases.<locals>.AfterAfterFramesetPhase.processSpaceCharacters
  r  r*   c                 :    U R                   R                  S5        g )Nr0  r  r   s     r)   r   <getPhases.<locals>.AfterAfterFramesetPhase.processCharacters
  s    KK""#>?r*   c                 R    U R                   R                  S   R                  U5      $ r  r  r   s     r)   r5  7getPhases.<locals>.AfterAfterFramesetPhase.startTagHtml
  r  r*   c                 R    U R                   R                  S   R                  U5      $ r  r  r   s     r)   startTagNoFrames;getPhases.<locals>.AfterAfterFramesetPhase.startTagNoFrames
  r  r*   c                 F    U R                   R                  SSUS   05        g )Nr5  rU   r  r   s     r)   r  8getPhases.<locals>.AfterAfterFramesetPhase.startTagOther
  rb  r*   c                 F    U R                   R                  SSUS   05        g )Nr8  rU   r  r   s     r)   r   8getPhases.<locals>.AfterAfterFramesetPhase.processEndTag
  rp  r*   r   r  rB   N)rC   rD   rE   rF   rZ  r:  r   r   r   r   r5  rH  r  r   r   r  r+  r  rG   rB   r*   r)   AfterAfterFramesetPhaser<  
  sg    G			?	N	@	G	G	<	< !11\")*3
  #0r*   rN  rh   rg   r   r  r  r  r   r   r   r`  r   r   r   r   r   r   r  )r   r  r   r  r  r"  )r   )rT   rj   r  r[  rr  r  r  r  r!  rU  r  r  r  r  r2  rK  rq  r  r  r  r  r&  r:  rN  r'  r  r;  s                           @@@r)   rQ   rQ     s]   *F|E78 FP@u @D#% #J+,% +,Zd,e d,L=,e =,~@, @,DR, R,e R,h,E ,BO,u O,b-5 -^D, D,L>,U >,@`,5 `,DW,U W,rJ,e J,Xa, a,F$,u $,Lp pd,, ,,\6,% 6,p",U ",H#0e #0J!0% !0J<o 	o 	+	
 	- 	^ 	+ 		 	< 	' 	^ 	+ 	' 	 	+  	M!" 	/#$ 2#%+-5/ r*   c                    ^ [        U S   5      [        T5      -  nU(       a3  [        U S   5      " U4S jU S   R                  5        5       5      U S'   g g )Nr   c              3   N   >#    U  H  u  pTR                  X5      U4v   M     g 7fr3   )r   )r  kvr  s      r)   r  $adjust_attributes.<locals>.<genexpr>
  s+      ,O8M .:-=-=a-CQ,G8Ms   "%)r   r8   r4   )r   r  needs_adjustments    ` r)   r   r   
  sX    f.,1GGU6]+ ,O8=f8K8K8M,O Of r*   c                 &    Uc  0 n[         U   XUS.$ )N)r8   rU   r   r   )r   )rU   r8   r   r   s       r)   r`  r`  
  s$    
t$d&( (r*   c                       \ rS rSrSrSrg)r   i
  zError in parsed documentrB   N)rC   rD   rE   rF   r   rG   rB   r*   r)   r   r   
  s    "r*   r   )rM   T)r   rM   T)r   NF),
__future__r   r   r   sixr   r   r6   rJ  r	   r
   r   treebuilders.baser   r   	constantsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r#   r-   rI   r8  r"   memoizerQ   r   r`  	Exceptionr   rB   r*   r)   <module>r]     s    B B (     % 
 
 
 
 
".?2	s) s)l	 J% J%ZJO 59 %(	 	r*   