
    Mh                    2   d dl mZmZmZ d dlmZ d dlZddlmZ ddlm	Z	 ddlm
Z
 ddlmZ dd	lmZ dd
lmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddZ ddZ!d Z" G d de#          Z$ej%        d             Z&d Z'	 	 ddZ( G d de)          Z*dS )    )absolute_importdivisionunicode_literals)viewkeysN   )_inputstream)
_tokenizer)treebuilders)Marker)_utils)spaceCharactersasciiUpper2LowerspecialElementsheadingElementscdataElementsrcdataElements
tokenTypestagTokenTypes
namespaceshtmlIntegrationPointElements"mathmlTextIntegrationPointElementsadjustForeignAttributesadjustMathMLAttributesadjustSVGAttributesE_ReparseExceptionetreeTc                 h    t          j        |          }t          ||          } |j        | fi |S )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         c/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/bleach/_vendor/html5lib/html5parser.pyr#   r#      sA    $ 
	$[	1	1B2-BCCCA173!!&!!!    divc                 l    t          j        |          }t          ||          } |j        | fd|i|S )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   sF    ( 
	$[	1	1B2-BCCCA1?3>>)>v>>>r*   c                 2      G  fddt                     }|S )Nc                       e Zd Z fdZdS )-method_decorator_metaclass.<locals>.Decoratedc                     |                                 D ]/\  }}t          |t          j                  r |          }|||<   0t                              | |||          S N)items
isinstancetypesFunctionTypetype__new__)meta	classnamebases	classDictattributeName	attributefunctions         r)   r9   z5method_decorator_metaclass.<locals>.Decorated.__new__L   sj    ,5OO,=,= 5 5(yi);<< 4 ( 3 3I+4	-((<<i	BBBr*   N)__name__
__module____qualname__r9   )r@   s   r)   	Decoratedr1   K   s5        	C 	C 	C 	C 	C 	C 	Cr*   rD   )r8   )r@   rD   s   ` r)   method_decorator_metaclassrE   J   sI    C C C C C C CD C C C r*   c                       e Zd ZdZddZddZd Zed	             Zd
 Z	d Z
d Zd Zd ZddZd Zd Zd Zd Zd Zd ZdS )r"   z]HTML parser

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

    NFTc                      | _         |t          j        d          } ||           _        g  _         fdt          |                                          D              _        dS )a  
        :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

        Nr   c                 :    i | ]\  }}| |j                   S  )tree).0nameclsselfs      r)   
<dictcomp>z'HTMLParser.__init__.<locals>.<dictcomp>y   s9     1 1 1idCtSSty11 1 1 1r*   )strictr
   r!   rJ   errors	getPhasesr4   phases)rN   rJ   rP   r    debugs   `    r)   __init__zHTMLParser.__init__]   s|    * <.w77DD.//	1 1 1 1 ''--//1 1 1r*   r+   c                 &   || _         || _        || _        t          j        |fd| i|| _        |                                  	 |                                  d S # t          $ r, |                                  |                                  Y d S w xY w)Nparser)	innerHTMLModer-   	scriptingr	   HTMLTokenizer	tokenizerresetmainLoopr   )rN   stream	innerHTMLr-   rY   r&   s         r)   _parsezHTMLParser._parse|   s    &""#1&PPPPP

	MMOOOOO  	 	 	JJLLLMMOOOOOO	s   A 2BBc                 p   | j                                          d| _        g | _        g | _        d| _        | j        r| j                                        | _	        | j	        t          v r| j        j        | j        _        nH| j	        t          v r| j        j        | j        _        n#| j	        dk    r| j        j        | j        _        n	 | j        d         | _        | j                                         |                                  nd| _	        | j        d         | _        d | _        d | _        d| _        d S )NFz	no quirks	plaintext
beforeHtmlinitialT)rJ   r\   firstStartTagrQ   log
compatModerX   r-   lowerr_   r   r[   rcdataStatestater   rawtextStateplaintextStaterS   phaseinsertHtmlElementresetInsertionMode	lastPhasebeforeRCDataPhase
framesetOKrN   s    r)   r\   zHTMLParser.reset   s   	"% 	0!^1133DN~..'+~'A$$>11'+~'B$$;..'+~'D$$ \2DJJ((***##%%%%"DNY/DJ!%r*   c                 ^    t          | d          sdS | j        j        j        d         j        S )zName of the character encoding that was used to decode the input stream, or
        :obj:`None` if that is not determined yet

        r[   Nr   )hasattrr[   r^   charEncodingrL   rs   s    r)   documentEncodingzHTMLParser.documentEncoding   s1     t[)) 	4~$1!499r*   c                     |j         dk    rF|j        t          d         k    r0d|j        v o&|j        d                             t
                    dv S |j        |j         ft          v S )Nannotation-xmlmathmlencoding)z	text/htmlzapplication/xhtml+xml)rL   	namespacer   
attributes	translater   r   rN   elements     r)   isHTMLIntegrationPointz!HTMLParser.isHTMLIntegrationPoint   sv    L,,,!Z%999'"44 ;&z2<<(* *:;<
 %w|48TTTr*   c                 ,    |j         |j        ft          v S r3   )r|   rL   r   r   s     r)   isMathMLTextIntegrationPointz'HTMLParser.isMathMLTextIntegrationPoint   s    !7<04VVVr*   c                    t           d         }t           d         }t           d         }t           d         }t           d         }t           d         }t           d         }| j        D ]#}d }	|}
|
|
}	| j        j        r| j        j        d         nd }|r|j        nd }|r|j        nd }|
d	         }||k    r4|                     |
d
         |
                    di                      d }
nht          | j        j                  dk    s|| j        j	        k    s| 
                    |          r%||k    r|d         t          ddg          vsK|||fv sE|t          d         k    r|dk    r||k    r|d         dk    s|                     |          r||||fv r| j        }n| j        d         }||k    r|                    |
          }
n||k    r|                    |
          }
no||k    r|                    |
          }
nS||k    r|                    |
          }
n7||k    r|                    |
          }
n||k    r|                    |
          }
|
||k    r.|	d         r&|	d         s|                     dd|	d         i           %d}g }|rD|                    | j                   | j                                        }|r| j        |vsJ |Bd S d S )N
CharactersSpaceCharactersStartTagEndTagCommentDoctype
ParseErrorr8   datadatavarsr   rL   mglyph
malignmarkrz   ry   svginForeignContentselfClosingselfClosingAcknowledgedz&non-void-element-with-trailing-solidusT)r   r[   rJ   openElementsr|   rL   
parseErrorgetlendefaultNamespacer   	frozensetr   r   rm   rS   processCharactersprocessSpaceCharactersprocessStartTagprocessEndTagprocessCommentprocessDoctypeappend
processEOF)rN   CharactersTokenSpaceCharactersTokenStartTagTokenEndTagTokenCommentTokenDoctypeTokenParseErrorTokentoken
prev_token	new_tokencurrentNodecurrentNodeNamespacecurrentNodeNamer8   rm   	reprocessrS   s                     r)   r]   zHTMLParser.mainLoop   sn   $\2)*;<":. *!),!),$\2^ /	> /	>EJI'&
<@I<R\di4R88X\@K'U{'<'<QU$6A"K+"2"2t (?**OOIf$5y}}ZQS7T7TUUU $IIDI233q88,	0JJJ::;GG K=00 =	8\:R0S0SSS?4H"III-H1EEE(,<<<..v%//44[AA 0-BV!WWW $
 $,> ?..$)$;$;I$F$F		!555$)$@$@$K$K		..$)$9$9)$D$D		,,$)$7$7	$B$B		--$)$8$8$C$C		--$)$8$8$C$C	O 'R %%*]*C%"#<= & H!'F); <> > > 	 	0MM$*%%%
--//I 0z////	  	0 	0 	0 	0 	0r*   c                 Z     | j         |ddg|R i | | j                                        S )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)r`   rJ   getDocumentrN   r^   argsr&   s       r)   r#   zHTMLParser.parse  s>    , 	FE49$999&999y$$&&&r*   c                 X     | j         |dg|R i | | j                                        S )aZ  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)r`   rJ   getFragmentr   s       r)   r.   zHTMLParser.parseFragment  s<    2 	FD242226222y$$&&&r*   XXX-undefined-errorc                     |i }| j                             | j        j                                        ||f           | j        rt          t          |         |z            d S r3   )rQ   r   r[   r^   positionrP   r   r   )rN   	errorcoder   s      r)   r   zHTMLParser.parseError;  sf    HDN1::<<iRSSS; 	6Qy\H4555	6 	6r*   c                 0    t          |t                     d S r3   )adjust_attributesr   rN   r   s     r)   r   z!HTMLParser.adjustMathMLAttributesC  s    %!788888r*   c                 0    t          |t                     d S r3   )r   r   r   s     r)   r   zHTMLParser.adjustSVGAttributesF  s    %!455555r*   c                 0    t          |t                     d S r3   )r   adjustForeignAttributesMapr   s     r)   r   z"HTMLParser.adjustForeignAttributesI  s    %!;<<<<<r*   c                 8    | j                                          d S r3   )rW   rm   r   s     r)   reparseTokenNormalzHTMLParser.reparseTokenNormalL  s    r*   c                 j   d}ddddddddddd	d	d
dd}| j         j        d d d         D ]}|j        }d }|| j         j        d         k    r| j        sJ d}| j        }|dv r	| j        sJ |s|j        | j         j        k    rX||v r| j        ||                  } n|r| j        d	         } n|| _        d S )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   )rJ   r   rL   r_   r|   r   rS   rm   )rN   lastnewModesnodenodeName	new_phases         r)   ro   zHTMLParser.resetInsertionModeP  s     """"'$ 
 
  I*44R40 	 	DyHIty-a000~%%%> AAA~%%% DNdi.HHH8## K(:;	  K1	 


r*   c                     |dv sJ | j                             |           |dk    r| j        j        | j        _        n| j        j        | j        _        | j        | _        | j        d         | _        d S )N)RAWTEXTRCDATAr   text)	rJ   insertElementr[   rk   rj   ri   rm   originalPhaserS   )rN   r   contentTypes      r)   parseRCDataRawtextzHTMLParser.parseRCDataRawtext|  sr    33333	&&&)###'>#>DN  #'>#=DN !Z[(


r*   )NFTF)Fr+   F)r   N)rA   rB   rC   __doc__rU   r`   r\   propertyrw   r   r   r]   r#   r.   r   r   r   r   r   ro   r   rI   r*   r)   r"   r"   V   s5        1 1 1 1>        D : : X:U U UW W WA0 A0 A0F' ' '2' ' '86 6 6 69 9 96 6 6= = =  * * *X) ) ) ) )r*   r"   c                 x   d }d } G d d || |                     G d d          } G d d	          } G d
 d          } G d d          } G d d          } G d d          } G fdd           G d d          }	 G fdd          }
 G fdd           G fdd          } G fdd          } G fdd          } G fd d!          } G fd"d#          } G fd$d%          } G d& d'          } G fd(d)          } G d* d+          } G fd,d-          } G fd.d/          } G d0 d1          } G d2 d3          }i d4|d5|d6|d7|d8|d9|d:d;|	d<|
d=d>|d?|d@|dA|dB|dC|dD|||||||dES )FNc                 P     d t          j                    D              fd}|S )z4Logger that records which phase processes each tokenc                     i | ]\  }}||	S rI   rI   )rK   keyvalues      r)   rO   z*getPhases.<locals>.log.<locals>.<dictcomp>  s    FFFZS%eSFFFr*   c                    j                             d          rt          |          dk    r|d         }d|d                  i}|d         t          v r|d         |d<   | j        j                            | j        j        j        j         | j        j	        j
        j         | j
        j         j         |f            | g|R i |S  | g|R i |S )Nprocessr   r8   rL   )rA   
startswithr   r   rW   rf   r   r[   rj   rm   	__class__)rN   r   r&   r   infor@   
type_namess        r)   wrappedz'getPhases.<locals>.log.<locals>.wrapped  s     ++I66 73t99q==Q
5= 9:=M11#(=DL&&(=(C(L(,(9(C(L(,(?(0(9(,	(. / / /
  x6t666v666x6t666v666r*   )r   r4   )r@   r   r   s   ` @r)   rf   zgetPhases.<locals>.log  sE    FF:3C3E3EFFF
	7 	7 	7 	7 	7 	7 r*   c                 2    | rt          |          S t          S r3   )rE   r8   )use_metaclassmetaclass_funcs     r)   getMetaclasszgetPhases.<locals>.getMetaclass  s     	-n===Kr*   c                   L    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdS )getPhases.<locals>.PhasezNBase class for helper object that implements each phase of processing
        )rW   rJ   __startTagCache__endTagCachec                 >    || _         || _        i | _        i | _        d S r3   )rW   rJ   _Phase__startTagCache_Phase__endTagCache)rN   rW   rJ   s      r)   rU   z!getPhases.<locals>.Phase.__init__  s&     DKDI#%D !#Dr*   c                     t           r3   )NotImplementedErrorrs   s    r)   r   z#getPhases.<locals>.Phase.processEOF  s    %%r*   c                 \    | j                             || j         j        d                    d S )Nr   rJ   insertCommentr   r   s     r)   r   z'getPhases.<locals>.Phase.processComment  s,     I##E49+A"+EFFFFFr*   c                 :    | j                             d           d S )Nzunexpected-doctyperW   r   r   s     r)   r   z'getPhases.<locals>.Phase.processDoctype  s    K""#788888r*   c                 F    | j                             |d                    d S Nr   rJ   
insertTextr   s     r)   r   z*getPhases.<locals>.Phase.processCharacters  "    I  v/////r*   c                 F    | j                             |d                    d S r
  r  r   s     r)   r   z/getPhases.<locals>.Phase.processSpaceCharacters  r  r*   c                    |d         }|| j         v r| j         |         }n| j        |         x}| j         |<   t          | j                   t          | j                  dz  k    rf| j                             t	          t          | j                                        t          | j                   t          | j                  dz  k    f ||          S NrL   g?)r   startTagHandlerr   popnextiterrN   r   rL   funcs       r)   r   z(getPhases.<locals>.Phase.processStartTag  s     =D t++++D1484H4NNt+D1$.//#d6J2K2Kc2QQQ(,,T$t7K2L2L-M-MNNN $.//#d6J2K2Kc2QQQ 4;;r*   c                 (   | j         j        s&|d         dk    r| j                             d           |d                                         D ]8\  }}|| j        j        d         j        vr|| j        j        d         j        |<   9d| j         _        d S )NrL   r   znon-html-rootr   r   F)rW   re   r   r4   rJ   r   r}   rN   r   attrr   s       r)   startTagHtmlz%getPhases.<locals>.Phase.startTagHtml  s    ;, 8v&1H1H&&777  %V}2244 G Gety5a8CCCAFDI*1-8>(-DK%%%r*   c                    |d         }|| j         v r| j         |         }n| j        |         x}| j         |<   t          | j                   t          | j                  dz  k    rf| j                             t	          t          | j                                        t          | j                   t          | j                  dz  k    f ||          S r  )r  endTagHandlerr   r  r  r  r  s       r)   r   z&getPhases.<locals>.Phase.processEndTag  s     =D t))))$/262DT2JJt)$/$,--D4F0G0G#0MMM&**4T5G0H0H+I+IJJJ $,--D4F0G0G#0MMM 4;;r*   N)rA   rB   rC   r   	__slots__rU   r   r   r   r   r   r   r  r   rI   r*   r)   Phaser     s        	 	J		$ 	$ 	$	& 	& 	&	G 	G 	G
	9 	9 	9	0 	0 	0	0 	0 	0	 	 	"	. 	. 	.	 	 	 	 	r*   r  )	metaclassc                   R    e Zd Z e            Zd Zd Zd Zd Zd Z	d Z
d Zd Zd	S )
getPhases.<locals>.InitialPhasec                     d S r3   rI   r   s     r)   r   z6getPhases.<locals>.InitialPhase.processSpaceCharacters      Dr*   c                 P    | j                             || j         j                   d S r3   rJ   r  documentr   s     r)   r   z.getPhases.<locals>.InitialPhase.processComment  %    I##E49+=>>>>>r*   c                    |d         }|d         }|d         }|d         }|dk    s
|| |dk    r| j                             d           |d}| j                            |           |dk    r|                    t
                    }|rV|d         dk    sJ|                    d	          s5|d
v s1|                    d          r||r%|                                dk    rd| j         _        n8|                    d          s|                    d          r|d| j         _        | j         j	        d         | j         _
        d S )NrL   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 quirksrc   )rW   r   rJ   insertDoctyper~   r   r   rh   rg   rS   rm   )rN   r   rL   r)  r*  r+  s         r)   r   z.getPhases.<locals>.InitialPhase.processDoctype  s   =DZ(HZ(HI&G("6(X9N-N-N&&'8999I##E***2~~#--.>?? I:uV}66''6<7= 7=  7r  !) ) ) ''AB B) $ %!)!1!15q!q!q)1&&%%=> > : %%?@ @: &)9& $ 2< @DKr*   c                 V    d| j         _        | j         j        d         | j         _        d S )Nr-  rc   )rW   rg   rS   rm   rs   s    r)   anythingElsez,getPhases.<locals>.InitialPhase.anythingElseZ  s&    %-DK" $ 2< @DKr*   c                 b    | j                             d           |                                  |S )Nzexpected-doctype-but-got-charsrW   r   r0  r   s     r)   r   z1getPhases.<locals>.InitialPhase.processCharacters^  s0    K""#CDDDLr*   c                 t    | j                             dd|d         i           |                                  |S )Nz"expected-doctype-but-got-start-tagrL   r2  r   s     r)   r   z/getPhases.<locals>.InitialPhase.processStartTagc  sB    K""#G$*E&M#:< < <Lr*   c                 t    | j                             dd|d         i           |                                  |S )Nz expected-doctype-but-got-end-tagrL   r2  r   s     r)   r   z-getPhases.<locals>.InitialPhase.processEndTagi  sB    K""#E$*E&M#:< < <Lr*   c                 b    | j                             d           |                                  dS )Nzexpected-doctype-but-got-eofTr2  rs   s    r)   r   z*getPhases.<locals>.InitialPhase.processEOFo  s0    K""#ABBB4r*   N)rA   rB   rC   tupler  r   r   r   r0  r   r   r   r   rI   r*   r)   InitialPhaser!    s        EGG		 	 		? 	? 	?]	A ]	A ]	A~	A 	A 	A	 	 	
	 	 		 	 		 	 	 	 	r*   r7  c                   L    e Zd Z e            Zd Zd Zd Zd Zd Z	d Z
d ZdS )	"getPhases.<locals>.BeforeHtmlPhasec                     | j                             t          dd                     | j        j        d         | j        _        d S )Nr   r   r   )rJ   
insertRootimpliedTagTokenrW   rS   rm   rs   s    r)   rn   z4getPhases.<locals>.BeforeHtmlPhase.insertHtmlElementx  s<    I  !D!DEEE $ 2< @DKr*   c                 .    |                                   dS NTrn   rs   s    r)   r   z-getPhases.<locals>.BeforeHtmlPhase.processEOF}  s    ""$$$4r*   c                 P    | j                             || j         j                   d S r3   r%  r   s     r)   r   z1getPhases.<locals>.BeforeHtmlPhase.processComment  r'  r*   c                     d S r3   rI   r   s     r)   r   z9getPhases.<locals>.BeforeHtmlPhase.processSpaceCharacters  r#  r*   c                 .    |                                   |S r3   r?  r   s     r)   r   z4getPhases.<locals>.BeforeHtmlPhase.processCharacters  s    ""$$$Lr*   c                 ^    |d         dk    rd| j         _        |                                  |S )NrL   r   T)rW   re   rn   r   s     r)   r   z2getPhases.<locals>.BeforeHtmlPhase.processStartTag  s2    V}&&,0)""$$$Lr*   c                     |d         dvr%| j                             dd|d         i           d S |                                  |S )NrL   r   r   r   brzunexpected-end-tag-before-html)rW   r   rn   r   s     r)   r   z0getPhases.<locals>.BeforeHtmlPhase.processEndTag  sc    V}$BBB&&'G(.f'>@ @ @ @ @ &&(((r*   N)rA   rB   rC   r6  r  rn   r   r   r   r   r   r   rI   r*   r)   BeforeHtmlPhaser9  t  s        EGG		A 	A 	A
	 	 		? 	? 	?	 	 		 	 		 	 		 	 	 	 	r*   rG  c                       e Zd Z e            Zd Zd Zd Zd Zd Z	d Z
d Zd Z ej        d	efd
e	fg          Ze
e_         ej        defg          Zee_        dS )"getPhases.<locals>.BeforeHeadPhasec                 L    |                      t          dd                     dS )Nr   r   TstartTagHeadr<  rs   s    r)   r   z-getPhases.<locals>.BeforeHeadPhase.processEOF  s%    ofjAABBB4r*   c                     d S r3   rI   r   s     r)   r   z9getPhases.<locals>.BeforeHeadPhase.processSpaceCharacters  r#  r*   c                 L    |                      t          dd                     |S Nr   r   rK  r   s     r)   r   z4getPhases.<locals>.BeforeHeadPhase.processCharacters  %    ofjAABBBLr*   c                 L    | j         j        d                             |          S Nr   rW   rS   r   r   s     r)   r  z/getPhases.<locals>.BeforeHeadPhase.startTagHtml       ;%h/??FFFr*   c                     | j                             |           | j         j        d         | j         _        | j        j        d         | j        _        d S )Nr   inHead)rJ   r   r   headPointerrW   rS   rm   r   s     r)   rL  z/getPhases.<locals>.BeforeHeadPhase.startTagHead  sF    I##E***$(I$:2$>DI! $ 28 <DKr*   c                 L    |                      t          dd                     |S rO  rK  r   s     r)   startTagOtherz0getPhases.<locals>.BeforeHeadPhase.startTagOther  rP  r*   c                 L    |                      t          dd                     |S rO  rK  r   s     r)   endTagImplyHeadz2getPhases.<locals>.BeforeHeadPhase.endTagImplyHead  rP  r*   c                 L    | j                             dd|d         i           d S )Nzend-tag-after-implied-rootrL   r  r   s     r)   endTagOtherz.getPhases.<locals>.BeforeHeadPhase.endTagOther  s5    K""#?$*E&M#:< < < < <r*   r   r   rE  N)rA   rB   rC   r6  r  r   r   r   r  rL  rY  r[  r]  r   MethodDispatcherr  defaultr  rI   r*   r)   BeforeHeadPhaserI    s        EGG		 	 		 	 		 	 		G 	G 	G	= 	= 	=
	 	 		 	 		< 	< 	< 2&1\"\"3
   #0//+_=1
   !,r*   r`  c                      e Zd Z e            Zd Zd Zd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Z ej        defdefdefdefdefde	fde
fdefg          Zee_         ej        defdefg          Zee_        dS )getPhases.<locals>.InHeadPhasec                 .    |                                   dS r>  r0  rs   s    r)   r   z)getPhases.<locals>.InHeadPhase.processEOF      4r*   c                 .    |                                   |S r3   rd  r   s     r)   r   z0getPhases.<locals>.InHeadPhase.processCharacters      Lr*   c                 L    | j         j        d                             |          S rR  rS  r   s     r)   r  z+getPhases.<locals>.InHeadPhase.startTagHtml  rT  r*   c                 :    | j                             d           d S )Nz!two-heads-are-not-better-than-oner  r   s     r)   rL  z+getPhases.<locals>.InHeadPhase.startTagHead  s    K""#FGGGGGr*   c                     | j                             |           | j         j                                         d|d<   d S NTr   rJ   r   r   r  r   s     r)   startTagBaseLinkCommandz6getPhases.<locals>.InHeadPhase.startTagBaseLinkCommand  @    I##E***I"&&(((/3E+,,,r*   c                 ~   | j                             |           | j         j                                         d|d<   |d         }| j        j        j        j        d         dk    rd|v r,| j        j        j                            |d                    d S d|v rd|v r|d         	                                d	k    rt          j        |d                             d
                    }t          j        |          }|                                }| j        j        j                            |           d S d S d S d S d S )NTr   r   r   	tentativecharsetcontentz
http-equivzcontent-typezutf-8)rJ   r   r   r  rW   r[   r^   rv   changeEncodingrh   r   EncodingBytesencodeContentAttrParserr#   )rN   r   r}   r   rW   codecs         r)   startTagMetaz+getPhases.<locals>.InHeadPhase.startTagMeta  sD   I##E***I"&&(((/3E+,vJ{$+8;{JJ
**K)0??
9@UVVVVV:--"j00 .4466.HH
 (5j6K6R6RSZ6[6[\\D);DAAF"LLNNEK)0??FFFFF KJ .-00HHr*   c                 <    | j                             |d           d S )Nr   rW   r   r   s     r)   startTagTitlez,getPhases.<locals>.InHeadPhase.startTagTitle  s     K**5(;;;;;r*   c                 <    | j                             |d           d S )Nr   rz  r   s     r)   startTagNoFramesStylez4getPhases.<locals>.InHeadPhase.startTagNoFramesStyle       K**5)<<<<<r*   c                     | j         j        r| j                             |d           d S | j                            |           | j         j        d         | j         _        d S )Nr   inHeadNoscript)rW   rY   r   rJ   r   rS   rm   r   s     r)   startTagNoscriptz/getPhases.<locals>.InHeadPhase.startTagNoscript  s_    {$ I..ui@@@@@	''...$(K$67G$H!!!r*   c                     | j                             |           | j        j        j        | j        j        _        | j        j        | j        _        | j        j        d         | j        _        d S )Nr   )	rJ   r   rW   r[   scriptDataStaterj   rm   r   rS   r   s     r)   startTagScriptz-getPhases.<locals>.InHeadPhase.startTagScript   sV    I##E****.+*?*ODK!'(,(9DK% $ 26 :DKr*   c                 .    |                                   |S r3   rd  r   s     r)   rY  z,getPhases.<locals>.InHeadPhase.startTagOther  rg  r*   c                     | j         j        j                                        }|j        dk    sJ d|j        z              | j         j        d         | j         _        d S )Nr   zExpected head got %s	afterHeadrW   rJ   r   r  rL   rS   rm   rN   r   r   s      r)   
endTagHeadz)getPhases.<locals>.InHeadPhase.endTagHead
  sX    ;#04466D9&&&(>(J&&& $ 2; ?DKr*   c                 .    |                                   |S r3   rd  r   s     r)   endTagHtmlBodyBrz/getPhases.<locals>.InHeadPhase.endTagHtmlBodyBr  rg  r*   c                 L    | j                             dd|d         i           d S Nunexpected-end-tagrL   r  r   s     r)   r]  z*getPhases.<locals>.InHeadPhase.endTagOther  *    K""#7&%-9PQQQQQr*   c                 J    |                      t          d                     d S )Nr   )r  r<  rs   s    r)   r0  z+getPhases.<locals>.InHeadPhase.anythingElse  s"    OOOF3344444r*   r   title)noframesstylenoscriptscript)basebasefontbgsoundcommandlinkr:   r   )rF  r   r   N)rA   rB   rC   r6  r  r   r   r  rL  rm  rx  r{  r}  r  r  rY  r  r  r]  r0  r   r^  r  r_  r  rI   r*   r)   InHeadPhaserb    s       EGG		 	 		 	 		G 	G 	G	H 	H 	H	4 	4 	4
	G 	G 	G*	< 	< 	<	= 	= 	=	I 	I 	I	; 	; 	;	 	 		@ 	@ 	@
	 	 		R 	R 	R	5 	5 	5 2&1\"m$"$9:)*~&?$&\"\"
3
 
 
 #0//Z #%561
   !,r*   r  c                       e Zd Z e            Zd Zd Zd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Z ej        de	fde
fdefg          Zee_         ej        defdefg          Zee_        dS )&getPhases.<locals>.InHeadNoscriptPhasec                 b    | j                             d           |                                  dS )Nzeof-in-head-noscriptTr2  rs   s    r)   r   z1getPhases.<locals>.InHeadNoscriptPhase.processEOF/  s0    K""#9:::4r*   c                 L    | j         j        d                             |          S NrV  )rW   rS   r   r   s     r)   r   z5getPhases.<locals>.InHeadNoscriptPhase.processComment4  s     ;%h/>>uEEEr*   c                 b    | j                             d           |                                  |S )Nzchar-in-head-noscriptr2  r   s     r)   r   z8getPhases.<locals>.InHeadNoscriptPhase.processCharacters7  s0    K""#:;;;Lr*   c                 L    | j         j        d                             |          S r  rW   rS   r   r   s     r)   r   z=getPhases.<locals>.InHeadNoscriptPhase.processSpaceCharacters<       ;%h/FFuMMMr*   c                 L    | j         j        d                             |          S rR  rS  r   s     r)   r  z3getPhases.<locals>.InHeadNoscriptPhase.startTagHtml?  rT  r*   c                 L    | j         j        d                             |          S r  rS  r   s     r)   rm  z>getPhases.<locals>.InHeadNoscriptPhase.startTagBaseLinkCommandB  rT  r*   c                 L    | j                             dd|d         i           d S Nunexpected-start-tagrL   r  r   s     r)   startTagHeadNoscriptz;getPhases.<locals>.InHeadNoscriptPhase.startTagHeadNoscriptE  *    K""#9FE&M;RSSSSSr*   c                 t    | j                             dd|d         i           |                                  |S Nzunexpected-inhead-noscript-tagrL   r2  r   s     r)   rY  z4getPhases.<locals>.InHeadNoscriptPhase.startTagOtherH  <    K""#CfeTZmE\]]]Lr*   c                     | j         j        j                                        }|j        dk    sJ d|j        z              | j         j        d         | j         _        d S )Nr  zExpected noscript got %srV  r  r  s      r)   endTagNoscriptz5getPhases.<locals>.InHeadNoscriptPhase.endTagNoscriptM  sX    ;#04466D9
***,F,R*** $ 28 <DKr*   c                 t    | j                             dd|d         i           |                                  |S r  r2  r   s     r)   endTagBrz/getPhases.<locals>.InHeadNoscriptPhase.endTagBrR  r  r*   c                 L    | j                             dd|d         i           d S r  r  r   s     r)   r]  z2getPhases.<locals>.InHeadNoscriptPhase.endTagOtherW  r  r*   c                 J    |                      t          d                     d S )Nr  )r  r<  rs   s    r)   r0  z3getPhases.<locals>.InHeadNoscriptPhase.anythingElseZ  s$    
 ; ;<<<<<r*   r   )r  r  r  r:   r  r  )r   r  r  rF  N)rA   rB   rC   r6  r  r   r   r   r   r  rm  r  rY  r  r  r]  r0  r   r^  r  r_  r  rI   r*   r)   InHeadNoscriptPhaser  ,  sS       EGG		 	 	
	F 	F 	F	 	 	
	N 	N 	N	G 	G 	G	G 	G 	G	T 	T 	T	 	 	
	= 	= 	=
	 	 	
	R 	R 	R	= 	= 	= 2&1\"IKbc!#783
  
 #0//(81
   !,r*   r  c                       e Zd Z e            Zd Zd Zd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Z ej        defdefde	fde
fdefg          Zee_         ej        defg          Zee_        dS )!getPhases.<locals>.AfterHeadPhasec                 .    |                                   dS r>  rd  rs   s    r)   r   z,getPhases.<locals>.AfterHeadPhase.processEOFn  re  r*   c                 .    |                                   |S r3   rd  r   s     r)   r   z3getPhases.<locals>.AfterHeadPhase.processCharactersr  rg  r*   c                 L    | j         j        d                             |          S rR  rS  r   s     r)   r  z.getPhases.<locals>.AfterHeadPhase.startTagHtmlv  rT  r*   c                     d| j         _        | j                            |           | j         j        d         | j         _        d S )NFr   )rW   rr   rJ   r   rS   rm   r   s     r)   startTagBodyz.getPhases.<locals>.AfterHeadPhase.startTagBodyy  s<    %*DK"I##E*** $ 28 <DKr*   c                 r    | j                             |           | j        j        d         | j        _        d S )Nr   )rJ   r   rW   rS   rm   r   s     r)   startTagFramesetz2getPhases.<locals>.AfterHeadPhase.startTagFrameset~  s2    I##E*** $ 2< @DKr*   c                 r   | j                             dd|d         i           | j        j                            | j        j                   | j         j        d                             |           | j        j        d d d         D ]/}|j        dk    r"| j        j        	                    |            d S 0d S )Nz#unexpected-start-tag-out-of-my-headrL   rV  r   r   )
rW   r   rJ   r   r   rW  rS   r   rL   remover  s      r)   startTagFromHeadz2getPhases.<locals>.AfterHeadPhase.startTagFromHead  s    K""#H$*E&M#:< < <I"))$)*?@@@Kx(88???	.ttt4  9&&I*11$777EE ' r*   c                 L    | j                             dd|d         i           d S r  r  r   s     r)   rL  z.getPhases.<locals>.AfterHeadPhase.startTagHead  r  r*   c                 .    |                                   |S r3   rd  r   s     r)   rY  z/getPhases.<locals>.AfterHeadPhase.startTagOther  rg  r*   c                 .    |                                   |S r3   rd  r   s     r)   r  z2getPhases.<locals>.AfterHeadPhase.endTagHtmlBodyBr  rg  r*   c                 L    | j                             dd|d         i           d S r  r  r   s     r)   r]  z-getPhases.<locals>.AfterHeadPhase.endTagOther  r  r*   c                     | j                             t          dd                     | j        j        d         | j        _        d| j        _        d S )Nr   r   r   T)rJ   r   r<  rW   rS   rm   rr   rs   s    r)   r0  z.getPhases.<locals>.AfterHeadPhase.anythingElse  sF    I##OFJ$G$GHHH $ 28 <DK%)DK"""r*   r   r   r   )	r  r  r  r  r:   r  r  r  r  r   )r   r   rF  N)rA   rB   rC   r6  r  r   r   r  r  r  r  rL  rY  r  r]  r0  r   r^  r  r_  r  rI   r*   r)   AfterHeadPhaser  k  sQ       EGG		 	 		 	 		G 	G 	G	= 	= 	=
	A 	A 	A	 	 		T 	T 	T	 	 		 	 		R 	R 	R	* 	* 	*
 2&1\"\")*  \"3
   #0//2H2B2D 1E F F +r*   r  c                       e Zd ZdZ fdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6 e7j8        g d5j9        fd6efd7efd8efd9efe:efd:efd;efd<efd=efd>efd?efd@efdAefdBefdCefdDefdEefdFefdGefdHefdIefdJe fdKe!fdLe"fdMe#fdNe$fdOe&fdPe'fdQe%fdRe(fdSe)fdTe*f          Z;e+e;_<         e7j8        d7e-fd5e.fdUe/fd;e0fdVe,fdWe1fe:e2fdXe3fdBe4fdYe5fg
          Z=e6e=_<         xZ>S )ZgetPhases.<locals>.InBodyPhase)r   c                 V     t          |           j        |i | | j        | _        d S r3   )superrU   processSpaceCharactersNonPrer   )rN   r   r&   InBodyPhaser   s      r)   rU   z'getPhases.<locals>.InBodyPhase.__init__  s6    -E+t$$-t>v>>>*.*KD'''r*   c                 b    |j         |j         k    o|j        |j        k    o|j        |j        k    S r3   )rL   r|   r}   )rN   node1node2s      r)   isMatchingFormattingElementz:getPhases.<locals>.InBodyPhase.isMatchingFormattingElement  s7    J%*, 9Ou69$(88:r*   c                    | j                             |           | j         j        d         }g }| j         j        d d d         D ]8}|t          u r n,|                     ||          r|                    |           9t          |          dk    sJ t          |          dk    r%| j         j                            |d                    | j         j                            |           d S )Nr      )	rJ   r   r   activeFormattingElementsr   r  r   r   r  )rN   r   r   matchingElementsr   s        r)   addFormattingElementz3getPhases.<locals>.InBodyPhase.addFormattingElement  s    I##E***i,R0G!	:44R4@ 2 26>>E55dGDD 2$++D111'((A----#$$))	299:J2:NOOOI.55g>>>>>r*   c                     t          d          }| j        j        d d d         D ](}|j        |vr| j                            d            d S )d S )N)dddtlir(   r   r   r   r   r   r   r   r   r   z expected-closing-tag-but-got-eof)r   rJ   r   rL   rW   r   )rN   allowed_elementsr   s      r)   r   z)getPhases.<locals>.InBodyPhase.processEOF  ss    ( *2  3  3 	.ttt4  9$444K**+MNNNEE 5 r*   c                 T   |d         }| j         | _        |                    d          rG| j        j        d         j        dv r.| j        j        d                                         s
|dd          }|r5| j                                         | j                            |           d S d S )Nr   
r   )prelistingtextarear   )	r  r   r   rJ   r   rL   
hasContent#reconstructActiveFormattingElementsr  )rN   r   r   s      r)   !processSpaceCharactersDropNewlinez@getPhases.<locals>.InBodyPhase.processSpaceCharactersDropNewline  s     =D*.*KD'%%  	&r*/3QQQ	.r2==?? RABBx +	==???	$$T*****+ +r*   c                 
   |d         dk    rd S | j                                          | j                             |d                    | j        j        r-t          d |d         D                       rd| j        _        d S d S d S )Nr    c                      g | ]}|t           vS rI   r   rK   chars     r)   
<listcomp>zDgetPhases.<locals>.InBodyPhase.processCharacters.<locals>.<listcomp>  s-     0 0 0 0 0 0 0r*   F)rJ   r  r  rW   rr   anyr   s     r)   r   z0getPhases.<locals>.InBodyPhase.processCharacters  s    V}((I99;;;I  v///& / 0 0!&v0 0 0 1 1/ */&&&/ / / /r*   c                 x    | j                                          | j                             |d                    d S r
  )rJ   r  r  r   s     r)   r  z;getPhases.<locals>.InBodyPhase.processSpaceCharactersNonPre  s6    I99;;;I  v/////r*   c                 L    | j         j        d                             |          S r  rS  r   s     r)   startTagProcessInHeadz4getPhases.<locals>.InBodyPhase.startTagProcessInHead  rT  r*   c                    | j                             dddi           t          | j        j                  dk    s| j        j        d         j        dk    r| j         j        sJ d S d| j         _        |d                                         D ]8\  }}|| j        j        d         j	        vr|| j        j        d         j	        |<   9d S )Nr  rL   r   r   Fr   )
rW   r   r   rJ   r   rL   r_   rr   r4   r}   r  s       r)   r  z+getPhases.<locals>.InBodyPhase.startTagBody  s    K""#9FF;KLLLDI*++q00I*1-2f<<{,,,,,,).&#(=#6#6#8#8 K KKD%49#9!#<#GGGEJ	.q1<TBK Kr*   c                    | j                             dddi           t          | j        j                  dk    s| j        j        d         j        dk    r| j         j        sJ d S | j         j        sd S | j        j        d         j        r:| j        j        d         j        	                    | j        j        d                    | j        j        d         j        dk    r9| j        j        
                                 | j        j        d         j        dk    9| j                            |           | j         j        d         | j         _        d S )	Nr  rL   r   r   r   r   r   r   )rW   r   r   rJ   r   rL   r_   rr   parentremoveChildr  r   rS   rm   r   s     r)   r  z/getPhases.<locals>.InBodyPhase.startTagFrameset  s5   K""#9FJ;OPPPDI*++q00DI4J14M4RV\4\4\{,,,,,,[+ E9)!,3 \I*1-4@@AWXYAZ[[[i,R05??I*..000 i,R05??	''...$(K$6|$D!!!r*   c                     | j                             dd          r"|                     t          d                     | j                             |           d S Nr(   buttonvariant)rJ   elementInScopeendTagPr<  r   r   s     r)   startTagClosePz-getPhases.<locals>.InBodyPhase.startTagCloseP  sU    y''X'>> 3_S11222I##E*****r*   c                     | j                             dd          r"|                     t          d                     | j                             |           d| j        _        | j        | _        d S )Nr(   r  r  F)	rJ   r  r  r<  r   rW   rr   r  r   r   s     r)   startTagPreListingz1getPhases.<locals>.InBodyPhase.startTagPreListing  sj    y''X'>> 3_S11222I##E***%*DK"*.*PD'''r*   c                 D   | j         j        r| j                            dddi           d S | j                             dd          r"|                     t          d                     | j                             |           | j         j        d         | j         _        d S )Nr  rL   formr(   r  r  r   )	rJ   formPointerrW   r   r  r  r<  r   r   r   s     r)   startTagFormz+getPhases.<locals>.InBodyPhase.startTagForm  s    y$ C&&'=?OPPPPP9++C+BB 7LL!5!5666	''...(,	(>r(B	%%%r*   c                    d| j         _        dgddgddgd}||d                  }t          | j        j                  D ]X}|j        |v r4| j         j                            t          |j        d                      n|j	        t          v r|j        dvr nY| j                            d	d
          r-| j         j                            t          d	d                     | j                            |           d S )NFr  r  r  )r  r  r  rL   r   )addressr+   r(   r(   r  r  )rW   rr   reversedrJ   r   rL   rm   r   r<  	nameTupler   r  r   )rN   r   stopNamesMap	stopNamesr   s        r)   startTagListItemz/getPhases.<locals>.InBodyPhase.startTagListItem&  s   %*DK"#'&#',#',0 0L %U6]3I !788  9	))K%33'	8<<> > >ENo55	)@@@Ey''X'>> 4!//#C224 4 4 I##E*****r*   c                     | j                             dd          r"|                     t          d                     | j                             |           | j        j        j        | j        j        _        d S r  )	rJ   r  r  r<  r   rW   r[   rl   rj   r   s     r)   startTagPlaintextz0getPhases.<locals>.InBodyPhase.startTagPlaintext<  sj    y''X'>> 3_S11222I##E****.+*?*NDK!'''r*   c                 t   | j                             dd          r"|                     t          d                     | j         j        d         j        t          v rA| j                            dd|d         i           | j         j        	                                 | j         
                    |           d S )Nr(   r  r  r   r  rL   )rJ   r  r  r<  r   rL   r   rW   r   r  r   r   s     r)   startTagHeadingz.getPhases.<locals>.InBodyPhase.startTagHeadingB  s    y''X'>> 3_S11222y%b)./AA&&'=f?VWWW	&**,,,I##E*****r*   c                    | j                             d          }|r| j                            dddd           |                     t          d                     || j         j        v r| j         j                            |           || j         j        v r| j         j                            |           | j         	                                 | 
                    |           d S )Na$unexpected-start-tag-implies-end-tag	startNameendName)rJ   !elementInActiveFormattingElementsrW   r   endTagFormattingr<  r   r  r  r  r  )rN   r   afeAElements      r)   	startTagAz(getPhases.<locals>.InBodyPhase.startTagAJ  s    )EEcJJK K&&'M58S'I'IK K K%%oc&:&:;;;$)"888I*11+>>>$)"DDDI6==kJJJI99;;;%%e,,,,,r*   c                 b    | j                                          |                     |           d S r3   )rJ   r  r  r   s     r)   startTagFormattingz1getPhases.<locals>.InBodyPhase.startTagFormattingW  s0    I99;;;%%e,,,,,r*   c                 H   | j                                          | j                             d          rY| j                            dddd           |                     t          d                     | j                                          |                     |           d S )Nnobrr  r  )rJ   r  r  rW   r   r   r<  r  r   s     r)   startTagNobrz+getPhases.<locals>.InBodyPhase.startTagNobr[  s    I99;;;y''// @&&'M5;'O'OQ Q Q""?6#:#:;;;	==???%%e,,,,,r*   c                 <   | j                             d          rB| j                            dddd           |                     t          d                     |S | j                                          | j                             |           d| j        _        d S )Nr  r  r  F)	rJ   r  rW   r   r   r<  r  r   rr   r   s     r)   startTagButtonz-getPhases.<locals>.InBodyPhase.startTagButtone  s    y''11 /&&'M5=('S'SU U U""?8#<#<===	==???	''...).&&&r*   c                     | j                                          | j                             |           | j         j                            t
                     d| j        _        d S NF)rJ   r  r   r  r   r   rW   rr   r   s     r)   startTagAppletMarqueeObjectz:getPhases.<locals>.InBodyPhase.startTagAppletMarqueeObjectp  sU    I99;;;I##E***I.55f===%*DK"""r*   c                    | j                             dd          r"|                     t          d                     | j                                          d| j        _        | j                            |d           d S )Nr(   r  r  Fr   )rJ   r  r  r<  r  rW   rr   r   r   s     r)   startTagXmpz*getPhases.<locals>.InBodyPhase.startTagXmpv  su    y''X'>> 3_S11222I99;;;%*DK"K**5)<<<<<r*   c                 &   | j         j        dk    r>| j                            dd          r"|                     t          d                     | j                            |           d| j         _        | j         j        d         | j         _	        d S )Nr-  r(   r  r  Fr   )
rW   rg   rJ   r  r   r<  r   rr   rS   rm   r   s     r)   startTagTablez,getPhases.<locals>.InBodyPhase.startTagTable}  s    {%119++C+BB =&&s';';<<<I##E***%*DK" $ 29 =DKr*   c                     | j                                          | j                             |           | j         j                                         d|d<   d| j        _        d S )NTr   F)rJ   r  r   r   r  rW   rr   r   s     r)   startTagVoidFormattingz5getPhases.<locals>.InBodyPhase.startTagVoidFormatting  s^    I99;;;I##E***I"&&(((/3E+,%*DK"""r*   c                     | j         j        }|                     |           d|d         v r8|d         d                             t                    dk    r|| j         _        d S d S d S )Nr8   r   hidden)rW   rr   r&  r~   r   )rN   r   rr   s      r)   startTagInputz,getPhases.<locals>.InBodyPhase.startTagInput  sp    /J''...%-''&M&)334DEEQQ)3&&& ('QQr*   c                     | j                             |           | j         j                                         d|d<   d S rk  rl  r   s     r)   startTagParamSourcez2getPhases.<locals>.InBodyPhase.startTagParamSource  rn  r*   c                    | j                             dd          r"|                     t          d                     | j                             |           | j         j                                         d|d<   d| j        _        d S )Nr(   r  r  Tr   F)	rJ   r  r  r<  r   r   r  rW   rr   r   s     r)   
startTagHrz)getPhases.<locals>.InBodyPhase.startTagHr  s    y''X'>> 3_S11222I##E***I"&&(((/3E+,%*DK"""r*   c           	          | j                             dddd           |                     t          dd|d         |d                              d S )	Nzunexpected-start-tag-treated-asimageimgoriginalNamenewNamer   r   r   r}   r   )rW   r   r   r<  r   s     r)   startTagImagez,getPhases.<locals>.InBodyPhase.startTagImage  s{    K""#D4;#N#NP P P  
<A&M=B==Q"S "S "S T T T T Tr*   c           	      h   | j                             dddi           | j        j        rd S i }d|d         v r|d         d         |d<   |                     t          dd|                     |                     t          d	d                     |                     t          d
d                     d|d         v r|d         d         }nd}|                     t          d         |d           |d                                         }d|v r|d= d|v r|d= d|d<   |                     t          dd||d                              | 	                    t          d
                     |                     t          d	d                     | 	                    t          d                     d S )Nzdeprecated-tagrL   isindexactionr   r  r   )r}   hrlabelpromptz3This is a searchable index. Enter search keywords: r   r8   r   inputr   r4  )
rW   r   rJ   r   r   r<  r   r   copyr   )rN   r   
form_attrsr;  r}   s        r)   startTagIsIndexz.getPhases.<locals>.InBodyPhase.startTagIsIndex  s   K""#3fi5HIIIy$ J5=((',V}X'>
8$  <F"H "H "H I I I  z!B!BCCC  *!E!EFFF5=((vx0N""#L16BBD D Dv++--J:%%x(:%%x(!*Jv  *<F=B==Q"S "S "S T T T w77888  z!B!BCCCv6677777r*   c                     | j                             |           | j        j        j        | j        j        _        | j        | _        d| j        _        d S r  )	rJ   r   rW   r[   ri   rj   r  r   rr   r   s     r)   startTagTextareaz/getPhases.<locals>.InBodyPhase.startTagTextarea  sH    I##E****.+*?*KDK!'*.*PD'%*DK"""r*   c                 H    d| j         _        |                     |           d S r  )rW   rr   startTagRawtextr   s     r)   startTagIFramez-getPhases.<locals>.InBodyPhase.startTagIFrame  s&    %*DK"  '''''r*   c                 v    | j         j        r|                     |           d S |                     |           d S r3   )rW   rY   rD  rY  r   s     r)   r  z/getPhases.<locals>.InBodyPhase.startTagNoscript  sC    {$ *$$U+++++""5)))))r*   c                 <    | j                             |d           dS )z8iframe, noembed noframes, noscript(if scripting enabled)r   Nrz  r   s     r)   rD  z.getPhases.<locals>.InBodyPhase.startTagRawtext  r~  r*   c                    | j         j        d         j        dk    r,| j        j                            t          d                     | j                                          | j        j                             |           d S Nr   option)	rJ   r   rL   rW   rm   r   r<  r  r   r   s     r)   startTagOptz*getPhases.<locals>.InBodyPhase.startTagOpt  sn    y%b).(::!//0I0IJJJI99;;;K**511111r*   c                    | j                                          | j                             |           d| j        _        | j        j        | j        j        d         | j        j        d         | j        j        d         | j        j        d         | j        j        d         | j        j        d         fv r| j        j        d         | j        _        d S | j        j        d	         | j        _        d S )
NFr   r   r   r   r   r   inSelectInTabler   )rJ   r  r   rW   rr   rm   rS   r   s     r)   startTagSelectz-getPhases.<locals>.InBodyPhase.startTagSelect  s    I99;;;I##E***%*DK"{ T[%7	%B%)[%7%D%)[%7%H%)[%7%F%)[%7%@%)[%7%A%C C C %)K$67H$I!!!$(K$6z$B!!!r*   c                    | j                             d          rM| j                                          | j         j        d         j        dk    r| j                                         | j                             |           d S )Nrubyr   )rJ   r  generateImpliedEndTagsr   rL   rW   r   r   r   s     r)   startTagRpRtz+getPhases.<locals>.InBodyPhase.startTagRpRt  sv    y''// -	002229)"-2f<<K**,,,I##E*****r*   c                 N   | j                                          | j                            |           | j                            |           t
          d         |d<   | j                             |           |d         r%| j         j                                         d|d<   d S d S )Nrz   r|   r   Tr   )	rJ   r  rW   r   r   r   r   r   r  r   s     r)   startTagMathz+getPhases.<locals>.InBodyPhase.startTagMath  s    I99;;;K..u555K//666!+H!5E+I##E*** ]# 8	&**,,,37/0008 8r*   c                 N   | j                                          | j                            |           | j                            |           t
          d         |d<   | j                             |           |d         r%| j         j                                         d|d<   d S d S )Nr   r|   r   Tr   )	rJ   r  rW   r   r   r   r   r   r  r   s     r)   startTagSvgz*getPhases.<locals>.InBodyPhase.startTagSvg  s    I99;;;K++E222K//666!+E!2E+I##E*** ]# 8	&**,,,37/0008 8r*   c                 L    | j                             dd|d         i           dS )a5   Elements 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-ignoredrL   Nr  r   s     r)   startTagMisplacedz0getPhases.<locals>.InBodyPhase.startTagMisplaced  s-     K""#AFERXMCZ[[[[[r*   c                 l    | j                                          | j                             |           d S r3   )rJ   r  r   r   s     r)   rY  z,getPhases.<locals>.InBodyPhase.startTagOther  s2    I99;;;I##E*****r*   c                 T   | j                             dd          se|                     t          dd                     | j                            dddi           |                     t          dd                     d S | j                             d           | j         j        d         j	        dk    r| j                            dddi           | j         j        
                                }|j	        dk    r+| j         j        
                                }|j	        dk    )d S d S )	Nr(   r  r  r   r  rL   r   r   )rJ   r  r  r<  rW   r   r  rQ  r   rL   r  r  s      r)   r  z&getPhases.<locals>.InBodyPhase.endTagP  s   9++C+BB 
8##OC$D$DEEE&&';fc]KKK_S(;;<<<<<	005559)"-2c99K**+?&#OOOy-1133i3&&915577D i3&&&&&&r*   c                    | j                             d          s| j                                         d S | j         j        d         j        dk    rR| j         j        dd          D ]=}|j        t          d          vr%| j                            dd|j        d            n>| j        j        d         | j        _        d S )Nr   r      )r  r  r  optgrouprJ  r(   rprtr   r   r   r   r   r   r   r   $expected-one-end-tag-but-got-anothergotNameexpectedName	afterBody)	rJ   r  rW   r   r   rL   r   rS   rm   r  s      r)   
endTagBodyz)getPhases.<locals>.InBodyPhase.endTagBody)  s    9++F33 &&((('+0F:: I21226 
 
Dy	 3; )< )< < < ..B(.	JJL L L < !% 2; ?DKr*   c                     | j                             d          r$|                     t          d                     |S d S )Nr   )rJ   r  re  r<  r   s     r)   
endTagHtmlz)getPhases.<locals>.InBodyPhase.endTagHtml;  sC    y''//  7 7888 r*   c                    |d         dk    r| j         | _        | j                            |d                   }|r| j                                         | j        j        d         j        |d         k    r#| j                            dd|d         i           |r`| j        j        	                                }|j        |d         k    r3| j        j        	                                }|j        |d         k    /d S d S d S )NrL   r  r   end-tag-too-early)
r  r   rJ   r  rQ  r   rL   rW   r   r  )rN   r   inScoper   s       r)   endTagBlockz*getPhases.<locals>.InBodyPhase.endTagBlockA  s    V}%%.2.O+i..uV}==G 3	00222y%b).%-??&&':VU6]<STTT 8y-1133i5=00915577D i5=00008 800r*   c                    | j         j        }d | j         _        || j                             |          s| j                            dddi           d S | j                                          | j         j        d         |k    r| j                            dddi           | j         j                            |           d S )Nr  rL   r  r   zend-tag-too-early-ignored)rJ   r   r  rW   r   rQ  r   r  r  s      r)   
endTagFormz)getPhases.<locals>.InBodyPhase.endTagFormO  s    9(D$(DI!|49#;#;D#A#A|&&';(.'79 9 9 9 9 	002229)"-55K**+F,2F+;= = =	&--d33333r*   c                 @   |d         dk    rd}nd }| j                             |d         |          s%| j                            dd|d         i           d S | j                             |d                    | j         j        d         j        |d         k    r#| j                            dd|d         i           | j         j                                        }|j        |d         k    r1| j         j                                        }|j        |d         k    /d S d S )	NrL   r  listr  r  excluder   ri  )rJ   r  rW   r   rQ  r   rL   r  )rN   r   r  r   s       r)   endTagListItemz-getPhases.<locals>.InBodyPhase.endTagListItem\  s&   V}$$ 9++E&M7+KK 
8&&';feFm=TUUUUU	00v0GGG9)"-2eFmCCK**+v/1 1 1 y-1133i5=00915577D i5=000000r*   c                 
   t           D ]7}| j                            |          r| j                                          n8| j        j        d         j        |d         k    r#| j                            dd|d         i           t           D ]w}| j                            |          r[| j        j                                        }|j        t           vr,| j        j                                        }|j        t           v, d S xd S )Nr   rL   ri  )	r   rJ   r  rQ  r   rL   rW   r   r  )rN   r   items      r)   endTagHeadingz,getPhases.<locals>.InBodyPhase.endTagHeadingm  s   '  9++D11 I44666E y%b).%-??&&':VU6]<STTT'  9++D11 915577D)?::#y599;; )?::EE	 r*   c                 	   d}|dk     r|dz  }| j                             |d                   }|r-|| j         j        v r6| j                             |j                  s|                     |           dS || j         j        vrD| j                            dd|d         i           | j         j        	                    |           dS | j                             |j                  s%| j                            dd|d         i           dS || j         j        d         k    r#| j                            d	d|d         i           | j         j        
                    |          }d}| j         j        |d         D ]}|j        t          v r|} n|i| j         j                                        }||k    r$| j         j                                        }||k    $| j         j        	                    |           dS | j         j        |dz
           }| j         j        
                    |          }|x}	}
d}| j         j        
                    |
          }|d
k     r&|dz  }|dz  }| j         j        |         }
|
| j         j        vr | j         j        	                    |
           Q|
|k    rn|	|k    r"| j         j        
                    |
          dz   }|
                                }|| j         j        | j         j        
                    |
          <   || j         j        | j         j        
                    |
          <   |}
|	j        r|	j                            |	           |
                    |	           |
}	|d
k     &|	j        r|	j                            |	           |j        t%          d          v r3| j                                         \  }}|                    |	|           n|                    |	           |                                }|                    |           |                    |           | j         j        	                    |           | j         j                            ||           | j         j        	                    |           | j         j                            | j         j        
                    |          dz   |           |dk     dS dS )z)The much-feared adoption agency algorithmr      r   rL   Nzadoption-agency-1.2zadoption-agency-4.4r   zadoption-agency-1.3r  r   r   r   r   r   )rJ   r  r   r  rL   r]  rW   r   r  r  indexr  r   r  	cloneNoder  r  appendChildr   getTableMisnestedNodePositioninsertBeforereparentChildreninsert)rN   r   outerLoopCounterformattingElementafeIndexfurthestBlockr   commonAncestorbookmarklastNoder   innerLoopCounterry  cloner  r}  s                   r)   r  z/getPhases.<locals>.InBodyPhase.endTagFormatting|  s9     ! #Q&& !A%  %)I$O$O&M%# %#!) !_&$)*@@@112C2HII A
 $$U+++F 'di.DDDK**+@65QW=BYZZZI6==>OPPPF 112C2HII _K**+@65QW=BYZZZF )DI,B2,FFF../DvuU[}F]^^^  91778IJJ $#y5hii@  G(O;;(/ < !("i488::G!%666"&)"8"<"<">"> "%666I6==gFFFF "&!71!E  9=CCDUVV #0/4#$ 	.44T::&**$)$QJE91%8D49#EEE	.55d;;; 000=00#'9#E#K#KD#Q#QTU#U NN,,E KP I6	:@@FFH ?D I*	.44T::< D   > 33H===$$X...#H9 '**D ? :O//999!&)4^*_*___+/9+R+R+T+T(FL'',????"..x888 *3355 ..u555 ))%000 	299:KLLL	299(EJJJ 	&--.?@@@	&--I*00??!CUL L Lo #Q&&&&&&r*   c                 2   | j                             |d                   r| j                                          | j         j        d         j        |d         k    r#| j                            dd|d         i           | j                             |d                   ry| j         j                                        }|j        |d         k    r/| j         j                                        }|j        |d         k    /| j                                          d S d S )NrL   r   ri  )	rJ   r  rQ  r   rL   rW   r   r  clearActiveFormattingElements)rN   r   r   s      r)   endTagAppletMarqueeObjectz8getPhases.<locals>.InBodyPhase.endTagAppletMarqueeObject  s    y''f66 3	00222y%b).%-??&&':VU6]<STTTy''f66 :)04466leFm33"i488::G leFm33	7799999	: :r*   c                     | j                             dddd           | j                                         | j                            t          dd                     | j        j                                         d S )Nzunexpected-end-tag-treated-asrF  z
br elementr1  r   )rW   r   rJ   r  r   r<  r   r  r   s     r)   r  z'getPhases.<locals>.InBodyPhase.endTagBr+  s~    K""#B48\#R#RT T TI99;;;I##OD*$E$EFFFI"&&(((((r*   c                    | j         j        d d d         D ]}|j        |d         k    r| j                             |d                    | j         j        d         j        |d         k    r#| j                            dd|d         i           | j         j                                        |k    r#	 | j         j                                        |k    # d S |j        t          v r&| j                            dd|d         i            d S d S )Nr   rL   rp  r  )	rJ   r   rL   rQ  rW   r   r  r  r   r  s      r)   r]  z*getPhases.<locals>.InBodyPhase.endTagOther2  s   	.ttt4  9f--I44U6]4KKKy-b16%-GG../CfeTZmE\]]])04466$>> )04466$>>EE~88../CfeTZmE\]]] 9 r*   r   )	r  r  r  r  r  r:   r  r  r  r   r   )r  articleaside
blockquotecenterdetailsdirr+   dlfieldset
figcaptionfigurefooterheaderhgroupmainmenunavolr(   sectionsummaryul)r  r  r  )r  r  r  rb   r  )bbigcodeemfontissmallstrikestrongttur  r  )appletmarqueeobjectxmpr   )arearF  embedr0  keygenwbr)paramsourcetrackr=  r9  r/  r7  r  iframer  )noembedr  r   )r^  r_  )rJ  r]  mathr   )r   colr   framer   r   r   r   r   r   r   )r  r  r  r  r  r  r  dialogr  r+   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r(   )r  r  r  )r  r  r  r  r  r  r  r  r  r  r  r  r  r  rF  )?rA   rB   rC   r  rU   r  r  r   r  r   r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r   r"  r$  r&  r)  r+  r-  r5  r@  rB  rE  r  rD  rK  rN  rR  rT  rV  rX  rY  r  re  rg  rk  rm  rr  ru  r  r  r  r]  r   r^  r  r   r  r_  r  __classcell__)r   r  r  s   @r)   r  r    s        0		L 	L 	L 	L 	L 	L
	: 	: 	:	? 	? 	?"	 	 		+ 	+ 	+
	/ 
	/ 
	/	0 	0 	0	G 	G 	G		K 		K 		K	E 	E 	E	+ 	+ 	+
	Q 	Q 	Q	C 	C 	C	+ 	+ 	+,	O 	O 	O	+ 	+ 	+	- 	- 	-	- 	- 	-	- 	- 	-		/ 		/ 		/	+ 	+ 	+	= 	= 	=	> 	> 	>	+ 	+ 	+	4 	4 	4	4 	4 	4
	+ 	+ 	+	T 	T 	T	8 	8 	8>	+ 	+ 	+	( 	( 	(	* 	* 	*	= 	= 	=	2 	2 	2	C 	C 	C	+ 	+ 	+
	8 
	8 
	8
	8 
	8 
	8	\ 	\ 	\	+ 	+ 	+	8 	8 	8	@ 	@ 	@$	 	 		8 	8 	8	4 	4 	4	8 	8 	8"	 	 	a	L a	L a	LF
	: 
	: 
	:	) 	) 	)	 	 	 2&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                       e Zd Z e            Zd Zd Zd Zd Zd Z	 e
j        g           Zee_         e
j        defg          Ze	e_        dS )getPhases.<locals>.TextPhasec                 F    | j                             |d                    d S r
  r  r   s     r)   r   z.getPhases.<locals>.TextPhase.processCharacters  r  r*   c                     | j                             dd| j        j        d         j        i           | j        j                                         | j         j        | j         _        dS )Nz&expected-named-closing-tag-but-got-eofrL   r   T)rW   r   rJ   r   rL   r  r   rm   rs   s    r)   r   z'getPhases.<locals>.TextPhase.processEOF  sb    K""#K$*DI,B2,F,K#LN N NI"&&((( $ 9DK4r*   c                 (    J d|d         z              )NFz4Tried to process start tag %s in RCDATA/RAWTEXT moderL   rI   r   s     r)   rY  z*getPhases.<locals>.TextPhase.startTagOther  s    `PSXY_S`````r*   c                     | j         j                                        }|j        dk    sJ | j        j        | j        _        d S )Nr  )rJ   r   r  rL   rW   r   rm   r  s      r)   endTagScriptz)getPhases.<locals>.TextPhase.endTagScript  s@    9)--//D9(((( $ 9DKr*   c                 n    | j         j                                         | j        j        | j        _        d S r3   )rJ   r   r  rW   r   rm   r   s     r)   r]  z(getPhases.<locals>.TextPhase.endTagOther  s.    I"&&((( $ 9DKr*   r  N)rA   rB   rC   r6  r  r   r   rY  r  r]  r   r^  r  r_  r  rI   r*   r)   	TextPhaser    s        EGG		0 	0 	0	 	 		a 	a 	a	: 	: 	:	: 	: 	: 2&1"55"///|$1& ' ' +r*   r  c                   >   e Zd Z e            Zd Zd Zd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Z ej        d j        fde
fdefdefdefdefdefdefdefdefg
          Zee_         ej        defdefg          Zee_        dS )getPhases.<locals>.InTablePhasec                     | j         j        d         j        dvr9| j         j                                         | j         j        d         j        dv7d S d S )Nr   )r   r   )rJ   r   rL   r  rs   s    r)   clearStackToTableContextz8getPhases.<locals>.InTablePhase.clearStackToTableContext  s[    )(,19JJJ 	&**,,, )(,19JJJJJJJr*   c                     | j         j        d         j        dk    r| j                            d           d S | j        j        sJ d S )Nr   r   zeof-in-tablerJ   r   rL   rW   r   r_   rs   s    r)   r   z*getPhases.<locals>.InTablePhase.processEOF  sM    y%b).&88&&~66666{,,,,,,r*   c                     | j         j        }| j         j        d         | j         _        || j         j        _        | j         j                            |           d S NinTableText)rW   rm   rS   r   r   rN   r   r   s      r)   r   z6getPhases.<locals>.InTablePhase.processSpaceCharacters  sL     K-M $ 2= ADK.;DK+K44U;;;;;r*   c                     | j         j        }| j         j        d         | j         _        || j         j        _        | j         j                            |           d S r  )rW   rm   rS   r   r   r  s      r)   r   z1getPhases.<locals>.InTablePhase.processCharacters  sL     K-M $ 2= ADK.;DK+K//66666r*   c                     d| j         _        | j        j        d                             |           d| j         _        d S )NTr   F)rJ   insertFromTablerW   rS   r   r   s     r)   r  z*getPhases.<locals>.InTablePhase.insertText  s<     )-DI%Kx(::5AAA(-DI%%%r*   c                     |                                   | j        j                            t                     | j                            |           | j        j        d         | j        _        d S )Nr   )	r  rJ   r  r   r   r   rW   rS   rm   r   s     r)   startTagCaptionz/getPhases.<locals>.InTablePhase.startTagCaption  s]    ))+++I.55f===I##E*** $ 2; ?DKr*   c                     |                                   | j                            |           | j        j        d         | j        _        d S )Nr   r  rJ   r   rW   rS   rm   r   s     r)   startTagColgroupz0getPhases.<locals>.InTablePhase.startTagColgroup  sD    ))+++I##E*** $ 2? CDKr*   c                 L    |                      t          dd                     |S )Nr   r   )r  r<  r   s     r)   startTagColz+getPhases.<locals>.InTablePhase.startTagCol  s%    !!/*j"I"IJJJLr*   c                     |                                   | j                            |           | j        j        d         | j        _        d S Nr   r  r   s     r)   startTagRowGroupz0getPhases.<locals>.InTablePhase.startTagRowGroup  sD    ))+++I##E*** $ 2= ADKr*   c                 L    |                      t          dd                     |S )Nr   r   )r  r<  r   s     r)   startTagImplyTbodyz2getPhases.<locals>.InTablePhase.startTagImplyTbody  s%    !!/':"F"FGGGLr*   c                     | j                             dddd           | j         j                            t	          d                     | j         j        s|S d S )Nr  r   r  )rW   r   rm   r   r<  r_   r   s     r)   r$  z-getPhases.<locals>.InTablePhase.startTagTable  sj    K""#I18W#M#MO O OK++OG,D,DEEE;(  r*   c                 L    | j         j        d                             |          S r  rS  r   s     r)   startTagStyleScriptz3getPhases.<locals>.InTablePhase.startTagStyleScript  rT  r*   c                 @   d|d         v r~|d         d                              t                    dk    rT| j                            d           | j                            |           | j        j                                         d S |                     |           d S )Nr8   r   r(  z unexpected-hidden-input-in-table)	r~   r   rW   r   rJ   r   r   r  rY  r   s     r)   r)  z-getPhases.<locals>.InTablePhase.startTagInput  s    %-''&M&)334DEEQQ&&'IJJJ	''...	&**,,,,,""5)))))r*   c                     | j                             d           | j        j        V| j                            |           | j        j        d         | j        _        | j        j                                         d S d S )Nzunexpected-form-in-tabler   )rW   r   rJ   r   r   r   r  r   s     r)   r  z,getPhases.<locals>.InTablePhase.startTagForm  ss    K""#=>>>y$,	''...(,	(>r(B	%	&**,,,,, -,r*   c                     | j                             dd|d         i           d| j        _        | j         j        d                             |           d| j        _        d S )Nz)unexpected-start-tag-implies-table-voodoorL   Tr   F)rW   r   rJ   r  rS   r   r   s     r)   rY  z-getPhases.<locals>.InTablePhase.startTagOther  s`    K""#NQWY^_eYfPghhh(,DI%Kx(88???(-DI%%%r*   c                 t   | j                             dd          r| j                                          | j         j        d         j        dk    r3| j                            dd| j         j        d         j        d           | j         j        d         j        dk    r9| j         j                                         | j         j        d         j        dk    9| j         j                                         | j                                         d S | j        j	        sJ | j                                         d S )Nr   r  r   zend-tag-too-early-namedra  )
rJ   r  rQ  r   rL   rW   r   r  ro   r_   r   s     r)   endTagTablez+getPhases.<locals>.InTablePhase.endTagTable  s4   y'''AA )	002229)"-2g==K**+D7><@I<RSU<V<[,] ,]^ ^ ^ i,R05@@I*..000 i,R05@@	&**,,,..00000 {,,,,&&(((((r*   c                 L    | j                             dd|d         i           d S r  r  r   s     r)   endTagIgnorez,getPhases.<locals>.InTablePhase.endTagIgnore  r  r*   c                     | j                             dd|d         i           d| j        _        | j         j        d                             |           d| j        _        d S )Nz'unexpected-end-tag-implies-table-voodoorL   Tr   F)rW   r   rJ   r  rS   r   r   s     r)   r]  z+getPhases.<locals>.InTablePhase.endTagOther  s_    K""#LvW\]cWdNefff(,DI%Kx(66u===(-DI%%%r*   r   r   r   r  r   r   r   )r   r   r   r   )r  r  r=  r  )r   r   r  r   r   r   r   r   r   r   r   N)rA   rB   rC   r6  r  r  r   r   r   r  r  r  r  r  r  r$  r  r)  r  rY  r  r  r]  r   r^  r  r  r_  r  r  s   r)   InTablePhaser    s       EGG		- 	- 	-	- 	- 	-	< 	< 	<	7 	7 	7	. 	. 	.	@ 	@ 	@	D 	D 	D
	 	 		B 	B 	B
	 	 		 	 		G 	G 	G	* 	* 	*	- 	- 	-	. 	. 	.	) 	) 	) 	R 	R 	R	. 	. 	. 2&1U'(()*K (*:;!34m$ "56m$\"3
   #0//k",-9;1
  
 !,r*   r  c                   P     e Zd ZdZ fdZd Zd Zd Zd Zd Z	d Z
d	 Z xZS )
#getPhases.<locals>.InTableTextPhase)r   characterTokensc                 Z     t          |           j        |i | d | _        g | _        d S r3   )r  rU   r   r  )rN   r   r&   InTableTextPhaser   s      r)   rU   z,getPhases.<locals>.InTableTextPhase.__init__6  s<    2E"D))2DCFCCC!%D#%D   r*   c                 2   d                     d | j        D                       }t          d |D                       r6t          d         |d}| j        j        d                             |           n|r| j                            |           g | _        d S )Nr,  c                     g | ]
}|d          S )r   rI   rK   rt  s     r)   r  zGgetPhases.<locals>.InTableTextPhase.flushCharacters.<locals>.<listcomp><  s    JJJTDLJJJr*   c                      g | ]}|t           vS rI   r  r  s     r)   r  zGgetPhases.<locals>.InTableTextPhase.flushCharacters.<locals>.<listcomp>=  s    AAADD/AAAr*   r   r<  r   )joinr  r  r   rW   rS   r  rJ   )rN   r   r   s      r)   flushCharactersz3getPhases.<locals>.InTableTextPhase.flushCharacters;  s    77JJT5IJJJKKDAADAAABB +!+L!94HH"9-88???? +	$$T***#%D   r*   c                 P    |                                   | j        | j        _        |S r3   r  r   rW   rm   r   s     r)   r   z2getPhases.<locals>.InTableTextPhase.processCommentD  &      """ $ 2DKLr*   c                 P    |                                   | j        | j        _        dS r>  r  rs   s    r)   r   z.getPhases.<locals>.InTableTextPhase.processEOFI  s&      """ $ 2DK4r*   c                 V    |d         dk    rd S | j                             |           d S Nr   r  r  r   r   s     r)   r   z5getPhases.<locals>.InTableTextPhase.processCharactersN  s3    V}(( ''.....r*   c                 :    | j                             |           d S r3   r  r   s     r)   r   z:getPhases.<locals>.InTableTextPhase.processSpaceCharactersS  s     ''.....r*   c                 P    |                                   | j        | j        _        |S r3   r  r   s     r)   r   z3getPhases.<locals>.InTableTextPhase.processStartTagX  r  r*   c                 P    |                                   | j        | j        _        |S r3   r  r   s     r)   r   z1getPhases.<locals>.InTableTextPhase.processEndTag]  r  r*   )rA   rB   rC   r  rU   r  r   r   r   r   r   r   r  )r   r  s   @r)   r  r  3  s        8		& 	& 	& 	& 	& 	&
	& 	& 	&	 	 	
	 	 	
	/ 	/ 	/
	/ 	/ 	/
	 	 	
	 	 	 	 	 	 	r*   r  c                       e Zd Z e            Zd Zd Zd Zd Zd Z	d Z
d Zd Zd	 Z ej        d
 j        fdefg          Ze	e_         ej        de
fdefdefg          Zee_        dS )!getPhases.<locals>.InCaptionPhasec                 <    | j                             dd           S )Nr   r   r  rJ   r  rs   s    r)   ignoreEndTagCaptionz5getPhases.<locals>.InCaptionPhase.ignoreEndTagCaptionf  s     y//	7/KKKKr*   c                 N    | j         j        d                                          d S rR  rW   rS   r   rs   s    r)   r   z,getPhases.<locals>.InCaptionPhase.processEOFi  $    Kx(3355555r*   c                 L    | j         j        d                             |          S rR  rW   rS   r   r   s     r)   r   z3getPhases.<locals>.InCaptionPhase.processCharactersl       ;%h/AA%HHHr*   c                     | j                                          |                                 }| j         j                            t          d                     |s|S d S Nr   rW   r   r	  rm   r   r<  rN   r   ignoreEndTags      r)   startTagTableElementz6getPhases.<locals>.InCaptionPhase.startTagTableElemento  s_    K""$$$3355LK++OI,F,FGGG  r*   c                 L    | j         j        d                             |          S rR  rS  r   s     r)   rY  z/getPhases.<locals>.InCaptionPhase.startTagOtherw  rT  r*   c                    |                                  s| j                                         | j        j        d         j        dk    r3| j                            dd| j        j        d         j        d           | j        j        d         j        dk    r9| j        j                                         | j        j        d         j        dk    9| j        j                                         | j                                         | j        j	        d         | j        _
        d S | j        j        sJ | j                                         d S )Nr   r   r`  ra  r   )r	  rJ   rQ  r   rL   rW   r   r  r  rS   rm   r_   r   s     r)   endTagCaptionz/getPhases.<locals>.InCaptionPhase.endTagCaptionz  s?   ++-- )	002229)"-2i??K**+Q7@<@I<RSU<V<[,] ,]^ ^ ^ i,R05BBI*..000 i,R05BB	&**,,,	77999$(K$6y$A!!! {,,,,&&(((((r*   c                     | j                                          |                                 }| j         j                            t          d                     |s|S d S r  r  r  s      r)   r  z-getPhases.<locals>.InCaptionPhase.endTagTable  s_    K""$$$3355LK++OI,F,FGGG  r*   c                 L    | j                             dd|d         i           d S r  r  r   s     r)   r  z.getPhases.<locals>.InCaptionPhase.endTagIgnore  r  r*   c                 L    | j         j        d                             |          S rR  rW   rS   r   r   s     r)   r]  z-getPhases.<locals>.InCaptionPhase.endTagOther       ;%h/==eDDDr*   r   	r   r  r   r   r   r   r   r   r   r   r   )
r   r  r   r   r   r   r   r   r   r   N)rA   rB   rC   r6  r  r	  r   r   r  rY  r  r  r  r]  r   r^  r  r  r_  r  r  s   r)   InCaptionPhaser  b  s/       EGG		L 	L 	L	6 	6 	6	I 	I 	I	 	 		G 	G 	G	) 	) 	)$	 	 		R 	R 	R	E 	E 	E 2&1U'(243
  
 #0//&k"*,1
   !,r*   r  c                       e Zd Z e            Zd Zd Zd Zd Zd Z	d Z
d Zd Z ej        d	 j        fd
efg          Ze	e_         ej        de
fd
efg          Zee_        dS )%getPhases.<locals>.InColumnGroupPhasec                 8    | j         j        d         j        dk    S )Nr   r   )rJ   r   rL   rs   s    r)   ignoreEndTagColgroupz:getPhases.<locals>.InColumnGroupPhase.ignoreEndTagColgroup  s    9)"-2f<<r*   c                     | j         j        d         j        dk    r| j        j        sJ d S |                                 }|                     t          d                     |sdS d S )Nr   r   r   T)rJ   r   rL   rW   r_   r#  endTagColgroupr<  )rN   r  s     r)   r   z0getPhases.<locals>.InColumnGroupPhase.processEOF  st    y%b).&88{,,,,#88::##OJ$?$?@@@#  4   r*   c                 z    |                                  }|                     t          d                     |s|S d S Nr   r#  r%  r<  r  s      r)   r   z7getPhases.<locals>.InColumnGroupPhase.processCharacters  F    4466L
 ; ;<<<  r*   c                     | j                             |           | j         j                                         d|d<   d S rk  rl  r   s     r)   r  z1getPhases.<locals>.InColumnGroupPhase.startTagCol  rn  r*   c                 z    |                                  }|                     t          d                     |s|S d S r'  r(  r  s      r)   rY  z3getPhases.<locals>.InColumnGroupPhase.startTagOther  r)  r*   c                     |                                  r)| j        j        sJ | j                                         d S | j        j                                         | j        j        d         | j        _        d S Nr   )	r#  rW   r_   r   rJ   r   r  rS   rm   r   s     r)   r%  z4getPhases.<locals>.InColumnGroupPhase.endTagColgroup  ss    ((** B{,,,,&&(((((	&**,,,$(K$6y$A!!!r*   c                 @    | j                             dddi           d S )Nz
no-end-tagrL   r  r  r   s     r)   	endTagColz/getPhases.<locals>.InColumnGroupPhase.endTagCol  s$    K""<&%AAAAAr*   c                 z    |                                  }|                     t          d                     |s|S d S r'  r(  r  s      r)   r]  z1getPhases.<locals>.InColumnGroupPhase.endTagOther  r)  r*   r   r  r   N)rA   rB   rC   r6  r  r#  r   r   r  rY  r%  r/  r]  r   r^  r  r  r_  r  r  s   r)   InColumnGroupPhaser!    s       EGG		= 	= 	=	  	  	 	 	 		4 	4 	4
	 	 		B 	B 	B	B 	B 	B	 	 	 2&1U'(K 3
   #0//(I1
   !,r*   r1  c                       e Zd Z e            Zd Zd Zd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Z ej        d j        fde	fde
fdefg          Zee_         ej        defdefdefg          Zee_        dS )#getPhases.<locals>.InTableBodyPhasec                     | j         j        d         j        dvr7| j         j                                         | j         j        d         j        dv7| j         j        d         j        dk    r| j        j        sJ d S d S )Nr   )r   r   r   r   r   )rJ   r   rL   r  rW   r_   rs   s    r)   clearStackToTableBodyContextz@getPhases.<locals>.InTableBodyPhase.clearStackToTableBodyContext  s    )(,1 :K K K 	&**,,,	 )(,1 :K K K
 y%b).&88{,,,, 98,,r*   c                 N    | j         j        d                                          d S r-  r  rs   s    r)   r   z.getPhases.<locals>.InTableBodyPhase.processEOF  $    Ky)4466666r*   c                 L    | j         j        d                             |          S r-  r  r   s     r)   r   z:getPhases.<locals>.InTableBodyPhase.processSpaceCharacters       ;%i0GGNNNr*   c                 L    | j         j        d                             |          S r-  r  r   s     r)   r   z5getPhases.<locals>.InTableBodyPhase.processCharacters       ;%i0BB5IIIr*   c                     |                                   | j                            |           | j        j        d         | j        _        d S )Nr   )r5  rJ   r   rW   rS   rm   r   s     r)   
startTagTrz.getPhases.<locals>.InTableBodyPhase.startTagTr   sD    --///I##E*** $ 27 ;DKr*   c                     | j                             dd|d         i           |                     t          dd                     |S )Nzunexpected-cell-in-table-bodyrL   r   r   )rW   r   r=  r<  r   s     r)   startTagTableCellz5getPhases.<locals>.InTableBodyPhase.startTagTableCell  sL    K""#B$*E&M#:< < <OOOD*==>>>Lr*   c                    | j                             dd          s8| j                             dd          s| j                             dd          rM|                                  |                     t	          | j         j        d         j                             |S | j        j        sJ | j        	                                 d S Nr   r   r  r   r   r   
rJ   r  r5  endTagTableRowGroupr<  r   rL   rW   r_   r   r   s     r)   startTagTableOtherz6getPhases.<locals>.InTableBodyPhase.startTagTableOther  s    	(('(BB 
)	(('(BB
)I,,Wg,FF
) 11333((#DI$:2$>$CDDF F F {,,,,&&(((((r*   c                 L    | j         j        d                             |          S r-  rS  r   s     r)   rY  z1getPhases.<locals>.InTableBodyPhase.startTagOther       ;%i0@@GGGr*   c                 0   | j                             |d         d          rP|                                  | j         j                                         | j        j        d         | j        _        d S | j                            dd|d         i           d S )NrL   r   r  r    unexpected-end-tag-in-table-body)	rJ   r  r5  r   r  rW   rS   rm   r   r   s     r)   rC  z7getPhases.<locals>.InTableBodyPhase.endTagTableRowGroup  s    y''fw'GG @11333	&**,,,$(K$6y$A!!!&&'I(.f'>@ @ @ @ @r*   c                    | j                             dd          s8| j                             dd          s| j                             dd          rM|                                  |                     t	          | j         j        d         j                             |S | j        j        sJ | j        	                                 d S rA  rB  r   s     r)   r  z/getPhases.<locals>.InTableBodyPhase.endTagTable%  s    	(('(BB 
)	(('(BB
)I,,Wg,FF
) 11333((#DI$:2$>$CDDF F F {,,,,&&(((((r*   c                 L    | j                             dd|d         i           d S )NrH  rL   r  r   s     r)   r  z0getPhases.<locals>.InTableBodyPhase.endTagIgnore2  5    K""#E$*E&M#:< < < < <r*   c                 L    | j         j        d                             |          S r-  r  r   s     r)   r]  z/getPhases.<locals>.InTableBodyPhase.endTagOther6       ;%i0>>uEEEr*   r   r   r   r   )r   r  r   r   r   r   r  r   )r   r   r  r   r   r   r   r   N)rA   rB   rC   r6  r  r5  r   r   r   r=  r?  rD  rY  rC  r  r  r]  r   r^  r  r  r_  r  r  s   r)   InTableBodyPhaser3    sl       EGG		- 	- 	-	7 	7 	7	O 	O 	O	J 	J 	J	< 	< 	<
	 	 		) 	) 	)	H 	H 	H	@ 	@ 	@	) 	) 	)	< 	< 	<	F 	F 	F 2&1U'(:,-F!	3
   #0//(*=>k"!#1
   !,r*   rO  c                      e Zd Z e            Zd Zd Zd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Z ej        d j        fde
fdefg          Zee_         ej        defdefdefdefg          Zee_        dS )getPhases.<locals>.InRowPhasec                    | j         j        d         j        dvrk| j                            dd| j         j        d         j        i           | j         j                                         | j         j        d         j        dvid S d S )Nr   )r   r   z'unexpected-implied-end-tag-in-table-rowrL   )rJ   r   rL   rW   r   r  rs   s    r)   clearStackToTableRowContextz9getPhases.<locals>.InRowPhase.clearStackToTableRowContextO  s    )(,1GG&&'P(.	0Fr0J0O'PR R R	&**,,, )(,1GGGGGGr*   c                 <    | j                             dd           S )Nr   r   r  r  rs   s    r)   ignoreEndTagTrz,getPhases.<locals>.InRowPhase.ignoreEndTagTrU  s     y//g/FFFFr*   c                 N    | j         j        d                                          d S r-  r  rs   s    r)   r   z(getPhases.<locals>.InRowPhase.processEOFY  r7  r*   c                 L    | j         j        d                             |          S r-  r  r   s     r)   r   z4getPhases.<locals>.InRowPhase.processSpaceCharacters\  r9  r*   c                 L    | j         j        d                             |          S r-  r  r   s     r)   r   z/getPhases.<locals>.InRowPhase.processCharacters_  r;  r*   c                     |                                   | j                            |           | j        j        d         | j        _        | j        j                            t                     d S )Nr   )	rS  rJ   r   rW   rS   rm   r  r   r   r   s     r)   r?  z/getPhases.<locals>.InRowPhase.startTagTableCellb  s]    ,,...I##E*** $ 28 <DKI.55f=====r*   c                 z    |                                  }|                     t          d                     |s|S d S Nr   rU  endTagTrr<  r  s      r)   rD  z0getPhases.<locals>.InRowPhase.startTagTableOtherh  sD    ..00LMM/$//000  r*   c                 L    | j         j        d                             |          S r-  rS  r   s     r)   rY  z+getPhases.<locals>.InRowPhase.startTagOthero  rF  r*   c                    |                                  sP|                                  | j        j                                         | j        j        d         | j        _        d S | j        j        sJ | j        	                                 d S r  )
rU  rS  rJ   r   r  rW   rS   rm   r_   r   r   s     r)   r]  z&getPhases.<locals>.InRowPhase.endTagTrr  s    &&(( )00222	&**,,,$(K$6}$E!!! {,,,,&&(((((r*   c                 z    |                                  }|                     t          d                     |s|S d S r[  r\  r  s      r)   r  z)getPhases.<locals>.InRowPhase.endTagTable|  sF    ..00LMM/$//000    r*   c                     | j                             |d         d          r$|                     t          d                     |S | j                                         d S )NrL   r   r  r   )rJ   r  r]  r<  rW   r   r   s     r)   rC  z1getPhases.<locals>.InRowPhase.endTagTableRowGroup  s\    y''fw'GG )od33444&&(((((r*   c                 L    | j                             dd|d         i           d S )Nzunexpected-end-tag-in-table-rowrL   r  r   s     r)   r  z*getPhases.<locals>.InRowPhase.endTagIgnore  s5    K""#D$*E&M#:< < < < <r*   c                 L    | j         j        d                             |          S r-  r  r   s     r)   r]  z)getPhases.<locals>.InRowPhase.endTagOther  rM  r*   r   rN  )r   r  r   r   r   r   r   r   r   r  )r   r   r  r   r   r   r   N)rA   rB   rC   r6  r  rS  rU  r   r   r   r?  rD  rY  r]  r  rC  r  r]  r   r^  r  r  r_  r  r  s   r)   
InRowPhaserQ  J  s{       EGG		- 	- 	-	G 	G 	G	7 	7 	7	O 	O 	O	J 	J 	J	> 	> 	>	 	 		H 	H 	H	) 	) 	)	 	 		) 	) 	)	< 	< 	<	F 	F 	F 2&1U'(,-')3
   #0//8k"(*=>G	1
   !,r*   rd  c                       e Zd Z e            Zd Zd Zd Zd Zd Z	d Z
d Zd Zd	 Z ej        d
 j        fdefg          Ze	e_         ej        de
fdefdefg          Zee_        dS )getPhases.<locals>.InCellPhasec                    | j                             dd          r$|                     t          d                     d S | j                             dd          r$|                     t          d                     d S d S Nr   r   r  r   )rJ   r  endTagTableCellr<  rs   s    r)   	closeCellz(getPhases.<locals>.InCellPhase.closeCell  s    y''g'>> <$$_T%:%:;;;;;))$)@@ <$$_T%:%:;;;;;< <r*   c                 N    | j         j        d                                          d S rR  r  rs   s    r)   r   z)getPhases.<locals>.InCellPhase.processEOF  r  r*   c                 L    | j         j        d                             |          S rR  r  r   s     r)   r   z0getPhases.<locals>.InCellPhase.processCharacters  r  r*   c                     | j                             dd          s| j                             dd          r|                                  |S | j        j        sJ | j                                         d S rh  )rJ   r  rj  rW   r_   r   r   s     r)   rD  z1getPhases.<locals>.InCellPhase.startTagTableOther  s~    	((w(?? )I,,T7,CC)    {,,,,&&(((((r*   c                 L    | j         j        d                             |          S rR  rS  r   s     r)   rY  z,getPhases.<locals>.InCellPhase.startTagOther  rT  r*   c                 h   | j                             |d         d          r| j                             |d                    | j         j        d         j        |d         k    rV| j                            dd|d         i           	 | j         j                                        }|j        |d         k    rn1n| j         j                                         | j                                          | j        j	        d         | j        _
        d S | j                            dd|d         i           d S )	NrL   r   r  r   zunexpected-cell-end-tagTr   r  )rJ   r  rQ  r   rL   rW   r   r  r  rS   rm   r  s      r)   ri  z.getPhases.<locals>.InCellPhase.endTagTableCell  s,   y''fw'GG V	00v???9)"-2eFmCCK**+D,2E&M+BD D D"#y599;;9f55!" "I*..000	77999$(K$6w$?!!!&&';feFm=TUUUUUr*   c                 L    | j                             dd|d         i           d S r  r  r   s     r)   r  z+getPhases.<locals>.InCellPhase.endTagIgnore  r  r*   c                     | j                             |d         d          r|                                  |S | j                                         d S )NrL   r   r  )rJ   r  rj  rW   r   r   s     r)   endTagImplyz*getPhases.<locals>.InCellPhase.endTagImply  sT    y''fw'GG )    &&(((((r*   c                 L    | j         j        d                             |          S rR  r  r   s     r)   r]  z*getPhases.<locals>.InCellPhase.endTagOther  r  r*   r   r  rN  )r   r   r  r   r   rx  N)rA   rB   rC   r6  r  rj  r   r   rD  rY  ri  r  rr  r]  r   r^  r  r  r_  r  r  s   r)   InCellPhaserf    s*       EGG		< 	< 	<	6 	6 	6	I 	I 	I	) 	) 	)	G 	G 	G	V 	V 	V"	R 	R 	R	) 	) 	)	E 	E 	E 2&1U'(023
  
 #0//?+;\J7E1
  
 !,r*   rt  c            	          e Zd Z e            Zd Zd Zd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Z ej        d j        fdefdefde	fde
fdefg          Zee_         ej        defdefdefg          Zee_        dS ) getPhases.<locals>.InSelectPhasec                     | j         j        d         j        dk    r| j                            d           d S | j        j        sJ d S )Nr   r   zeof-in-selectr  rs   s    r)   r   z+getPhases.<locals>.InSelectPhase.processEOF  sM    y%b).&88&&77777{,,,,,,r*   c                 b    |d         dk    rd S | j                             |d                    d S r   r  r   s     r)   r   z2getPhases.<locals>.InSelectPhase.processCharacters  s6    V}((I  v/////r*   c                     | j         j        d         j        dk    r| j         j                                         | j                             |           d S rI  rJ   r   rL   r  r   r   s     r)   startTagOptionz/getPhases.<locals>.InSelectPhase.startTagOption  sM    y%b).(::	&**,,,I##E*****r*   c                    | j         j        d         j        dk    r| j         j                                         | j         j        d         j        dk    r| j         j                                         | j                             |           d S )Nr   rJ  r]  rz  r   s     r)   startTagOptgroupz1getPhases.<locals>.InSelectPhase.startTagOptgroup	  s|    y%b).(::	&**,,,y%b).*<<	&**,,,I##E*****r*   c                 ~    | j                             d           |                     t          d                     d S )Nzunexpected-select-in-selectr   )rW   r   endTagSelectr<  r   s     r)   rN  z/getPhases.<locals>.InSelectPhase.startTagSelect	  s;    K""#@AAAoh7788888r*   c                     | j                             d           | j                            dd          r$|                     t          d                     |S | j         j        sJ d S )Nzunexpected-input-in-selectr   r  )rW   r   rJ   r  r  r<  r_   r   s     r)   r)  z.getPhases.<locals>.InSelectPhase.startTagInput	  sn    K""#?@@@y''('CC -!!/(";";<<<{,,,,,,r*   c                 L    | j         j        d                             |          S r  rS  r   s     r)   r  z/getPhases.<locals>.InSelectPhase.startTagScript	  rT  r*   c                 L    | j                             dd|d         i           d S )Nzunexpected-start-tag-in-selectrL   r  r   s     r)   rY  z.getPhases.<locals>.InSelectPhase.startTagOther	  5    K""#C$*E&M#:< < < < <r*   c                     | j         j        d         j        dk    r | j         j                                         d S | j                            dddi           d S )Nr   rJ  unexpected-end-tag-in-selectrL   rJ   r   rL   r  rW   r   r   s     r)   endTagOptionz-getPhases.<locals>.InSelectPhase.endTagOption	  sf    y%b).(::	&**,,,,,&&'E(.'9; ; ; ; ;r*   c                 ^   | j         j        d         j        dk    r9| j         j        d         j        dk    r| j         j                                         | j         j        d         j        dk    r | j         j                                         d S | j                            dddi           d S )Nr   rJ  r]  r  rL   r  r   s     r)   endTagOptgroupz/getPhases.<locals>.InSelectPhase.endTagOptgroup%	  s    	&r*/8;;I*2.3zAA	&**,,,y%b).*<<	&**,,,,, &&'E(.
';= = = = =r*   c                 f   | j                             dd          rm| j         j                                        }|j        dk    r)| j         j                                        }|j        dk    )| j                                         d S | j        j        sJ | j                                         d S )Nr   r  )	rJ   r  r   r  rL   rW   ro   r_   r   r  s      r)   r  z-getPhases.<locals>.InSelectPhase.endTagSelect2	  s    y''('CC )y-1133i8++915577D i8++..00000 {,,,,&&(((((r*   c                 L    | j                             dd|d         i           d S )Nr  rL   r  r   s     r)   r]  z,getPhases.<locals>.InSelectPhase.endTagOther=	  5    K""#A$*E&M#:< < < < <r*   r   rJ  r]  r   )r=  r  r  r  N)rA   rB   rC   r6  r  r   r   r{  r}  rN  r)  r  rY  r  r  r  r]  r   r^  r  r  r_  r  r  s   r)   InSelectPhaserv    sg       EGG		- 	- 	-	0 	0 	0
	+ 	+ 	+	+ 	+ 	+	9 	9 	9	- 	- 	-	G 	G 	G	< 	< 	<	; 	; 	;	= 	= 	=		) 		) 		)	< 	< 	< 2&1U'(~&)*~&,m<~&3
   #0//|$(|$1
  
 !,r*   r  c                       e Zd Z e            Zd Zd Zd Zd Zd Z	d Z
 ej        defg          Zee_         ej        de	fg          Ze
e_        dS )	'getPhases.<locals>.InSelectInTablePhasec                 N    | j         j        d                                          d S Nr   r  rs   s    r)   r   z2getPhases.<locals>.InSelectInTablePhase.processEOFU	  s$    Kz*5577777r*   c                 L    | j         j        d                             |          S r  r  r   s     r)   r   z9getPhases.<locals>.InSelectInTablePhase.processCharactersX	  s     ;%j1CCEJJJr*   c                     | j                             dd|d         i           |                     t          d                     |S )Nz5unexpected-table-element-start-tag-in-select-in-tablerL   r   )rW   r   r]  r<  r   s     r)   r$  z5getPhases.<locals>.InSelectInTablePhase.startTagTable[	  sI    K""#Z]cejkqer\sttt_X66777Lr*   c                 L    | j         j        d                             |          S r  rS  r   s     r)   rY  z5getPhases.<locals>.InSelectInTablePhase.startTagOther`	  s     ;%j1AA%HHHr*   c                     | j                             dd|d         i           | j                            |d         d          r$|                     t          d                     |S d S )Nz3unexpected-table-element-end-tag-in-select-in-tablerL   r   r  r   )rW   r   rJ   r  r]  r<  r   s     r)   r  z3getPhases.<locals>.InSelectInTablePhase.endTagTablec	  st    K""#X[achiocpZqrrry''fw'GG   !:!:;;; r*   c                 L    | j         j        d                             |          S r  r  r   s     r)   r]  z3getPhases.<locals>.InSelectInTablePhase.endTagOtheri	  s     ;%j1??FFFr*   )r   r   r   r   r   r   r   r   N)rA   rB   rC   r6  r  r   r   r$  rY  r  r]  r   r^  r  r_  r  rI   r*   r)   InSelectInTablePhaser  R	  s        EGG		8 	8 	8	K 	K 	K	 	 	
	I 	I 	I	 	 		G 	G 	G 2&1N3
   #0//N1
   !,r*   r  c                   Z    e Zd Z e            Z eg d          Zd Z fdZd Z	d Z
dS )(getPhases.<locals>.InForeignContentPhase),r  r  r  r   rF  r  r  r  r+   r  r  r  r  h1h2h3h4h5h6r   r9  r  r0  r  r  r  r:   r  r  r(   r  rP  r  r  spanr  r  subsupr   r  r  r  varc                    i ddddddddd	d
dddddddddddddddddddddd d!d"i d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdG}|dH         |v r||dH                  |dH<   d S d S )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textpathrL   rI   )rN   r   replacementss      r)   adjustSVGTagNamesz: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 #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#4 #4D /?(2G#4 #4 #4LJ V},, ,U6] ;f -,r*   c                     |d         dk    rd|d<   n7| j         j        r+t          d |d         D                       rd| j         _                            | |           d S )Nr   r  u   �c              3   (   K   | ]}|t           vV  d S r3   r  r  s     r)   	<genexpr>zMgetPhases.<locals>.InForeignContentPhase.processCharacters.<locals>.<genexpr>	  s'      LLdd/1LLLLLLr*   F)rW   rr   r  r   )rN   r   r  s     r)   r   z:getPhases.<locals>.InForeignContentPhase.processCharacters	  ss    V}(( (f+( /LLeFmLLLLL/).&##D%00000r*   c                    | j         j        d         }|d         | j        v s:|d         dk    rbt          |d                                                   h dz  r5| j                            dd|d         i           | j         j        d         j        | j         j        k    r| j        	                    | j         j        d                   s| j        
                    | j         j        d                   s| j         j                                         | j         j        d         j        | j         j        k    rT| j        	                    | j         j        d                   s*| j        
                    | j         j        d                   |S |j        t          d         k    r| j                            |           nE|j        t          d         k    r/|                     |           | j                            |           | j                            |           |j        |d	<   | j                             |           |d
         r%| j         j                                         d|d<   d S d S )Nr   rL   r  r   >   facesizecolorz*unexpected-html-element-in-foreign-contentrz   r   r|   r   Tr   )rJ   r   breakoutElementssetkeysrW   r   r|   r   r   r   r  r   r   r  r   r   r   )rN   r   r   s      r)   r   z8getPhases.<locals>.InForeignContentPhase.processStartTag	  sc   )04Kf!666v&((U6]''))**-F-F-FF )&&'S(.f'>@ @ @y-b1;y12 2;==di>TUW>XYY2  ;CCDIDZ[]D^__2 I*..000	 y-b1;y12 2;==di>TUW>XYY2  ;CCDIDZ[]D^__2
  (Jx,@@@K66u==== *j.???**5111K33E:::33E:::%0%:k"	''...' <I*..0007;E3444< <r*   c                 F   t          | j        j                  dz
  }| j        j        d         }|j                            t
                    |d         k    r#| j                            dd|d         i           	 |j                            t
                    |d         k    r| j        j        | j        j	        d         k    r9| j        j        
                                 | j        j        j        | j        _        | j        j                                        |k    r0| j        j        sJ | j        j                                        |k    0d }nN|dz  }| j        j        |         }|j        | j        j        k    r| j        j                            |          }	 |S )Nr   r   rL   r  Tr  )r   rJ   r   rL   r~   r   rW   r   rm   rS   r  r   r  r|   r   r   )rN   r   	nodeIndexr   r   s        r)   r   z6getPhases.<locals>.InForeignContentPhase.processEndTag	  ss   DI233a7I9)"-Dy""#344fEE&&';feFm=TUUU9&&'788E&MII{(DK,>},MMM)99;;;,0K,=,K))04466$>>#y5555 )04466$>> $IQ	y-i8>TY%??? $ 1 ? ? F FIr*   N)rA   rB   rC   r6  r  r   r  r  r   r   r   r  s   r)   InForeignContentPhaser  x	  s        EGG	$9 &G &G &G H H'	< '	< '	<R	1 	1 	1 	1 	1	< 	< 	<6	 	 	 	 	r*   r  c                       e Zd Z e            Zd Zd Zd Zd Zd Z	d Z
d Z ej        defg          Ze	e_         ej        de
fg          Zee_        d	S )
!getPhases.<locals>.AfterBodyPhasec                     d S r3   rI   rs   s    r)   r   z,getPhases.<locals>.AfterBodyPhase.processEOF	      Dr*   c                 \    | j                             || j         j        d                    d S )Nr   r  r   s     r)   r   z0getPhases.<locals>.AfterBodyPhase.processComment	  s,     I##E49+A!+DEEEEEr*   c                 r    | j                             d           | j         j        d         | j         _        |S )Nzunexpected-char-after-bodyr   rW   r   rS   rm   r   s     r)   r   z3getPhases.<locals>.AfterBodyPhase.processCharacters	  s2    K""#?@@@ $ 28 <DKLr*   c                 L    | j         j        d                             |          S rR  rS  r   s     r)   r  z.getPhases.<locals>.AfterBodyPhase.startTagHtml	  rT  r*   c                     | j                             dd|d         i           | j         j        d         | j         _        |S )Nzunexpected-start-tag-after-bodyrL   r   r  r   s     r)   rY  z/getPhases.<locals>.AfterBodyPhase.startTagOther	  sD    K""#D$*E&M#:< < < $ 28 <DKLr*   c                     | j         j        r| j                             d           d S | j         j        d         | j         _        d S )Nz'unexpected-end-tag-after-body-innerhtmlafterAfterBody)rW   r_   r   rS   rm   )rN   rL   s     r)   rg  z,getPhases.<locals>.AfterBodyPhase.endTagHtml
  sH    {$ I&&'PQQQQQ$(K$67G$H!!!r*   c                     | j                             dd|d         i           | j         j        d         | j         _        |S )Nzunexpected-end-tag-after-bodyrL   r   r  r   s     r)   r]  z-getPhases.<locals>.AfterBodyPhase.endTagOther

  sD    K""#B$*E&M#:< < < $ 28 <DKLr*   r   N)rA   rB   rC   r6  r  r   r   r   r  rY  rg  r]  r   r^  r  r_  r  rI   r*   r)   AfterBodyPhaser  	  s        EGG		 	 		F 	F 	F
	 	 	
	G 	G 	G	 	 		I 	I 	I	 	 	 2&1\"3
   #0//&*1E0FGG +r*   r	  c                       e Zd Z e            Zd Zd Zd Zd Zd Z	d Z
d Zd Z ej        d	 j        fd
efdefde	fg          Ze
e_         ej        d
efg          Zee_        dS )"getPhases.<locals>.InFramesetPhasec                     | j         j        d         j        dk    r| j                            d           d S | j        j        sJ d S )Nr   r   zeof-in-framesetr  rs   s    r)   r   z-getPhases.<locals>.InFramesetPhase.processEOF
  sN    y%b).&88&&'899999{,,,,,,r*   c                 :    | j                             d           d S )Nzunexpected-char-in-framesetr  r   s     r)   r   z4getPhases.<locals>.InFramesetPhase.processCharacters"
  s    K""#@AAAAAr*   c                 :    | j                             |           d S r3   )rJ   r   r   s     r)   r  z3getPhases.<locals>.InFramesetPhase.startTagFrameset%
  s    I##E*****r*   c                 v    | j                             |           | j         j                                         d S r3   rl  r   s     r)   startTagFramez0getPhases.<locals>.InFramesetPhase.startTagFrame(
  s5    I##E***I"&&(((((r*   c                 L    | j         j        d                             |          S rR  rS  r   s     r)   startTagNoframesz3getPhases.<locals>.InFramesetPhase.startTagNoframes,
  rT  r*   c                 L    | j                             dd|d         i           d S )Nz unexpected-start-tag-in-framesetrL   r  r   s     r)   rY  z0getPhases.<locals>.InFramesetPhase.startTagOther/
  rK  r*   c                 <   | j         j        d         j        dk    r| j                            d           n| j         j                                         | j        j        s9| j         j        d         j        dk    r | j        j        d         | j        _        d S d S d S )Nr   r   z)unexpected-frameset-in-frameset-innerhtmlr   afterFrameset)	rJ   r   rL   rW   r   r  r_   rS   rm   r   s     r)   endTagFramesetz1getPhases.<locals>.InFramesetPhase.endTagFrameset3
  s    y%b).&88&&'RSSSS	&**,,,K) HI*2.3zAA %)K$6$G!!!	H HAAr*   c                 L    | j                             dd|d         i           d S )Nzunexpected-end-tag-in-framesetrL   r  r   s     r)   r]  z.getPhases.<locals>.InFramesetPhase.endTagOther?
  r  r*   r   r   r  r  N)rA   rB   rC   r6  r  r   r   r  r  r  rY  r  r]  r   r^  r  r  r_  r  r  s   r)   InFramesetPhaser  
  s       EGG		- 	- 	-	B 	B 	B	+ 	+ 	+	) 	) 	)	G 	G 	G	< 	< 	<
	H 
	H 
	H	< 	< 	< 2&1U'()*m$)*	3
   #0//(1
   !,r*   r  c                       e Zd Z e            Zd Zd Zd Zd Zd Z	d Z
 ej        d j        fdefg          Zee_         ej        de	fg          Ze
e_        d	S )
%getPhases.<locals>.AfterFramesetPhasec                     d S r3   rI   rs   s    r)   r   z0getPhases.<locals>.AfterFramesetPhase.processEOFT
  r   r*   c                 :    | j                             d           d S )Nzunexpected-char-after-framesetr  r   s     r)   r   z7getPhases.<locals>.AfterFramesetPhase.processCharactersX
  s    K""#CDDDDDr*   c                 L    | j         j        d                             |          S r  rS  r   s     r)   r  z6getPhases.<locals>.AfterFramesetPhase.startTagNoframes[
  rT  r*   c                 L    | j                             dd|d         i           d S )Nz#unexpected-start-tag-after-framesetrL   r  r   s     r)   rY  z3getPhases.<locals>.AfterFramesetPhase.startTagOther^
  s5    K""#H$*E&M#:< < < < <r*   c                 >    | j         j        d         | j         _        d S )NafterAfterFrameset)rW   rS   rm   r   s     r)   rg  z0getPhases.<locals>.AfterFramesetPhase.endTagHtmlb
  s     $ 23G HDKr*   c                 L    | j                             dd|d         i           d S )Nz!unexpected-end-tag-after-framesetrL   r  r   s     r)   r]  z1getPhases.<locals>.AfterFramesetPhase.endTagOthere
  s5    K""#F$*E&M#:< < < < <r*   r   r  N)rA   rB   rC   r6  r  r   r   r  rY  rg  r]  r   r^  r  r  r_  r  r  s   r)   AfterFramesetPhaser  P
  s        EGG		 	 		E 	E 	E	G 	G 	G	< 	< 	<	I 	I 	I	< 	< 	< 2&1U'()*3
   #0//Z 1
   !,r*   r"  c                       e Zd Z e            Zd Zd Zd Zd Zd Z	d Z
d Z ej        de	fg          Ze
e_        d	S )
&getPhases.<locals>.AfterAfterBodyPhasec                     d S r3   rI   rs   s    r)   r   z1getPhases.<locals>.AfterAfterBodyPhase.processEOFw
  r#  r*   c                 P    | j                             || j         j                   d S r3   r%  r   s     r)   r   z5getPhases.<locals>.AfterAfterBodyPhase.processCommentz
  r'  r*   c                 L    | j         j        d                             |          S rR  r  r   s     r)   r   z=getPhases.<locals>.AfterAfterBodyPhase.processSpaceCharacters}
  r  r*   c                 r    | j                             d           | j         j        d         | j         _        |S )Nexpected-eof-but-got-charr   r  r   s     r)   r   z8getPhases.<locals>.AfterAfterBodyPhase.processCharacters
  s2    K""#>??? $ 28 <DKLr*   c                 L    | j         j        d                             |          S rR  rS  r   s     r)   r  z3getPhases.<locals>.AfterAfterBodyPhase.startTagHtml
  rT  r*   c                     | j                             dd|d         i           | j         j        d         | j         _        |S )Nexpected-eof-but-got-start-tagrL   r   r  r   s     r)   rY  z4getPhases.<locals>.AfterAfterBodyPhase.startTagOther
  sD    K""#C$*E&M#:< < < $ 28 <DKLr*   c                     | j                             dd|d         i           | j         j        d         | j         _        |S )Nexpected-eof-but-got-end-tagrL   r   r  r   s     r)   r   z4getPhases.<locals>.AfterAfterBodyPhase.processEndTag
  sD    K""#A$*E&M#:< < < $ 28 <DKLr*   r   N)rA   rB   rC   r6  r  r   r   r   r   r  rY  r   r   r^  r  r_  rI   r*   r)   AfterAfterBodyPhaser$  t
  s        EGG		 	 		? 	? 	?	N 	N 	N	 	 	
	G 	G 	G	 	 		 	 	 2&1\"3
   #0r*   r/  c                       e Zd Z e            Zd Zd Zd Zd Zd Z	d Z
d Zd Z ej        d	e	fd
e
fg          Zee_        dS )*getPhases.<locals>.AfterAfterFramesetPhasec                     d S r3   rI   rs   s    r)   r   z5getPhases.<locals>.AfterAfterFramesetPhase.processEOF
  r#  r*   c                 P    | j                             || j         j                   d S r3   r%  r   s     r)   r   z9getPhases.<locals>.AfterAfterFramesetPhase.processComment
  r'  r*   c                 L    | j         j        d                             |          S rR  r  r   s     r)   r   zAgetPhases.<locals>.AfterAfterFramesetPhase.processSpaceCharacters
  r  r*   c                 :    | j                             d           d S )Nr)  r  r   s     r)   r   z<getPhases.<locals>.AfterAfterFramesetPhase.processCharacters
  s    K""#>?????r*   c                 L    | j         j        d                             |          S rR  rS  r   s     r)   r  z7getPhases.<locals>.AfterAfterFramesetPhase.startTagHtml
  rT  r*   c                 L    | j         j        d                             |          S r  rS  r   s     r)   startTagNoFramesz;getPhases.<locals>.AfterAfterFramesetPhase.startTagNoFrames
  rT  r*   c                 L    | j                             dd|d         i           d S )Nr,  rL   r  r   s     r)   rY  z8getPhases.<locals>.AfterAfterFramesetPhase.startTagOther
  r  r*   c                 L    | j                             dd|d         i           d S )Nr.  rL   r  r   s     r)   r   z8getPhases.<locals>.AfterAfterFramesetPhase.processEndTag
  r  r*   r   r  N)rA   rB   rC   r6  r  r   r   r   r   r  r8  rY  r   r   r^  r  r_  rI   r*   r)   AfterAfterFramesetPhaser1  
  s        EGG		 	 		? 	? 	?	N 	N 	N	@ 	@ 	@	G 	G 	G	G 	G 	G	< 	< 	<	< 	< 	< 2&1\")*3
   #0r*   r;  rd   rc   r   rV  r  r  r   r   r   r  r   r   r   r   r   r   rM  )r   rd  r   r  r  r   rI   )rT   rf   r   r7  rG  r`  r  r  r  r  r  r  r1  rO  rd  rt  r  r  r  r	  r  r"  r/  r;  r  r  r  s                           @@@r)   rR   rR     s%     *  F F F F F,,uc22 F F F FP@ @ @ @ @u @ @ @D# # # # #% # # #J+, +, +, +, +,% +, +, +,Zd, d, d, d, d,e d, d, d,L=, =, =, =, =,e =, =, =,~@, @, @, @, @, @, @, @,DR, R, R, R, R, R, R, R,e R, R, R,h, , , , ,E , , ,BO, O, O, O, O, O, O,u O, O, O,b- - - - - - -5 - - -^D, D, D, D, D, D, D, D, D, D,L>, >, >, >, >, >, >,U >, >, >,@`, `, `, `, `, `, `,5 `, `, `,DW, W, W, W, W, W, W,U W, W, W,rJ, J, J, J, J, J, J,e J, J, J,Xa, a, a, a, a, a, a, a, a, a,F$, $, $, $, $,u $, $, $,Lp p p p p p p p p pd,, ,, ,, ,, ,, ,, ,, ,,\6, 6, 6, 6, 6, 6, 6,% 6, 6, 6,p", ", ", ", ", ", ",U ", ", ",H#0 #0 #0 #0 #0e #0 #0 #0J!0 !0 !0 !0 !0% !0 !0 !0J<o 	o 	+	
 	- 	^ 	+ 		 	< 	' 	^ 	+ 	' 	 	+  	M!" 	/#$ 2#%+-5/   r*   c                     t          | d                   t                    z  }|rG t          | d                   fd| d                                         D                       | d<   d S d S )Nr   c              3   N   K   | ]\  }}                     ||          |fV   d S r3   )r   )rK   kvr  s      r)   r  z$adjust_attributes.<locals>.<genexpr>
  sX       ,O ,O041 .:-=-=a-C-CQ,G ,O ,O ,O ,O ,O ,Or*   )r   r8   r4   )r   r  needs_adjustments    ` r)   r   r   
  s    f..,1G1GG O+U6]++ ,O ,O ,O ,O8=f8K8K8M8M,O ,O ,O O OfO Or*   r   Fc                 .    |i }t           |         | ||dS )N)r8   rL   r   r   )r   )rL   r8   r}   r   s       r)   r<  r<  
  s+    
t$dJ&( ( (r*   c                       e Zd ZdZdS )r   zError in parsed documentN)rA   rB   rC   r   rI   r*   r)   r   r   
  s        ""Dr*   r   )r   T)r+   r   T)r   NF)+
__future__r   r   r   bleach.six_shimr   r6   r,  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.   rE   r  r"   memoizerR   r   r<  	Exceptionr   rI   r*   r)   <module>rI     s:   B B B B B B B B B B $ $ $ $ $ $                    % % % % % %      
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
" " " ".? ? ? ?2	 	 	s) s) s) s) s) s) s) s)l	 J% J% J%ZJO O O 59 %( ( ( (	 	 	 	 	 	 	 	 	 	r*   