403Webshell
Server IP : 192.158.238.246  /  Your IP : 18.220.224.115
Web Server : LiteSpeed
System : Linux uniform.iwebfusion.net 4.18.0-553.27.1.lve.1.el8.x86_64 #1 SMP Wed Nov 20 15:58:00 UTC 2024 x86_64
User : jenniferflocom ( 1321)
PHP Version : 8.1.32
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/alt/python37/lib/python3.7/site-packages/html5lib/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/alt/python37/lib/python3.7/site-packages/html5lib/__pycache__/html5parser.cpython-37.opt-1.pyc
B

63)Z���@sddlmZmZmZddlmZmZddlZddlm	Z	ddl
mZddl
mZddl
m
Z
dd	lmZdd
l
mZddlmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"d!dd�Z#d"dd�Z$dd�Z%Gdd�de&�Z'ej(dd��Z)dd�Z*d#dd�Z+Gdd �d e,�Z-dS)$�)�absolute_import�division�unicode_literals)�with_metaclass�viewkeysN)�OrderedDict�)�_inputstream)�
_tokenizer)�treebuilders)�Marker)�_utils)�spaceCharacters�asciiUpper2Lower�specialElements�headingElements�
cdataElements�rcdataElements�
tokenTypes�
tagTokenTypes�
namespaces�htmlIntegrationPointElements�"mathmlTextIntegrationPointElements�adjustForeignAttributes�adjustMathMLAttributes�adjustSVGAttributes�E�_ReparseException�etreeTcKs$t�|�}t||d�}|j|f|�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�p�r(�E/opt/alt/python37/lib/python3.7/site-packages/html5lib/html5parser.pyr"s
r"�divcKs,t�|�}t||d�}|j|fd|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)rr r!�
parseFragment)r#r+r$rr%r&r'r(r(r)r,2s
r,csG�fdd�dt�}|S)NcseZdZ�fdd�ZdS)z-method_decorator_metaclass.<locals>.DecoratedcsBx0|��D]$\}}t|tj�r&�|�}|||<q
Wt�||||�S)N)�items�
isinstance�types�FunctionType�type�__new__)�metaZ	classname�basesZ	classDictZ
attributeNameZ	attribute)�functionr(r)r2Ms
z5method_decorator_metaclass.<locals>.Decorated.__new__N)�__name__�
__module__�__qualname__r2r()r5r(r)�	DecoratedLsr9)r1)r5r9r()r5r)�method_decorator_metaclassKsr:c@s�eZdZdZd+dd�Zd,dd	�Zd
d�Zedd
��Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zd-dd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�ZdS).r!z]HTML parser

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

    NFTcsL|�_|dkrt�d�}||��_g�_t�fdd�t|���D���_dS)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

        Nrcs g|]\}}||��j�f�qSr()�tree)�.0�name�cls)�selfr(r)�
<listcomp>zsz'HTMLParser.__init__.<locals>.<listcomp>)	�strictrr r;�errors�dict�	getPhasesr-�phases)r?r;rAr�debugr()r?r)�__init__^s

zHTMLParser.__init__r*cKsh||_||_||_tj|fd|i|��|_|��y|��Wn$tk
rb|��|��YnXdS)N�parser)	�
innerHTMLModer+�	scriptingr
Z
HTMLTokenizer�	tokenizer�reset�mainLoopr)r?�stream�	innerHTMLr+rJr%r(r(r)�_parse}szHTMLParser._parsecCs�|j��d|_g|_g|_d|_|jr�|j��|_	|j	t
krL|jj|j_
n0|j	tkrd|jj|j_
n|j	dkr||jj|j_
n|jd|_|j��|��nd|_	|jd|_d|_d|_d|_dS)NFz	no quirks�	plaintext�
beforeHtml�initialT)r;rL�
firstStartTagrB�log�
compatModerIr+�lowerrOrrK�rcdataState�stater�rawtextState�plaintextStaterE�phase�insertHtmlElement�resetInsertionModeZ	lastPhaseZbeforeRCDataPhase�
framesetOK)r?r(r(r)rL�s*





zHTMLParser.resetcCst|d�sdS|jjjdjS)z�Name of the character encoding that was used to decode the input stream, or
        :obj:`None` if that is not determined yet

        rKNr)�hasattrrKrN�charEncodingr=)r?r(r(r)�documentEncoding�s
zHTMLParser.documentEncodingcCsJ|jdkr6|jtdkr6d|jko4|jd�t�dkS|j|jftkSdS)Nzannotation-xml�mathml�encoding)z	text/htmlzapplication/xhtml+xml)r=�	namespacer�
attributes�	translaterr)r?�elementr(r(r)�isHTMLIntegrationPoint�s


z!HTMLParser.isHTMLIntegrationPointcCs|j|jftkS)N)rer=r)r?rhr(r(r)�isMathMLTextIntegrationPoint�sz'HTMLParser.isMathMLTextIntegrationPointcCsxtd}td}td}td}td}td}td}�x�|��D�]�}d}	|}
�x�|
dk	�r|
}	|jjrx|jjdnd}|r�|jnd}|r�|jnd}
|
d	}||kr�|�|
d
|
�di��d}
qVt|jj�dk�sl||jj	k�sl|�
|��r ||k�r|d
tddg�k�sl|||fk�sl|tdk�rP|
dk�rP||k�rP|d
dk�sl|�
|��rt||||fk�rt|j}n
|jd}||k�r�|�|
�}
qV||k�r�|�|
�}
qV||k�r�|�|
�}
qV||k�r�|�|
�}
qV||k�r�|�|
�}
qV||krV|�|
�}
qVW||krD|	drD|	dsD|�dd
|	d
i�qDWd}g}x8|�rr|�|j�|j��}|�r<|j|k�s<t��q<WdS)N�
CharactersZSpaceCharacters�StartTag�EndTag�CommentZDoctype�
ParseError���r1�data�datavarsrr=ZmglyphZ
malignmarkrczannotation-xml�svg�inForeignContent�selfClosing�selfClosingAcknowledgedz&non-void-element-with-trailing-solidusT)r�normalizedTokensr;�openElementsrer=�
parseError�get�len�defaultNamespacerj�	frozensetrrir\rE�processCharacters�processSpaceCharacters�processStartTag�
processEndTag�processComment�processDoctype�append�
processEOF�AssertionError)r?ZCharactersTokenZSpaceCharactersTokenZ
StartTagTokenZEndTagTokenZCommentTokenZDoctypeTokenZParseErrorToken�tokenZ
prev_token�	new_token�currentNodeZcurrentNodeNamespaceZcurrentNodeNamer1r\Z	reprocessrEr(r(r)rM�sp









zHTMLParser.mainLoopccs x|jD]}|�|�VqWdS)N)rK�normalizeToken)r?r�r(r(r)rwszHTMLParser.normalizedTokenscOs |j|ddf|�|�|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)rPr;ZgetDocument)r?rN�argsr%r(r(r)r"szHTMLParser.parsecOs|j|df|�|�|j��S)aZParse 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)rPr;ZgetFragment)r?rNr�r%r(r(r)r,$szHTMLParser.parseFragment�XXX-undefined-errorcCs@|dkri}|j�|jj��||f�|jr<tt||��dS)N)rBr�rKrNZpositionrAror)r?�	errorcoderrr(r(r)ry@s
zHTMLParser.parseErrorcCsT|dtdkrP|d}t|�|d<t|�t|d�krP|d�|ddd��|S)Nr1rlrqrp)rrr{�update)r?r��rawr(r(r)r�HszHTMLParser.normalizeTokencCst|t�dS)N)�adjust_attributesr)r?r�r(r(r)rSsz!HTMLParser.adjustMathMLAttributescCst|t�dS)N)r�r)r?r�r(r(r)rVszHTMLParser.adjustSVGAttributescCst|t�dS)N)r��adjustForeignAttributesMap)r?r�r(r(r)rYsz"HTMLParser.adjustForeignAttributescCs|j��dS)N)rHr\)r?r�r(r(r)�reparseTokenNormal\szHTMLParser.reparseTokenNormalcCs�d}ddddddddddd	d	d
dd�}x�|jjddd
�D]�}|j}d}||jjdkrl|jsbt�d}|j}|dkr~|js~t�|s�|j|jjkr�q:||kr�|j||}Pq:|r:|jd	}Pq:W||_dS)NF�inSelect�inCell�inRow�inTableBody�	inCaption�
inColumnGroup�inTable�inBody�
inFrameset�
beforeHead)�select�td�th�tr�tbody�thead�tfoot�caption�colgroup�table�head�body�frameset�htmlrprT)r�r�r�r�)	r;rxr=rOr�rer|rEr\)r?ZlastZnewModes�nodeZnodeNameZ	new_phaser(r(r)r^`sB


zHTMLParser.resetInsertionModecCsR|dkst�|j�|�|dkr.|jj|j_n|jj|j_|j|_|j	d|_dS)N)�RAWTEXT�RCDATAr��text)
r�r;�
insertElementrKrZrYrXr\�
originalPhaserE)r?r�ZcontentTyper(r(r)�parseRCDataRawtext�szHTMLParser.parseRCDataRawtext)NFTF)Fr*F)r�N)r6r7r8�__doc__rGrPrL�propertyrbrirjrMrwr"r,ryr�rrrr�r^r�r(r(r(r)r!Ws&

"

C
,r!cs"dd�}dd�}Gdd�dt|||����Gdd�d��}Gd	d
�d
��}G�fdd�d��}G�fd
d�d��}G�fdd�d��}G�fdd�d��}G�fdd�d��}	G�fdd�d��}
G�fdd�d��}G�fdd�d��}G�fdd�d��}
G�fdd�d��}G�fdd �d ��}G�fd!d"�d"��}G�fd#d$�d$��}G�fd%d&�d&��}G�fd'd(�d(��}G�fd)d*�d*��}G�fd+d,�d,��}G�fd-d.�d.��}G�fd/d0�d0��}G�fd1d2�d2��}G�fd3d4�d4��}|||||||	|
|||
||||||||||||d5�S)6Ncs(tdd�t��D�����fdd�}|S)z4Logger that records which phase processes each tokencss|]\}}||fVqdS)Nr()r<�key�valuer(r(r)�	<genexpr>�sz)getPhases.<locals>.log.<locals>.<genexpr>cs��j�d�r�t|�dkr�|d}yd�|di}Wn�YnX|dtkr\|d|d<|jj�|jjjj|jj	j
j|j
j�j|f��|f|�|�S�|f|�|�SdS)N�processrr1r=)r6�
startswithr{rrHrUr�rKrYr\�	__class__)r?r�r%r��info)r5�
type_namesr(r)�wrapped�s
z'getPhases.<locals>.log.<locals>.wrapped)rCrr-)r5r�r()r5r�r)rU�szgetPhases.<locals>.logcSs|rt|�StSdS)N)r:r1)Z
use_metaclassZmetaclass_funcr(r(r)�getMetaclass�szgetPhases.<locals>.getMetaclassc@sXeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�ZdS)zgetPhases.<locals>.PhasezNBase class for helper object that implements each phase of processing
        cSs||_||_dS)N)rHr;)r?rHr;r(r(r)rG�sz!getPhases.<locals>.Phase.__init__cSst�dS)N)�NotImplementedError)r?r(r(r)r��sz#getPhases.<locals>.Phase.processEOFcSs|j�||jjd�dS)Nrp)r;�
insertCommentrx)r?r�r(r(r)r��sz'getPhases.<locals>.Phase.processCommentcSs|j�d�dS)Nzunexpected-doctype)rHry)r?r�r(r(r)r��sz'getPhases.<locals>.Phase.processDoctypecSs|j�|d�dS)Nrq)r;�
insertText)r?r�r(r(r)r~�sz*getPhases.<locals>.Phase.processCharacterscSs|j�|d�dS)Nrq)r;r�)r?r�r(r(r)r�sz/getPhases.<locals>.Phase.processSpaceCharacterscSs|j|d|�S)Nr=)�startTagHandler)r?r�r(r(r)r��sz(getPhases.<locals>.Phase.processStartTagcSsj|jjs |ddkr |j�d�x<|d��D],\}}||jjdjkr.||jjdj|<q.Wd|j_dS)Nr=r�z
non-html-rootrqrF)rHrTryr-r;rxrf)r?r��attrr�r(r(r)�startTagHtml�sz%getPhases.<locals>.Phase.startTagHtmlcSs|j|d|�S)Nr=)�
endTagHandler)r?r�r(r(r)r��sz&getPhases.<locals>.Phase.processEndTagN)
r6r7r8r�rGr�r�r�r~rr�r�r�r(r(r(r)�Phase�s
r�c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)zgetPhases.<locals>.InitialPhasecSsdS)Nr()r?r�r(r(r)r�sz6getPhases.<locals>.InitialPhase.processSpaceCharacterscSs|j�||jj�dS)N)r;r��document)r?r�r(r(r)r��sz.getPhases.<locals>.InitialPhase.processCommentcSs�|d}|d}|d}|d}|dks@|dk	s@|dk	rL|dkrL|j�d�|dkrXd}|j�|�|dkrv|�t�}|r�|ddks�|�d	�s�|d
ks�|�d�r�|dks�|r�|��dkr�d
|j_n$|�d�s�|�d�r�|dk	r�d|j_|jj	d|j_
dS)Nr=�publicId�systemId�correctr�zabout:legacy-compatzunknown-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//zlimited quirksrR)rHryr;Z
insertDoctypergrr�rWrVrEr\)r?r�r=r�r�r�r(r(r)r��s8
7
z.getPhases.<locals>.InitialPhase.processDoctypecSsd|j_|jjd|j_dS)Nr�rR)rHrVrEr\)r?r(r(r)�anythingElseMsz,getPhases.<locals>.InitialPhase.anythingElsecSs|j�d�|��|S)Nzexpected-doctype-but-got-chars)rHryr�)r?r�r(r(r)r~Qsz1getPhases.<locals>.InitialPhase.processCharacterscSs"|j�dd|di�|��|S)Nz"expected-doctype-but-got-start-tagr=)rHryr�)r?r�r(r(r)r�Vsz/getPhases.<locals>.InitialPhase.processStartTagcSs"|j�dd|di�|��|S)Nz expected-doctype-but-got-end-tagr=)rHryr�)r?r�r(r(r)r�\sz-getPhases.<locals>.InitialPhase.processEndTagcSs|j�d�|��dS)Nzexpected-doctype-but-got-eofT)rHryr�)r?r(r(r)r�bsz*getPhases.<locals>.InitialPhase.processEOFN)r6r7r8rr�r�r�r~r�r�r�r(r(r(r)�InitialPhase�s_r�c@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)z"getPhases.<locals>.BeforeHtmlPhasecSs&|j�tdd��|jjd|j_dS)Nr�rlr�)r;Z
insertRoot�impliedTagTokenrHrEr\)r?r(r(r)r]isz4getPhases.<locals>.BeforeHtmlPhase.insertHtmlElementcSs|��dS)NT)r])r?r(r(r)r�nsz-getPhases.<locals>.BeforeHtmlPhase.processEOFcSs|j�||jj�dS)N)r;r�r�)r?r�r(r(r)r�rsz1getPhases.<locals>.BeforeHtmlPhase.processCommentcSsdS)Nr()r?r�r(r(r)rusz9getPhases.<locals>.BeforeHtmlPhase.processSpaceCharacterscSs|��|S)N)r])r?r�r(r(r)r~xsz4getPhases.<locals>.BeforeHtmlPhase.processCharacterscSs |ddkrd|j_|��|S)Nr=r�T)rHrTr])r?r�r(r(r)r�|sz2getPhases.<locals>.BeforeHtmlPhase.processStartTagcSs4|ddkr$|j�dd|di�n|��|SdS)Nr=)r�r�r��brzunexpected-end-tag-before-html)rHryr])r?r�r(r(r)r��s
z0getPhases.<locals>.BeforeHtmlPhase.processEndTagN)
r6r7r8r]r�r�rr~r�r�r(r(r(r)�BeforeHtmlPhasegsr�csXeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)z"getPhases.<locals>.BeforeHeadPhasecsV��|||�t�d|jfd|jfg�|_|j|j_t�d|jfg�|_	|j
|j	_dS)Nr�r�)r�r�r�r�)rGr
�MethodDispatcherr��startTagHeadr��
startTagOther�default�endTagImplyHeadr��endTagOther)r?rHr;)r�r(r)rG�s
z+getPhases.<locals>.BeforeHeadPhase.__init__cSs|�tdd��dS)Nr�rlT)r�r�)r?r(r(r)r��sz-getPhases.<locals>.BeforeHeadPhase.processEOFcSsdS)Nr()r?r�r(r(r)r�sz9getPhases.<locals>.BeforeHeadPhase.processSpaceCharacterscSs|�tdd��|S)Nr�rl)r�r�)r?r�r(r(r)r~�sz4getPhases.<locals>.BeforeHeadPhase.processCharacterscSs|jjd�|�S)Nr�)rHrEr�)r?r�r(r(r)r��sz/getPhases.<locals>.BeforeHeadPhase.startTagHtmlcSs0|j�|�|jjd|j_|jjd|j_dS)Nrp�inHead)r;r�rx�headPointerrHrEr\)r?r�r(r(r)r��sz/getPhases.<locals>.BeforeHeadPhase.startTagHeadcSs|�tdd��|S)Nr�rl)r�r�)r?r�r(r(r)r��sz0getPhases.<locals>.BeforeHeadPhase.startTagOthercSs|�tdd��|S)Nr�rl)r�r�)r?r�r(r(r)r��sz2getPhases.<locals>.BeforeHeadPhase.endTagImplyHeadcSs|j�dd|di�dS)Nzend-tag-after-implied-rootr=)rHry)r?r�r(r(r)r��sz.getPhases.<locals>.BeforeHeadPhase.endTagOtherN)r6r7r8rGr�rr~r�r�r�r�r�r()r�r(r)�BeforeHeadPhase�sr�cs�eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!S)"zgetPhases.<locals>.InHeadPhasecs���|||�t�d|jfd|jfd|jfd|jfd|jfd|jfd|j	fd|j
fg�|_|j|j_
t�d|jfd	|jfg�|_|j|j_
dS)
Nr��title)�noframes�style�noscript�script)�base�basefont�bgsound�command�linkr3r�)r�r�r�)rGr
r�r��
startTagTitle�startTagNoFramesStyle�startTagNoscript�startTagScript�startTagBaseLinkCommand�startTagMetar�r�r�r��
endTagHead�endTagHtmlBodyBrr�r�)r?rHr;)r�r(r)rG�s 
z'getPhases.<locals>.InHeadPhase.__init__cSs|��dS)NT)r�)r?r(r(r)r��sz)getPhases.<locals>.InHeadPhase.processEOFcSs|��|S)N)r�)r?r�r(r(r)r~�sz0getPhases.<locals>.InHeadPhase.processCharacterscSs|jjd�|�S)Nr�)rHrEr�)r?r�r(r(r)r��sz+getPhases.<locals>.InHeadPhase.startTagHtmlcSs|j�d�dS)Nz!two-heads-are-not-better-than-one)rHry)r?r�r(r(r)r��sz+getPhases.<locals>.InHeadPhase.startTagHeadcSs$|j�|�|jj��d|d<dS)NTrv)r;r�rx�pop)r?r�r(r(r)r��sz6getPhases.<locals>.InHeadPhase.startTagBaseLinkCommandcSs�|j�|�|jj��d|d<|d}|jjjjddkr�d|krZ|jjj�|d�nVd|kr�d|kr�|d�	�d	kr�t
�|d�d
��}t
�
|�}|��}|jjj�|�dS)NTrvrqrZ	tentative�charsetZcontentz
http-equivzcontent-typezutf-8)r;r�rxr�rHrKrNraZchangeEncodingrWr	Z
EncodingBytes�encodeZContentAttrParserr")r?r�rfrqrH�codecr(r(r)r��s
z+getPhases.<locals>.InHeadPhase.startTagMetacSs|j�|d�dS)Nr�)rHr�)r?r�r(r(r)r��sz,getPhases.<locals>.InHeadPhase.startTagTitlecSs|j�|d�dS)Nr�)rHr�)r?r�r(r(r)r��sz4getPhases.<locals>.InHeadPhase.startTagNoFramesStylecSs8|jjr|j�|d�n|j�|�|jjd|j_dS)Nr��inHeadNoscript)rHrJr�r;r�rEr\)r?r�r(r(r)r��sz/getPhases.<locals>.InHeadPhase.startTagNoscriptcSs<|j�|�|jjj|jj_|jj|j_|jjd|j_dS)Nr�)	r;r�rHrKZscriptDataStaterYr\r�rE)r?r�r(r(r)r�sz-getPhases.<locals>.InHeadPhase.startTagScriptcSs|��|S)N)r�)r?r�r(r(r)r�sz,getPhases.<locals>.InHeadPhase.startTagOthercSs:|jjj��}|jdks&td|j��|jjd|j_dS)Nr�zExpected head got %s�	afterHead)rHr;rxr�r=r�rEr\)r?r�r�r(r(r)r�sz)getPhases.<locals>.InHeadPhase.endTagHeadcSs|��|S)N)r�)r?r�r(r(r)r�sz/getPhases.<locals>.InHeadPhase.endTagHtmlBodyBrcSs|j�dd|di�dS)Nzunexpected-end-tagr=)rHry)r?r�r(r(r)r�sz*getPhases.<locals>.InHeadPhase.endTagOthercSs|�td��dS)Nr�)r�r�)r?r(r(r)r�sz+getPhases.<locals>.InHeadPhase.anythingElseN)r6r7r8rGr�r~r�r�r�r�r�r�r�r�r�r�r�r�r�r()r�r(r)�InHeadPhase�s r�csxeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)z&getPhases.<locals>.InHeadNoscriptPhasecsf��|||�t�d|jfd|jfd|jfg�|_|j|j_t�d|j	fd|j
fg�|_|j|j_dS)Nr�)r�r�r�r3r�r�)r�r�r�r�)
rGr
r�r�r��startTagHeadNoscriptr�r�r��endTagNoscript�endTagBrr�r�)r?rHr;)r�r(r)rG s
z/getPhases.<locals>.InHeadNoscriptPhase.__init__cSs|j�d�|��dS)Nzeof-in-head-noscriptT)rHryr�)r?r(r(r)r�0sz1getPhases.<locals>.InHeadNoscriptPhase.processEOFcSs|jjd�|�S)Nr�)rHrEr�)r?r�r(r(r)r�5sz5getPhases.<locals>.InHeadNoscriptPhase.processCommentcSs|j�d�|��|S)Nzchar-in-head-noscript)rHryr�)r?r�r(r(r)r~8sz8getPhases.<locals>.InHeadNoscriptPhase.processCharacterscSs|jjd�|�S)Nr�)rHrEr)r?r�r(r(r)r=sz=getPhases.<locals>.InHeadNoscriptPhase.processSpaceCharacterscSs|jjd�|�S)Nr�)rHrEr�)r?r�r(r(r)r�@sz3getPhases.<locals>.InHeadNoscriptPhase.startTagHtmlcSs|jjd�|�S)Nr�)rHrEr�)r?r�r(r(r)r�Csz>getPhases.<locals>.InHeadNoscriptPhase.startTagBaseLinkCommandcSs|j�dd|di�dS)Nzunexpected-start-tagr=)rHry)r?r�r(r(r)r�Fsz;getPhases.<locals>.InHeadNoscriptPhase.startTagHeadNoscriptcSs"|j�dd|di�|��|S)Nzunexpected-inhead-noscript-tagr=)rHryr�)r?r�r(r(r)r�Isz4getPhases.<locals>.InHeadNoscriptPhase.startTagOthercSs:|jjj��}|jdks&td|j��|jjd|j_dS)Nr�zExpected noscript got %sr�)rHr;rxr�r=r�rEr\)r?r�r�r(r(r)r�Nsz5getPhases.<locals>.InHeadNoscriptPhase.endTagNoscriptcSs"|j�dd|di�|��|S)Nzunexpected-inhead-noscript-tagr=)rHryr�)r?r�r(r(r)r�Ssz/getPhases.<locals>.InHeadNoscriptPhase.endTagBrcSs|j�dd|di�dS)Nzunexpected-end-tagr=)rHry)r?r�r(r(r)r�Xsz2getPhases.<locals>.InHeadNoscriptPhase.endTagOthercSs|�td��dS)Nr�)r�r�)r?r(r(r)r�[sz3getPhases.<locals>.InHeadNoscriptPhase.anythingElseN)r6r7r8rGr�r�r~rr�r�r�r�r�r�r�r�r()r�r(r)�InHeadNoscriptPhasesr�cspeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)z!getPhases.<locals>.AfterHeadPhasecsn��|||�t�d|jfd|jfd|jfd|jfd|jfg�|_|j	|j_
t�d|jfg�|_|j
|j_
dS)Nr�r�r�)	r�r�r�r�r3r�r�r�r�r�)r�r�r�)rGr
r�r��startTagBody�startTagFrameset�startTagFromHeadr�r�r�r�r�r�r�)r?rHr;)r�r(r)rG`s
z*getPhases.<locals>.AfterHeadPhase.__init__cSs|��dS)NT)r�)r?r(r(r)r�qsz,getPhases.<locals>.AfterHeadPhase.processEOFcSs|��|S)N)r�)r?r�r(r(r)r~usz3getPhases.<locals>.AfterHeadPhase.processCharacterscSs|jjd�|�S)Nr�)rHrEr�)r?r�r(r(r)r�ysz.getPhases.<locals>.AfterHeadPhase.startTagHtmlcSs(d|j_|j�|�|jjd|j_dS)NFr�)rHr_r;r�rEr\)r?r�r(r(r)r�|sz.getPhases.<locals>.AfterHeadPhase.startTagBodycSs |j�|�|jjd|j_dS)Nr�)r;r�rHrEr\)r?r�r(r(r)r��sz2getPhases.<locals>.AfterHeadPhase.startTagFramesetcSst|j�dd|di�|jj�|jj�|jjd�|�x4|jjddd�D]}|jdkrN|jj�	|�PqNWdS)Nz#unexpected-start-tag-out-of-my-headr=r�rpr�)
rHryr;rxr�r�rEr�r=�remove)r?r�r�r(r(r)r��s
z2getPhases.<locals>.AfterHeadPhase.startTagFromHeadcSs|j�dd|di�dS)Nzunexpected-start-tagr=)rHry)r?r�r(r(r)r��sz.getPhases.<locals>.AfterHeadPhase.startTagHeadcSs|��|S)N)r�)r?r�r(r(r)r��sz/getPhases.<locals>.AfterHeadPhase.startTagOthercSs|��|S)N)r�)r?r�r(r(r)r��sz2getPhases.<locals>.AfterHeadPhase.endTagHtmlBodyBrcSs|j�dd|di�dS)Nzunexpected-end-tagr=)rHry)r?r�r(r(r)r��sz-getPhases.<locals>.AfterHeadPhase.endTagOthercSs.|j�tdd��|jjd|j_d|j_dS)Nr�rlr�T)r;r�r�rHrEr\r_)r?r(r(r)r��sz.getPhases.<locals>.AfterHeadPhase.anythingElseN)r6r7r8rGr�r~r�r�r�r�r�r�r�r�r�r()r�r(r)�AfterHeadPhase_s
r�cs�eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;d<�Z d=d>�Z!d?d@�Z"dAdB�Z#dCdD�Z$dEdF�Z%dGdH�Z&dIdJ�Z'dKdL�Z(dMdN�Z)dOdP�Z*dQdR�Z+dSdT�Z,dUdV�Z-dWdX�Z.dYdZ�Z/d[d\�Z0d]d^�Z1d_d`�Z2dadb�Z3dcdd�Z4dedf�Z5dgS)hzgetPhases.<locals>.InBodyPhasec$s���|||�|j|_t�d|jfd|jfd|jfd|jfd|j	ft
|jfd|jfd|j
fd|jfd	|jfd
|jfd|jfd|jfd
|jfd|jfd|jfd|jfd|jfd|jfd|jfd|jfd|jfd|jfd|jfd|jfd|jfd|j fd|j!fd|j"fd|j#fd|j$fd|j%fd |j&fg!�|_'|j(|j'_)t�d|j*fd|j+fd!|j,fd|j-fd"|j.fd#|j/ft
|j0fd$|j1fd|j2fd%|j3fg
�|_4|j5|j4_)dS)&Nr�)	r�r�r�r�r�r3r�r�r�r�r�)�address�article�aside�
blockquote�center�details�dirr*�dl�fieldset�
figcaption�figure�footer�header�hgroup�main�menu�nav�olr'�section�summary�ul)�pre�listing�form)�li�dd�dtrQ�a)�b�big�code�em�font�i�s�small�strike�strong�tt�u�nobr�button)ZappletZmarquee�objectZxmpr�)Zarear��embed�img�keygenZwbr)Zparam�sourceZtrack�input�hr�image�isindex�textareaZiframer�)Znoembedr�r�)�rp�rt)�option�optgroup�mathrs)r��colr��framer�r�r�r�r�r�r�)r�r�r�r�r%rrZdialogrr*rrrrrrr	rr
rrr
rrrrr')rrr)rrrrrrrr$rrr r!r"r#r�)6rG�processSpaceCharactersNonPrerr
r�r��startTagProcessInHeadr�r��startTagClosePr�startTagHeading�startTagPreListing�startTagForm�startTagListItem�startTagPlaintext�	startTagA�startTagFormatting�startTagNobr�startTagButton�startTagAppletMarqueeObject�startTagXmp�
startTagTable�startTagVoidFormatting�startTagParamSource�
startTagInput�
startTagHr�
startTagImage�startTagIsIndex�startTagTextarea�startTagIFramer��startTagRawtext�startTagSelect�startTagRpRt�startTagOpt�startTagMath�startTagSvg�startTagMisplacedr�r�r��
endTagBody�
endTagHtml�endTagBlock�
endTagForm�endTagP�endTagListItem�
endTagHeading�endTagFormatting�endTagAppletMarqueeObjectr�r�r�)r?rHr;)r�r(r)rG�sp
z'getPhases.<locals>.InBodyPhase.__init__cSs$|j|jko"|j|jko"|j|jkS)N)r=rerf)r?Znode1Znode2r(r(r)�isMatchingFormattingElement�sz:getPhases.<locals>.InBodyPhase.isMatchingFormattingElementcSs�|j�|�|jjd}g}x<|jjddd�D]&}|tkr@Pq0|�||�r0|�|�q0Wt|�dksjt�t|�dkr�|jj�	|d�|jj�|�dS)Nrp�)
r;r�rx�activeFormattingElementsrr^r�r{r�r�)r?r�rhZmatchingElementsr�r(r(r)�addFormattingElement�sz3getPhases.<locals>.InBodyPhase.addFormattingElementcSs@td�}x2|jjddd�D]}|j|kr|j�d�PqWdS)N)rrrr'r�r�r�r�r�r�r�r�rpz expected-closing-tag-but-got-eof)r}r;rxr=rHry)r?Zallowed_elementsr�r(r(r)r�s

z)getPhases.<locals>.InBodyPhase.processEOFcSsf|d}|j|_|�d�rH|jjdjdkrH|jjd��sH|dd�}|rb|j��|j�|�dS)Nrq�
rp)rrr/r)	r7rr�r;rxr=Z
hasContent�#reconstructActiveFormattingElementsr�)r?r�rqr(r(r)�!processSpaceCharactersDropNewline
s

z@getPhases.<locals>.InBodyPhase.processSpaceCharactersDropNewlinecSsT|ddkrdS|j��|j�|d�|jjrPtdd�|dD��rPd|j_dS)Nrq�cSsg|]}|tk�qSr()r)r<�charr(r(r)r@"szDgetPhases.<locals>.InBodyPhase.processCharacters.<locals>.<listcomp>F)r;rcr�rHr_�any)r?r�r(r(r)r~s
z0getPhases.<locals>.InBodyPhase.processCharacterscSs|j��|j�|d�dS)Nrq)r;rcr�)r?r�r(r(r)r7&s
z;getPhases.<locals>.InBodyPhase.processSpaceCharactersNonPrecSs|jjd�|�S)Nr�)rHrEr�)r?r�r(r(r)r8*sz4getPhases.<locals>.InBodyPhase.startTagProcessInHeadcSs�|j�dddi�t|jj�dks4|jjdjdkrB|jjs�t�nFd|j_x<|d�	�D],\}}||jjdj
krX||jjdj
|<qXWdS)Nzunexpected-start-tagr=r�rFrq)rHryr{r;rxr=rOr�r_r-rf)r?r�r�r�r(r(r)r�-sz+getPhases.<locals>.InBodyPhase.startTagBodycSs�|j�dddi�t|jj�dks4|jjdjdkrB|jjs�t�nt|jjsLnj|jjdj	rv|jjdj	�
|jjd�x"|jjdjdkr�|jj��qxW|j�|�|jj
d|j_dS)	Nzunexpected-start-tagr=r�rr�rpr�r�)rHryr{r;rxr=rOr�r_�parent�removeChildr�r�rEr\)r?r�r(r(r)r�8s"z/getPhases.<locals>.InBodyPhase.startTagFramesetcSs.|jjddd�r|�td��|j�|�dS)Nr'r%)�variant)r;�elementInScoperYr�r�)r?r�r(r(r)r9Fsz-getPhases.<locals>.InBodyPhase.startTagClosePcSs>|jjddd�r|�td��|j�|�d|j_|j|_dS)Nr'r%)rjF)	r;rkrYr�r�rHr_rdr)r?r�r(r(r)r;Ks
z1getPhases.<locals>.InBodyPhase.startTagPreListingcSsZ|jjr|j�dddi�n:|jjddd�r:|�td��|j�|�|jjd|j_dS)Nzunexpected-start-tagr=rr'r%)rjrp)	r;�formPointerrHryrkrYr�r�rx)r?r�r(r(r)r<Rsz+getPhases.<locals>.InBodyPhase.startTagFormcSs�d|j_dgddgddgd�}||d}xLt|jj�D]<}|j|kr^|jj�t|jd��P|j	t
kr8|jdkr8Pq8W|jjd	d
d�r�|jj�td	d��|j�|�dS)NFrrr)rrrr=rm)r�r*r'r'r%)rj)
rHr_�reversedr;rxr=r\r�r��	nameTuplerrkr�)r?r�ZstopNamesMapZ	stopNamesr�r(r(r)r=[s"


z/getPhases.<locals>.InBodyPhase.startTagListItemcSs>|jjddd�r|�td��|j�|�|jjj|jj_dS)Nr'r%)rj)	r;rkrYr�r�rHrKr[rY)r?r�r(r(r)r>qsz0getPhases.<locals>.InBodyPhase.startTagPlaintextcSsb|jjddd�r|�td��|jjdjtkrR|j�dd|di�|jj�	�|j�
|�dS)Nr'r%)rjrpzunexpected-start-tagr=)r;rkrYr�rxr=rrHryr�r�)r?r�r(r(r)r:wsz.getPhases.<locals>.InBodyPhase.startTagHeadingcSs~|j�d�}|rf|j�dddd��|�td��||jjkrL|jj�|�||jjkrf|jj�|�|j�	�|�
|�dS)Nrz$unexpected-start-tag-implies-end-tag)�	startName�endName)r;�!elementInActiveFormattingElementsrHryr\r�rxr�r`rcra)r?r�ZafeAElementr(r(r)r?s
z(getPhases.<locals>.InBodyPhase.startTagAcSs|j��|�|�dS)N)r;rcra)r?r�r(r(r)r@�s
z1getPhases.<locals>.InBodyPhase.startTagFormattingcSsP|j��|j�d�rB|j�dddd��|�td��|j��|�|�dS)Nr$z$unexpected-start-tag-implies-end-tag)rorp)r;rcrkrHryr�r�ra)r?r�r(r(r)rA�s

z+getPhases.<locals>.InBodyPhase.startTagNobrcSsT|j�d�r2|j�dddd��|�td��|S|j��|j�|�d|j_dS)Nr%z$unexpected-start-tag-implies-end-tag)rorpF)	r;rkrHryr�r�rcr�r_)r?r�r(r(r)rB�s
z-getPhases.<locals>.InBodyPhase.startTagButtoncSs0|j��|j�|�|jj�t�d|j_dS)NF)r;rcr�r`r�rrHr_)r?r�r(r(r)rC�s
z:getPhases.<locals>.InBodyPhase.startTagAppletMarqueeObjectcSsB|jjddd�r|�td��|j��d|j_|j�|d�dS)Nr'r%)rjFr�)r;rkrYr�rcrHr_r�)r?r�r(r(r)rD�s

z*getPhases.<locals>.InBodyPhase.startTagXmpcSsR|jjdkr*|jjddd�r*|�td��|j�|�d|j_|jjd|j_	dS)Nr�r'r%)rjFr�)
rHrVr;rkr�r�r�r_rEr\)r?r�r(r(r)rE�sz,getPhases.<locals>.InBodyPhase.startTagTablecSs6|j��|j�|�|jj��d|d<d|j_dS)NTrvF)r;rcr�rxr�rHr_)r?r�r(r(r)rF�s

z5getPhases.<locals>.InBodyPhase.startTagVoidFormattingcSs@|jj}|�|�d|dkr<|dd�t�dkr<||j_dS)Nr1rq�hidden)rHr_rFrgr)r?r�r_r(r(r)rH�s

z,getPhases.<locals>.InBodyPhase.startTagInputcSs$|j�|�|jj��d|d<dS)NTrv)r;r�rxr�)r?r�r(r(r)rG�sz2getPhases.<locals>.InBodyPhase.startTagParamSourcecSsJ|jjddd�r|�td��|j�|�|jj��d|d<d|j_dS)Nr'r%)rjTrvF)	r;rkrYr�r�rxr�rHr_)r?r�r(r(r)rI�sz)getPhases.<locals>.InBodyPhase.startTagHrcSs6|j�dddd��|�tdd|d|dd��dS)	Nzunexpected-start-tag-treated-asr-r()�originalName�newNamerlrqru)rfru)rHryr�r�)r?r�r(r(r)rJ�s

z,getPhases.<locals>.InBodyPhase.startTagImagecSs|j�dddi�|jjrdSi}d|dkr>|dd|d<|�tdd|d��|�td	d��|�td
d��d|dkr�|dd}nd}|�td
|d��|d��}d|kr�|d=d|kr�|d=d|d<|�tdd||dd��|�	td
��|�td	d��|�	td��dS)Nzdeprecated-tagr=r.�actionrqrrl)rfr,Zlabel�promptz3This is a searchable index. Enter search keywords: rk)r1rqr+ru)rfru)
rHryr;rlr�r�r~r�copyr�)r?r�Z
form_attrsrvrfr(r(r)rK�s6


z.getPhases.<locals>.InBodyPhase.startTagIsIndexcSs0|j�|�|jjj|jj_|j|_d|j_dS)NF)	r;r�rHrKrXrYrdrr_)r?r�r(r(r)rL�sz/getPhases.<locals>.InBodyPhase.startTagTextareacSsd|j_|�|�dS)NF)rHr_rN)r?r�r(r(r)rMsz-getPhases.<locals>.InBodyPhase.startTagIFramecSs"|jjr|�|�n
|�|�dS)N)rHrJrNr�)r?r�r(r(r)r�sz/getPhases.<locals>.InBodyPhase.startTagNoscriptcSs|j�|d�dS)z8iframe, noembed noframes, noscript(if scripting enabled)r�N)rHr�)r?r�r(r(r)rN
sz.getPhases.<locals>.InBodyPhase.startTagRawtextcSs@|jjdjdkr$|jj�td��|j��|jj�|�dS)Nrpr2)	r;rxr=rHr\r�r�rcr�)r?r�r(r(r)rQs
z*getPhases.<locals>.InBodyPhase.startTagOptcSs�|j��|j�|�d|j_|jj|jjd|jjd|jjd|jjd|jjd|jjdfkrx|jjd|j_n|jjd	|j_dS)
NFr�r�r�r�r�r��inSelectInTabler�)r;rcr�rHr_r\rE)r?r�r(r(r)rOs




z-getPhases.<locals>.InBodyPhase.startTagSelectcSsB|j�d�r2|j��|jjdjdkr2|j��|j�|�dS)N�rubyrp)r;rk�generateImpliedEndTagsrxr=rHryr�)r?r�r(r(r)rP%s


z+getPhases.<locals>.InBodyPhase.startTagRpRtcSsZ|j��|j�|�|j�|�td|d<|j�|�|drV|jj��d|d<dS)NrcreruTrv)	r;rcrHrrrr�rxr�)r?r�r(r(r)rR,s
z+getPhases.<locals>.InBodyPhase.startTagMathcSsZ|j��|j�|�|j�|�td|d<|j�|�|drV|jj��d|d<dS)NrsreruTrv)	r;rcrHrrrr�rxr�)r?r�r(r(r)rS8s
z*getPhases.<locals>.InBodyPhase.startTagSvgcSs|j�dd|di�dS)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"
            zunexpected-start-tag-ignoredr=N)rHry)r?r�r(r(r)rTDsz0getPhases.<locals>.InBodyPhase.startTagMisplacedcSs|j��|j�|�dS)N)r;rcr�)r?r�r(r(r)r�Ms
z,getPhases.<locals>.InBodyPhase.startTagOthercSs�|jjddd�sD|�tdd��|j�dddi�|�tdd��nX|j�d�|jjdj	dkrt|j�dddi�|jj�
�}x|j	dkr�|jj�
�}q�WdS)	Nr'r%)rjrlzunexpected-end-tagr=rmrp)r;rkr9r�rHryrYrzrxr=r�)r?r�r�r(r(r)rYQsz&getPhases.<locals>.InBodyPhase.endTagPcSs�|j�d�s|j��dS|jjdjdkrlx>|jjdd�D]*}|jtd�kr>|j�dd|jd��Pq>W|jjd|j_dS)Nr�rp�)rrrr3r2r'r0r1r�r�r�r�r�r�r�r�z$expected-one-end-tag-but-got-another)�gotName�expectedName�	afterBody)	r;rkrHryrxr=r}rEr\)r?r�r�r(r(r)rU^s
z)getPhases.<locals>.InBodyPhase.endTagBodycSs"|j�d�r|�td��|SdS)Nr�)r;rkrUr�)r?r�r(r(r)rVpsz)getPhases.<locals>.InBodyPhase.endTagHtmlcSs�|ddkr|j|_|j�|d�}|r2|j��|jjdj|dkr^|j�dd|di�|r�|jj�	�}x|j|dkr�|jj�	�}qpWdS)Nr=rrpzend-tag-too-early)
r7rr;rkrzrxr=rHryr�)r?r�ZinScoper�r(r(r)rWvs
z*getPhases.<locals>.InBodyPhase.endTagBlockcSsv|jj}d|j_|dks$|j�|�s8|j�dddi�n:|j��|jjd|krd|j�dddi�|jj�|�dS)Nzunexpected-end-tagr=rrpzend-tag-too-early-ignored)r;rlrkrHryrzrxr�)r?r�r�r(r(r)rX�s

z)getPhases.<locals>.InBodyPhase.endTagFormcSs�|ddkrd}nd}|jj|d|d�sB|j�dd|di�nj|jj|dd�|jjdj|dkr�|j�dd|di�|jj��}x|j|dkr�|jj��}q�WdS)	Nr=r�list)rjzunexpected-end-tag)�excluderpzend-tag-too-early)r;rkrHryrzrxr=r�)r?r�rjr�r(r(r)rZ�sz-getPhases.<locals>.InBodyPhase.endTagListItemcSs�x$tD]}|j�|�r|j��PqW|jjdj|dkrR|j�dd|di�xBtD]:}|j�|�rX|jj��}x|jtkr�|jj��}qvWPqXWdS)Nrpr=zend-tag-too-early)	rr;rkrzrxr=rHryr�)r?r��itemr(r(r)r[�s


z,getPhases.<locals>.InBodyPhase.endTagHeadingcSsd}�x|dk�r|d7}|j�|d�}|rH||jjkrV|j�|j�sV|�|�dS||jjkr�|j�dd|di�|jj�	|�dS|j�|j�s�|j�dd|di�dS||jjdkr�|j�d	d|di�|jj�
|�}d}x,|jj|d�D]}|jtk�r�|}P�q�W|dk�r^|jj�
�}x||k�rJ|jj�
�}�q0W|jj�	|�dS|jj|d}|jj�
|�}|}	}
d}|jj�
|
�}x�|d
k�rd|d7}|d8}|jj|}
|
|jjk�r�|jj�	|
��q�|
|k�r�P|	|k�r|jj�
|
�d}|
��}
|
|jj|jj�
|
�<|
|jj|jj�
|
�<|
}
|	j�rR|	j�|	�|
�|	�|
}	�q�W|	j�rz|	j�|	�|jtd�k�r�|j��\}}|�|	|�n
|�|	�|��}
|�|
�|�|
�|jj�	|�|jj�||
�|jj�	|�|jj�|jj�
|�d|
�qWdS)z)The much-feared adoption agency algorithmr�rr=Nzadoption-agency-1.2zadoption-agency-4.4rpzadoption-agency-1.3r_)r�r�r�r�r�)r;rqrxrkr=r�rHryr`r��indexrnrr�Z	cloneNoderhriZappendChildr}ZgetTableMisnestedNodePosition�insertBeforeZreparentChildren�insert)r?r�ZouterLoopCounterZformattingElementZafeIndexZ
furthestBlockrhZcommonAncestorZbookmarkZlastNoder�ZinnerLoopCounterr�Zclonerhr�r(r(r)r\�s�











z/getPhases.<locals>.InBodyPhase.endTagFormattingcSs�|j�|d�r|j��|jjdj|dkrF|j�dd|di�|j�|d�r�|jj��}x|j|dkr�|jj��}qdW|j��dS)Nr=rpzend-tag-too-early)	r;rkrzrxr=rHryr��clearActiveFormattingElements)r?r�rhr(r(r)r]Ts
z8getPhases.<locals>.InBodyPhase.endTagAppletMarqueeObjectcSs@|j�dddd��|j��|j�tdd��|jj��dS)Nzunexpected-end-tag-treated-asr�z
br element)rsrtrl)rHryr;rcr�r�rxr�)r?r�r(r(r)r�`s

z'getPhases.<locals>.InBodyPhase.endTagBrcSs�x�|jjddd�D]�}|j|dkr~|jj|dd�|jjdj|dkrd|j�dd|di�x|jj��|krxqfWPq|jtkr|j�dd|di�PqWdS)Nrpr=)r�zunexpected-end-tag)	r;rxr=rzrHryr�rnr)r?r�r�r(r(r)r�gs
z*getPhases.<locals>.InBodyPhase.endTagOtherN)6r6r7r8rGr^rar�rdr~r7r8r�r�r9r;r<r=r>r:r?r@rArBrCrDrErFrHrGrIrJrKrLrMr�rNrQrOrPrRrSrTr�rYrUrVrWrXrZr[r\r]r�r�r()r�r(r)�InBodyPhase�shG

	

	

$r�cs@eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)zgetPhases.<locals>.TextPhasecsF��|||�t�g�|_|j|j_t�d|jfg�|_|j|j_dS)Nr�)	rGr
r�r�r�r��endTagScriptr�r�)r?rHr;)r�r(r)rGvs
z%getPhases.<locals>.TextPhase.__init__cSs|j�|d�dS)Nrq)r;r�)r?r�r(r(r)r~~sz.getPhases.<locals>.TextPhase.processCharacterscSs8|j�dd|jjdji�|jj��|jj|j_dS)Nz&expected-named-closing-tag-but-got-eofr=rpT)rHryr;rxr=r�r�r\)r?r(r(r)r��s
z'getPhases.<locals>.TextPhase.processEOFcSsdstd|d��dS)NFz4Tried to process start tag %s in RCDATA/RAWTEXT moder=)r�)r?r�r(r(r)r��sz*getPhases.<locals>.TextPhase.startTagOthercSs*|jj��}|jdkst�|jj|j_dS)Nr�)r;rxr�r=r�rHr�r\)r?r�r�r(r(r)r��sz)getPhases.<locals>.TextPhase.endTagScriptcSs|jj��|jj|j_dS)N)r;rxr�rHr�r\)r?r�r(r(r)r��sz(getPhases.<locals>.TextPhase.endTagOtherN)	r6r7r8rGr~r�r�r�r�r()r�r(r)�	TextPhaseusr�cs�eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'S)(zgetPhases.<locals>.InTablePhasec
s���|||�t�d|jfd|jfd|jfd|jfd|jfd|jfd|j	fd|j
fd	|jfd
|jfg
�|_
|j|j
_t�d|jfd|jfg�|_|j|j_dS)Nr�r�r�r5)r�r�r�)r�r�r�r�)r�r�r+r)r�r�r5r�r�r�r�r�r�r�r�)rGr
r�r��startTagCaption�startTagColgroup�startTagCol�startTagRowGroup�startTagImplyTbodyrE�startTagStyleScriptrHr<r�r�r��endTagTable�endTagIgnorer�r�)r?rHr;)r�r(r)rG�s$
z(getPhases.<locals>.InTablePhase.__init__cSs(x"|jjdjdkr"|jj��qWdS)Nrp)r�r�)r;rxr=r�)r?r(r(r)�clearStackToTableContext�sz8getPhases.<locals>.InTablePhase.clearStackToTableContextcSs0|jjdjdkr |j�d�n|jjs,t�dS)Nrpr�zeof-in-table)r;rxr=rHryrOr�)r?r(r(r)r��sz*getPhases.<locals>.InTablePhase.processEOFcSs4|jj}|jjd|j_||jj_|jj�|�dS)N�inTableText)rHr\rEr�r)r?r�r�r(r(r)r�s
z6getPhases.<locals>.InTablePhase.processSpaceCharacterscSs4|jj}|jjd|j_||jj_|jj�|�dS)Nr�)rHr\rEr�r~)r?r�r�r(r(r)r~�s
z1getPhases.<locals>.InTablePhase.processCharacterscSs&d|j_|jjd�|�d|j_dS)NTr�F)r;�insertFromTablerHrEr~)r?r�r(r(r)r��sz*getPhases.<locals>.InTablePhase.insertTextcSs6|��|jj�t�|j�|�|jjd|j_dS)Nr�)	r�r;r`r�rr�rHrEr\)r?r�r(r(r)r��sz/getPhases.<locals>.InTablePhase.startTagCaptioncSs(|��|j�|�|jjd|j_dS)Nr�)r�r;r�rHrEr\)r?r�r(r(r)r��sz0getPhases.<locals>.InTablePhase.startTagColgroupcSs|�tdd��|S)Nr�rl)r�r�)r?r�r(r(r)r��sz+getPhases.<locals>.InTablePhase.startTagColcSs(|��|j�|�|jjd|j_dS)Nr�)r�r;r�rHrEr\)r?r�r(r(r)r��sz0getPhases.<locals>.InTablePhase.startTagRowGroupcSs|�tdd��|S)Nr�rl)r�r�)r?r�r(r(r)r��sz2getPhases.<locals>.InTablePhase.startTagImplyTbodycSs6|j�dddd��|jj�td��|jjs2|SdS)Nz$unexpected-start-tag-implies-end-tagr�)rorp)rHryr\r�r�rO)r?r�r(r(r)rE�s
z-getPhases.<locals>.InTablePhase.startTagTablecSs|jjd�|�S)Nr�)rHrEr�)r?r�r(r(r)r��sz3getPhases.<locals>.InTablePhase.startTagStyleScriptcSsVd|dkrH|dd�t�dkrH|j�d�|j�|�|jj��n
|�|�dS)Nr1rqrrz unexpected-hidden-input-in-table)	rgrrHryr;r�rxr�r�)r?r�r(r(r)rH�sz-getPhases.<locals>.InTablePhase.startTagInputcSsD|j�d�|jjdkr@|j�|�|jjd|j_|jj��dS)Nzunexpected-form-in-tablerp)rHryr;rlr�rxr�)r?r�r(r(r)r<�s
z,getPhases.<locals>.InTablePhase.startTagFormcSs<|j�dd|di�d|j_|jjd�|�d|j_dS)Nz)unexpected-start-tag-implies-table-voodoor=Tr�F)rHryr;r�rEr�)r?r�r(r(r)r�sz-getPhases.<locals>.InTablePhase.startTagOthercSs�|jjddd�r�|j��|jjdjdkrJ|j�dd|jjdjd��x"|jjdjdkrl|jj��qLW|jj��|j��n|jj	s�t
�|j��dS)Nr�)rjrpzend-tag-too-early-named)r|r})r;rkrzrxr=rHryr�r^rOr�)r?r�r(r(r)r�
s
z+getPhases.<locals>.InTablePhase.endTagTablecSs|j�dd|di�dS)Nzunexpected-end-tagr=)rHry)r?r�r(r(r)r�sz,getPhases.<locals>.InTablePhase.endTagIgnorecSs<|j�dd|di�d|j_|jjd�|�d|j_dS)Nz'unexpected-end-tag-implies-table-voodoor=Tr�F)rHryr;r�rEr�)r?r�r(r(r)r� sz+getPhases.<locals>.InTablePhase.endTagOtherN)r6r7r8rGr�r�rr~r�r�r�r�r�r�rEr�rHr<r�r�r�r�r()r�r(r)�InTablePhase�s&	
r�csPeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)z#getPhases.<locals>.InTableTextPhasecs��|||�d|_g|_dS)N)rGr��characterTokens)r?rHr;)r�r(r)rG(sz,getPhases.<locals>.InTableTextPhase.__init__cSsdd�dd�|jD��}tdd�|D��rJtd|d�}|jjd�|�n|rZ|j�|�g|_dS)Nr�cSsg|]}|d�qS)rqr()r<r�r(r(r)r@.szGgetPhases.<locals>.InTableTextPhase.flushCharacters.<locals>.<listcomp>cSsg|]}|tk�qSr()r)r<r�r(r(r)r@/srk)r1rqr�)�joinr�rgrrHrEr�r;)r?rqr�r(r(r)�flushCharacters-sz3getPhases.<locals>.InTableTextPhase.flushCharacterscSs|��|j|j_|S)N)r�r�rHr\)r?r�r(r(r)r�6s
z2getPhases.<locals>.InTableTextPhase.processCommentcSs|��|j|j_dS)NT)r�r�rHr\)r?r(r(r)r�;s
z.getPhases.<locals>.InTableTextPhase.processEOFcSs |ddkrdS|j�|�dS)Nrqre)r�r�)r?r�r(r(r)r~@sz5getPhases.<locals>.InTableTextPhase.processCharacterscSs|j�|�dS)N)r�r�)r?r�r(r(r)rEsz:getPhases.<locals>.InTableTextPhase.processSpaceCharacterscSs|��|j|j_|S)N)r�r�rHr\)r?r�r(r(r)r�Js
z3getPhases.<locals>.InTableTextPhase.processStartTagcSs|��|j|j_|S)N)r�r�rHr\)r?r�r(r(r)r�Os
z1getPhases.<locals>.InTableTextPhase.processEndTagN)r6r7r8rGr�r�r�r~rr�r�r()r�r(r)�InTableTextPhase's	r�cs`eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)z!getPhases.<locals>.InCaptionPhasecsf��|||�t�d|jfd|jfg�|_|j|j_t�d|jfd|j	fd|j
fg�|_|j|j_dS)Nr�)	r�r5r�r�r�r�r�r�r�r�r�)
r�r5r�r�r�r�r�r�r�r�)
rGr
r�r��startTagTableElementr�r�r��
endTagCaptionr�r�r�r�)r?rHr;)r�r(r)rGVs
z*getPhases.<locals>.InCaptionPhase.__init__cSs|jjddd�S)Nr�r�)rj)r;rk)r?r(r(r)�ignoreEndTagCaptionhsz5getPhases.<locals>.InCaptionPhase.ignoreEndTagCaptioncSs|jjd��dS)Nr�)rHrEr�)r?r(r(r)r�ksz,getPhases.<locals>.InCaptionPhase.processEOFcSs|jjd�|�S)Nr�)rHrEr~)r?r�r(r(r)r~nsz3getPhases.<locals>.InCaptionPhase.processCharacterscSs0|j��|��}|jj�td��|s,|SdS)Nr�)rHryr�r\r�r�)r?r��ignoreEndTagr(r(r)r�qs

z6getPhases.<locals>.InCaptionPhase.startTagTableElementcSs|jjd�|�S)Nr�)rHrEr�)r?r�r(r(r)r�ysz/getPhases.<locals>.InCaptionPhase.startTagOthercSs�|��s�|j��|jjdjdkrB|j�dd|jjdjd��x"|jjdjdkrd|jj��qDW|jj��|j��|jj	d|j_
n|jjs�t�|j��dS)Nrpr�z$expected-one-end-tag-but-got-another)r|r}r�)
r�r;rzrxr=rHryr�r�rEr\rOr�)r?r�r(r(r)r�|s

z/getPhases.<locals>.InCaptionPhase.endTagCaptioncSs0|j��|��}|jj�td��|s,|SdS)Nr�)rHryr�r\r�r�)r?r�r�r(r(r)r��s

z-getPhases.<locals>.InCaptionPhase.endTagTablecSs|j�dd|di�dS)Nzunexpected-end-tagr=)rHry)r?r�r(r(r)r��sz.getPhases.<locals>.InCaptionPhase.endTagIgnorecSs|jjd�|�S)Nr�)rHrEr�)r?r�r(r(r)r��sz-getPhases.<locals>.InCaptionPhase.endTagOtherN)
r6r7r8rGr�r�r~r�r�r�r�r�r�r()r�r(r)�InCaptionPhaseTsr�csXeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)z%getPhases.<locals>.InColumnGroupPhasecs^��|||�t�d|jfd|jfg�|_|j|j_t�d|jfd|j	fg�|_
|j|j
_dS)Nr�r5r�)rGr
r�r�r�r�r�r��endTagColgroup�	endTagColr�r�)r?rHr;)r�r(r)rG�s
z.getPhases.<locals>.InColumnGroupPhase.__init__cSs|jjdjdkS)Nrpr�)r;rxr=)r?r(r(r)�ignoreEndTagColgroup�sz:getPhases.<locals>.InColumnGroupPhase.ignoreEndTagColgroupcSsD|jjdjdkr"|jjst�dS|��}|�td��|s@dSdS)Nrpr�r�T)	r;rxr=rHrOr�r�r�r�)r?r�r(r(r)r��sz0getPhases.<locals>.InColumnGroupPhase.processEOFcSs"|��}|�td��|s|SdS)Nr�)r�r�r�)r?r�r�r(r(r)r~�sz7getPhases.<locals>.InColumnGroupPhase.processCharacterscSs$|j�|�|jj��d|d<dS)NTrv)r;r�rxr�)r?r�r(r(r)r��sz1getPhases.<locals>.InColumnGroupPhase.startTagColcSs"|��}|�td��|s|SdS)Nr�)r�r�r�)r?r�r�r(r(r)r��sz3getPhases.<locals>.InColumnGroupPhase.startTagOthercSs@|��r |jjst�|j��n|jj��|jjd|j_	dS)Nr�)
r�rHrOr�ryr;rxr�rEr\)r?r�r(r(r)r��s
z4getPhases.<locals>.InColumnGroupPhase.endTagColgroupcSs|j�dddi�dS)Nz
no-end-tagr=r5)rHry)r?r�r(r(r)r��sz/getPhases.<locals>.InColumnGroupPhase.endTagColcSs"|��}|�td��|s|SdS)Nr�)r�r�r�)r?r�r�r(r(r)r��sz1getPhases.<locals>.InColumnGroupPhase.endTagOtherN)r6r7r8rGr�r�r~r�r�r�r�r�r()r�r(r)�InColumnGroupPhase�s
	r�csxeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)z#getPhases.<locals>.InTableBodyPhasecsv��|||�t�d|jfd|jfd|jfd|jfg�|_|j|j_	t�d|j
fd|jfd|jfg�|_
|j|j
_	dS)Nr�r�)r�r�)r�r5r�r�r�r�)r�r�r�r�)r�r�r5r�r�r�r�r�)rGr
r�r��
startTagTr�startTagTableCell�startTagTableOtherr�r�r��endTagTableRowGroupr�r�r�r�)r?rHr;)r�r(r)rG�s
z,getPhases.<locals>.InTableBodyPhase.__init__cSsFx"|jjdjdkr"|jj��qW|jjdjdkrB|jjsBt�dS)Nrp)r�r�r�r�r�)r;rxr=r�rHrOr�)r?r(r(r)�clearStackToTableBodyContext�sz@getPhases.<locals>.InTableBodyPhase.clearStackToTableBodyContextcSs|jjd��dS)Nr�)rHrEr�)r?r(r(r)r��sz.getPhases.<locals>.InTableBodyPhase.processEOFcSs|jjd�|�S)Nr�)rHrEr)r?r�r(r(r)rsz:getPhases.<locals>.InTableBodyPhase.processSpaceCharacterscSs|jjd�|�S)Nr�)rHrEr~)r?r�r(r(r)r~sz5getPhases.<locals>.InTableBodyPhase.processCharacterscSs(|��|j�|�|jjd|j_dS)Nr�)r�r;r�rHrEr\)r?r�r(r(r)r�sz.getPhases.<locals>.InTableBodyPhase.startTagTrcSs*|j�dd|di�|�tdd��|S)Nzunexpected-cell-in-table-bodyr=r�rl)rHryr�r�)r?r�r(r(r)r�sz5getPhases.<locals>.InTableBodyPhase.startTagTableCellcSsn|jjddd�s0|jjddd�s0|jjddd�rT|��|�t|jjdj��|S|jjs`t	�|j�
�dS)Nr�r�)rjr�r�rp)r;rkr�r�r�rxr=rHrOr�ry)r?r�r(r(r)r�sz6getPhases.<locals>.InTableBodyPhase.startTagTableOthercSs|jjd�|�S)Nr�)rHrEr�)r?r�r(r(r)r�sz1getPhases.<locals>.InTableBodyPhase.startTagOthercSsT|jj|ddd�r:|��|jj��|jjd|j_n|j�dd|di�dS)Nr=r�)rjr�z unexpected-end-tag-in-table-body)	r;rkr�rxr�rHrEr\ry)r?r�r(r(r)r�"sz7getPhases.<locals>.InTableBodyPhase.endTagTableRowGroupcSsn|jjddd�s0|jjddd�s0|jjddd�rT|��|�t|jjdj��|S|jjs`t	�|j�
�dS)Nr�r�)rjr�r�rp)r;rkr�r�r�rxr=rHrOr�ry)r?r�r(r(r)r�+sz/getPhases.<locals>.InTableBodyPhase.endTagTablecSs|j�dd|di�dS)Nz unexpected-end-tag-in-table-bodyr=)rHry)r?r�r(r(r)r�8sz0getPhases.<locals>.InTableBodyPhase.endTagIgnorecSs|jjd�|�S)Nr�)rHrEr�)r?r�r(r(r)r�<sz/getPhases.<locals>.InTableBodyPhase.endTagOtherN)r6r7r8rGr�r�rr~r�r�r�r�r�r�r�r�r()r�r(r)�InTableBodyPhase�s
	
r�cs�eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)zgetPhases.<locals>.InRowPhasecsv��|||�t�d|jfd|jfd|jfg�|_|j|j_t�d|j	fd|j
fd|jfd|jfg�|_
|j|j
_dS)Nr�)r�r�)r�r5r�r�r�r�r�r�r�)r�r�r�)r�r�r5r�r�r�r�)rGr
r�r�r�r�r�r�r��endTagTrr�r�r�r�r�)r?rHr;)r�r(r)rGAs
z&getPhases.<locals>.InRowPhase.__init__cSsDx>|jjdjdkr>|j�dd|jjdji�|jj��qWdS)Nrp)r�r�z'unexpected-implied-end-tag-in-table-rowr=)r;rxr=rHryr�)r?r(r(r)�clearStackToTableRowContextUsz9getPhases.<locals>.InRowPhase.clearStackToTableRowContextcSs|jjddd�S)Nr�r�)rj)r;rk)r?r(r(r)�ignoreEndTagTr[sz,getPhases.<locals>.InRowPhase.ignoreEndTagTrcSs|jjd��dS)Nr�)rHrEr�)r?r(r(r)r�_sz(getPhases.<locals>.InRowPhase.processEOFcSs|jjd�|�S)Nr�)rHrEr)r?r�r(r(r)rbsz4getPhases.<locals>.InRowPhase.processSpaceCharacterscSs|jjd�|�S)Nr�)rHrEr~)r?r�r(r(r)r~esz/getPhases.<locals>.InRowPhase.processCharacterscSs6|��|j�|�|jjd|j_|jj�t�dS)Nr�)	r�r;r�rHrEr\r`r�r)r?r�r(r(r)r�hsz/getPhases.<locals>.InRowPhase.startTagTableCellcSs"|��}|�td��|s|SdS)Nr�)r�r�r�)r?r�r�r(r(r)r�nsz0getPhases.<locals>.InRowPhase.startTagTableOthercSs|jjd�|�S)Nr�)rHrEr�)r?r�r(r(r)r�usz+getPhases.<locals>.InRowPhase.startTagOthercSsH|��s.|��|jj��|jjd|j_n|jjs:t	�|j�
�dS)Nr�)r�r�r;rxr�rHrEr\rOr�ry)r?r�r(r(r)r�xsz&getPhases.<locals>.InRowPhase.endTagTrcSs"|��}|�td��|s|SdS)Nr�)r�r�r�)r?r�r�r(r(r)r��sz)getPhases.<locals>.InRowPhase.endTagTablecSs4|jj|ddd�r&|�td��|S|j��dS)Nr=r�)rjr�)r;rkr�r�rHry)r?r�r(r(r)r��sz1getPhases.<locals>.InRowPhase.endTagTableRowGroupcSs|j�dd|di�dS)Nzunexpected-end-tag-in-table-rowr=)rHry)r?r�r(r(r)r��sz*getPhases.<locals>.InRowPhase.endTagIgnorecSs|jjd�|�S)Nr�)rHrEr�)r?r�r(r(r)r��sz)getPhases.<locals>.InRowPhase.endTagOtherN)r6r7r8rGr�r�r�rr~r�r�r�r�r�r�r�r�r()r�r(r)�
InRowPhase?s
r�cs`eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)zgetPhases.<locals>.InCellPhasecsf��|||�t�d|jfd|jfg�|_|j|j_t�d|jfd|j	fd|j
fg�|_|j|j_dS)Nr�)	r�r5r�r�r�r�r�r�r�)r�r�)r�r�r5r�r�)r�r�r�r�r�)
rGr
r�r�r�r�r�r��endTagTableCellr��endTagImplyr�r�)r?rHr;)r�r(r)rG�s
z'getPhases.<locals>.InCellPhase.__init__cSsB|jjddd�r |�td��n|jjddd�r>|�td��dS)Nr�r�)rjr�)r;rkr�r�)r?r(r(r)�	closeCell�sz(getPhases.<locals>.InCellPhase.closeCellcSs|jjd��dS)Nr�)rHrEr�)r?r(r(r)r��sz)getPhases.<locals>.InCellPhase.processEOFcSs|jjd�|�S)Nr�)rHrEr~)r?r�r(r(r)r~�sz0getPhases.<locals>.InCellPhase.processCharacterscSsF|jjddd�s |jjddd�r,|��|S|jjs8t�|j��dS)Nr�r�)rjr�)r;rkr�rHrOr�ry)r?r�r(r(r)r��sz1getPhases.<locals>.InCellPhase.startTagTableOthercSs|jjd�|�S)Nr�)rHrEr�)r?r�r(r(r)r��sz,getPhases.<locals>.InCellPhase.startTagOthercSs�|jj|ddd�r�|j�|d�|jjdj|dkrt|j�dd|di�x.|jj��}|j|dkrRPqRWn|jj��|j��|jj	d|j_
n|j�dd|di�dS)Nr=r�)rjrpzunexpected-cell-end-tagr�zunexpected-end-tag)r;rkrzrxr=rHryr�r�rEr\)r?r�r�r(r(r)r��s
z.getPhases.<locals>.InCellPhase.endTagTableCellcSs|j�dd|di�dS)Nzunexpected-end-tagr=)rHry)r?r�r(r(r)r��sz+getPhases.<locals>.InCellPhase.endTagIgnorecSs.|jj|ddd�r |��|S|j��dS)Nr=r�)rj)r;rkr�rHry)r?r�r(r(r)r��sz*getPhases.<locals>.InCellPhase.endTagImplycSs|jjd�|�S)Nr�)rHrEr�)r?r�r(r(r)r��sz*getPhases.<locals>.InCellPhase.endTagOtherN)
r6r7r8rGr�r�r~r�r�r�r�r�r�r()r�r(r)�InCellPhase�s
r�csxeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)z getPhases.<locals>.InSelectPhasec	s���|||�t�d|jfd|jfd|jfd|jfd|jfd|jfg�|_	|j
|j	_t�d|jfd|j
fd|jfg�|_|j|j_dS)Nr�r2r3r�)r+r)r/r�)rGr
r�r��startTagOption�startTagOptgrouprOrHr�r�r�r��endTagOption�endTagOptgroup�endTagSelectr�r�)r?rHr;)r�r(r)rG�s
z)getPhases.<locals>.InSelectPhase.__init__cSs0|jjdjdkr |j�d�n|jjs,t�dS)Nrpr�z
eof-in-select)r;rxr=rHryrOr�)r?r(r(r)r��sz+getPhases.<locals>.InSelectPhase.processEOFcSs$|ddkrdS|j�|d�dS)Nrqre)r;r�)r?r�r(r(r)r~	sz2getPhases.<locals>.InSelectPhase.processCharacterscSs.|jjdjdkr|jj��|j�|�dS)Nrpr2)r;rxr=r�r�)r?r�r(r(r)r�	sz/getPhases.<locals>.InSelectPhase.startTagOptioncSsL|jjdjdkr|jj��|jjdjdkr<|jj��|j�|�dS)Nrpr2r3)r;rxr=r�r�)r?r�r(r(r)r�	s
z1getPhases.<locals>.InSelectPhase.startTagOptgroupcSs|j�d�|�td��dS)Nzunexpected-select-in-selectr�)rHryr�r�)r?r�r(r(r)rO	sz/getPhases.<locals>.InSelectPhase.startTagSelectcSs>|j�d�|jjddd�r.|�td��|S|jjs:t�dS)Nzunexpected-input-in-selectr�)rj)rHryr;rkr�r�rOr�)r?r�r(r(r)rH	s
z.getPhases.<locals>.InSelectPhase.startTagInputcSs|jjd�|�S)Nr�)rHrEr�)r?r�r(r(r)r�	sz/getPhases.<locals>.InSelectPhase.startTagScriptcSs|j�dd|di�dS)Nzunexpected-start-tag-in-selectr=)rHry)r?r�r(r(r)r�!	sz.getPhases.<locals>.InSelectPhase.startTagOthercSs6|jjdjdkr |jj��n|j�dddi�dS)Nrpr2zunexpected-end-tag-in-selectr=)r;rxr=r�rHry)r?r�r(r(r)r�%	sz-getPhases.<locals>.InSelectPhase.endTagOptioncSsf|jjdjdkr0|jjdjdkr0|jj��|jjdjdkrP|jj��n|j�dddi�dS)Nrpr2���r3zunexpected-end-tag-in-selectr=)r;rxr=r�rHry)r?r�r(r(r)r�,	sz/getPhases.<locals>.InSelectPhase.endTagOptgroupcSs^|jjddd�rD|jj��}x|jdkr6|jj��}qW|j��n|jjsPt�|j�	�dS)Nr�)rj)
r;rkrxr�r=rHr^rOr�ry)r?r�r�r(r(r)r�9	sz-getPhases.<locals>.InSelectPhase.endTagSelectcSs|j�dd|di�dS)Nzunexpected-end-tag-in-selectr=)rHry)r?r�r(r(r)r�D	sz,getPhases.<locals>.InSelectPhase.endTagOtherN)r6r7r8rGr�r~r�r�rOrHr�r�r�r�r�r�r()r�r(r)�
InSelectPhase�s
r�csHeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)z'getPhases.<locals>.InSelectInTablePhasecsN��|||�t�d|jfg�|_|j|j_t�d|jfg�|_|j	|j_dS)N)r�r�r�r�r�r�r�r�)
rGr
r�rEr�r�r�r�r�r�)r?rHr;)r�r(r)rGI	s
z0getPhases.<locals>.InSelectInTablePhase.__init__cSs|jjd��dS)Nr�)rHrEr�)r?r(r(r)r�X	sz2getPhases.<locals>.InSelectInTablePhase.processEOFcSs|jjd�|�S)Nr�)rHrEr~)r?r�r(r(r)r~[	sz9getPhases.<locals>.InSelectInTablePhase.processCharacterscSs(|j�dd|di�|�td��|S)Nz5unexpected-table-element-start-tag-in-select-in-tabler=r�)rHryr�r�)r?r�r(r(r)rE^	sz5getPhases.<locals>.InSelectInTablePhase.startTagTablecSs|jjd�|�S)Nr�)rHrEr�)r?r�r(r(r)r�c	sz5getPhases.<locals>.InSelectInTablePhase.startTagOthercSs@|j�dd|di�|jj|ddd�r<|�td��|SdS)Nz3unexpected-table-element-end-tag-in-select-in-tabler=r�)rjr�)rHryr;rkr�r�)r?r�r(r(r)r�f	sz3getPhases.<locals>.InSelectInTablePhase.endTagTablecSs|jjd�|�S)Nr�)rHrEr�)r?r�r(r(r)r�l	sz3getPhases.<locals>.InSelectInTablePhase.endTagOtherN)
r6r7r8rGr�r~rEr�r�r�r()r�r(r)�InSelectInTablePhaseH	sr�c-s�eZdZeddddddddd	d
ddd
ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,g,�Z�fd-d.�Zd/d0�Z�fd1d2�Zd3d4�Zd5d6�Z	d7S)8z(getPhases.<locals>.InForeignContentPhaserrr�r�r�rrrr*rrrr'Zh1Zh2Zh3Zh4Zh5Zh6r�r,rr(rrrr3r$r
r'rryrr�spanr!r �subZsupr�r"r#r�varcs��|||�dS)N)rG)r?rHr;)r�r(r)rGy	sz1getPhases.<locals>.InForeignContentPhase.__init__c%Ssnddddddddd	d
ddd
ddddddddddddddddddd d!d"d#d$d%�$}|d&|krj||d&|d&<dS)'NZaltGlyphZaltGlyphDefZaltGlyphItemZanimateColorZ
animateMotionZanimateTransformZclipPathZfeBlendZ
feColorMatrixZfeComponentTransferZfeCompositeZfeConvolveMatrixZfeDiffuseLightingZfeDisplacementMapZfeDistantLightZfeFloodZfeFuncAZfeFuncBZfeFuncGZfeFuncRZfeGaussianBlurZfeImageZfeMergeZfeMergeNodeZfeMorphologyZfeOffsetZfePointLightZfeSpecularLightingZfeSpotLightZfeTileZfeTurbulenceZ
foreignObjectZglyphRefZlinearGradientZradialGradientZtextPath)$ZaltglyphZaltglyphdefZaltglyphitemZanimatecolorZ
animatemotionZanimatetransformZclippathZfeblendZ
fecolormatrixZfecomponenttransferZfecompositeZfeconvolvematrixZfediffuselightingZfedisplacementmapZfedistantlightZfefloodZfefuncaZfefuncbZfefuncgZfefuncrZfegaussianblurZfeimageZfemergeZfemergenodeZfemorphologyZfeoffsetZfepointlightZfespecularlightingZfespotlightZfetileZfeturbulenceZ
foreignobjectZglyphrefZlineargradientZradialgradientZtextpathr=r()r?r��replacementsr(r(r)�adjustSVGTagNames|	sLz:getPhases.<locals>.InForeignContentPhase.adjustSVGTagNamescsL|ddkrd|d<n&|jjr<tdd�|dD��r<d|j_��||�dS)Nrqreu�css|]}|tkVqdS)N)r)r<rfr(r(r)r��	szMgetPhases.<locals>.InForeignContentPhase.processCharacters.<locals>.<genexpr>F)rHr_rgr~)r?r�)r�r(r)r~�	s
z:getPhases.<locals>.InForeignContentPhase.processCharacterscSs2|jjd}|d|jksD|ddkr�t|d���tdddg�@r�|j�dd|di�xN|jjdj|jjkr�|j�	|jjd�s�|j�
|jjd�s�|jj��q\W|S|jtd	kr�|j�
|�n$|jtd
kr�|�|�|j�|�|j�|�|j|d<|j�|�|d�r.|jj��d
|d<dS)Nrpr=rrqZcolorZface�sizez*unexpected-html-element-in-foreign-contentrcrsreruTrv)r;rx�breakoutElements�set�keysrHryrer|rirjr�rrr�rrr�)r?r�r�r(r(r)r��	s.



z8getPhases.<locals>.InForeignContentPhase.processStartTagcSs�t|jj�d}|jjd}|j�t�|dkrF|j�dd|di�x�|j�t�|dkr�|jj|jj	dkr�|jj�
�|jjj|j_x |jj��|kr�|jjs�t
�q�Wd}P|d8}|jj|}|j|jjkr�qHqH|jj�|�}PqHW|S)Nrrpr=zunexpected-end-tagr�)r{r;rxr=rgrrHryr\rEr�r�r�r�rer|r�)r?r�Z	nodeIndexr�r�r(r(r)r��	s(z6getPhases.<locals>.InForeignContentPhase.processEndTagN)
r6r7r8r}r�rGr�r~r�r�r()r�r(r)�InForeignContentPhaseo	s


)r�csPeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)z!getPhases.<locals>.AfterBodyPhasecsN��|||�t�d|jfg�|_|j|j_t�d|jfg�|_|j	|j_dS)Nr�)
rGr
r�r�r�r�r�rVr�r�)r?rHr;)r�r(r)rG�	s
z*getPhases.<locals>.AfterBodyPhase.__init__cSsdS)Nr()r?r(r(r)r��	sz,getPhases.<locals>.AfterBodyPhase.processEOFcSs|j�||jjd�dS)Nr)r;r�rx)r?r�r(r(r)r��	sz0getPhases.<locals>.AfterBodyPhase.processCommentcSs |j�d�|jjd|j_|S)Nzunexpected-char-after-bodyr�)rHryrEr\)r?r�r(r(r)r~�	sz3getPhases.<locals>.AfterBodyPhase.processCharacterscSs|jjd�|�S)Nr�)rHrEr�)r?r�r(r(r)r��	sz.getPhases.<locals>.AfterBodyPhase.startTagHtmlcSs*|j�dd|di�|jjd|j_|S)Nzunexpected-start-tag-after-bodyr=r�)rHryrEr\)r?r�r(r(r)r��	sz/getPhases.<locals>.AfterBodyPhase.startTagOthercSs*|jjr|j�d�n|jjd|j_dS)Nz'unexpected-end-tag-after-body-innerhtml�afterAfterBody)rHrOryrEr\)r?r=r(r(r)rV
sz,getPhases.<locals>.AfterBodyPhase.endTagHtmlcSs*|j�dd|di�|jjd|j_|S)Nzunexpected-end-tag-after-bodyr=r�)rHryrEr\)r?r�r(r(r)r�
sz-getPhases.<locals>.AfterBodyPhase.endTagOtherN)r6r7r8rGr�r�r~r�r�rVr�r()r�r(r)�AfterBodyPhase�	sr�csXeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)z"getPhases.<locals>.InFramesetPhasecsf��|||�t�d|jfd|jfd|jfd|jfg�|_|j|j_	t�d|j
fg�|_|j|j_	dS)Nr�r�r6r�)
rGr
r�r�r��
startTagFrame�startTagNoframesr�r�r��endTagFramesetr�r�)r?rHr;)r�r(r)rG
s
z+getPhases.<locals>.InFramesetPhase.__init__cSs0|jjdjdkr |j�d�n|jjs,t�dS)Nrpr�zeof-in-frameset)r;rxr=rHryrOr�)r?r(r(r)r�#
sz-getPhases.<locals>.InFramesetPhase.processEOFcSs|j�d�dS)Nzunexpected-char-in-frameset)rHry)r?r�r(r(r)r~)
sz4getPhases.<locals>.InFramesetPhase.processCharacterscSs|j�|�dS)N)r;r�)r?r�r(r(r)r�,
sz3getPhases.<locals>.InFramesetPhase.startTagFramesetcSs|j�|�|jj��dS)N)r;r�rxr�)r?r�r(r(r)r�/
sz0getPhases.<locals>.InFramesetPhase.startTagFramecSs|jjd�|�S)Nr�)rHrEr�)r?r�r(r(r)r�3
sz3getPhases.<locals>.InFramesetPhase.startTagNoframescSs|j�dd|di�dS)Nz unexpected-start-tag-in-framesetr=)rHry)r?r�r(r(r)r�6
sz0getPhases.<locals>.InFramesetPhase.startTagOthercSsZ|jjdjdkr |j�d�n|jj��|jjsV|jjdjdkrV|jjd|j_dS)Nrpr�z)unexpected-frameset-in-frameset-innerhtmlr��
afterFrameset)	r;rxr=rHryr�rOrEr\)r?r�r(r(r)r�:
sz1getPhases.<locals>.InFramesetPhase.endTagFramesetcSs|j�dd|di�dS)Nzunexpected-end-tag-in-framesetr=)rHry)r?r�r(r(r)r�F
sz.getPhases.<locals>.InFramesetPhase.endTagOtherN)r6r7r8rGr�r~r�r�r�r�r�r�r()r�r(r)�InFramesetPhase
sr�csHeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)z%getPhases.<locals>.AfterFramesetPhasecsV��|||�t�d|jfd|jfg�|_|j|j_t�d|jfg�|_	|j
|j	_dS)Nr�r�)rGr
r�r�r�r�r�r�rVr�r�)r?rHr;)r�r(r)rGL
s
z.getPhases.<locals>.AfterFramesetPhase.__init__cSsdS)Nr()r?r(r(r)r�Z
sz0getPhases.<locals>.AfterFramesetPhase.processEOFcSs|j�d�dS)Nzunexpected-char-after-frameset)rHry)r?r�r(r(r)r~^
sz7getPhases.<locals>.AfterFramesetPhase.processCharacterscSs|jjd�|�S)Nr�)rHrEr�)r?r�r(r(r)r�a
sz6getPhases.<locals>.AfterFramesetPhase.startTagNoframescSs|j�dd|di�dS)Nz#unexpected-start-tag-after-framesetr=)rHry)r?r�r(r(r)r�d
sz3getPhases.<locals>.AfterFramesetPhase.startTagOthercSs|jjd|j_dS)N�afterAfterFrameset)rHrEr\)r?r�r(r(r)rVh
sz0getPhases.<locals>.AfterFramesetPhase.endTagHtmlcSs|j�dd|di�dS)Nz!unexpected-end-tag-after-framesetr=)rHry)r?r�r(r(r)r�k
sz1getPhases.<locals>.AfterFramesetPhase.endTagOtherN)
r6r7r8rGr�r~r�r�rVr�r()r�r(r)�AfterFramesetPhaseJ
sr�csPeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)z&getPhases.<locals>.AfterAfterBodyPhasecs0��|||�t�d|jfg�|_|j|j_dS)Nr�)rGr
r�r�r�r�r�)r?rHr;)r�r(r)rGp
sz/getPhases.<locals>.AfterAfterBodyPhase.__init__cSsdS)Nr()r?r(r(r)r�x
sz1getPhases.<locals>.AfterAfterBodyPhase.processEOFcSs|j�||jj�dS)N)r;r�r�)r?r�r(r(r)r�{
sz5getPhases.<locals>.AfterAfterBodyPhase.processCommentcSs|jjd�|�S)Nr�)rHrEr)r?r�r(r(r)r~
sz=getPhases.<locals>.AfterAfterBodyPhase.processSpaceCharacterscSs |j�d�|jjd|j_|S)Nzexpected-eof-but-got-charr�)rHryrEr\)r?r�r(r(r)r~�
sz8getPhases.<locals>.AfterAfterBodyPhase.processCharacterscSs|jjd�|�S)Nr�)rHrEr�)r?r�r(r(r)r��
sz3getPhases.<locals>.AfterAfterBodyPhase.startTagHtmlcSs*|j�dd|di�|jjd|j_|S)Nzexpected-eof-but-got-start-tagr=r�)rHryrEr\)r?r�r(r(r)r��
sz4getPhases.<locals>.AfterAfterBodyPhase.startTagOthercSs*|j�dd|di�|jjd|j_|S)Nzexpected-eof-but-got-end-tagr=r�)rHryrEr\)r?r�r(r(r)r��
sz4getPhases.<locals>.AfterAfterBodyPhase.processEndTagN)r6r7r8rGr�r�rr~r�r�r�r()r�r(r)�AfterAfterBodyPhaseo
sr�csXeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)z*getPhases.<locals>.AfterAfterFramesetPhasecs8��|||�t�d|jfd|jfg�|_|j|j_dS)Nr�r�)rGr
r�r��startTagNoFramesr�r�r�)r?rHr;)r�r(r)rG�
s
z3getPhases.<locals>.AfterAfterFramesetPhase.__init__cSsdS)Nr()r?r(r(r)r��
sz5getPhases.<locals>.AfterAfterFramesetPhase.processEOFcSs|j�||jj�dS)N)r;r�r�)r?r�r(r(r)r��
sz9getPhases.<locals>.AfterAfterFramesetPhase.processCommentcSs|jjd�|�S)Nr�)rHrEr)r?r�r(r(r)r�
szAgetPhases.<locals>.AfterAfterFramesetPhase.processSpaceCharacterscSs|j�d�dS)Nzexpected-eof-but-got-char)rHry)r?r�r(r(r)r~�
sz<getPhases.<locals>.AfterAfterFramesetPhase.processCharacterscSs|jjd�|�S)Nr�)rHrEr�)r?r�r(r(r)r��
sz7getPhases.<locals>.AfterAfterFramesetPhase.startTagHtmlcSs|jjd�|�S)Nr�)rHrEr�)r?r�r(r(r)r��
sz;getPhases.<locals>.AfterAfterFramesetPhase.startTagNoFramescSs|j�dd|di�dS)Nzexpected-eof-but-got-start-tagr=)rHry)r?r�r(r(r)r��
sz8getPhases.<locals>.AfterAfterFramesetPhase.startTagOthercSs|j�dd|di�dS)Nzexpected-eof-but-got-end-tagr=)rHry)r?r�r(r(r)r��
sz8getPhases.<locals>.AfterAfterFramesetPhase.processEndTagN)r6r7r8rGr�r�rr~r�r�r�r�r()r�r(r)�AfterAfterFramesetPhase�
s	r�)rSrRr�r�r�r�r�r�r�r�r�r�r�r�r�r�rxrtr~r�r�r�r�)r)rFrUr�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)rD�sp)#.g@CX!-GBbYLd's/9%&&rDcs>t|d�t��@}|r:t�fdd�|d��D��|d<dS)Nrqc3s"|]\}}��||�|fVqdS)N)rz)r<�k�v)r�r(r)r��
sz$adjust_attributes.<locals>.<genexpr>)rrr-)r�r�Zneeds_adjustmentr()r�r)r��
sr�rmFcCs|dkri}t||||d�S)N)r1r=rqru)r)r=r1rfrur(r(r)r��
s
r�c@seZdZdZdS)rozError in parsed documentN)r6r7r8r�r(r(r(r)ro�
sro)rT)r*rT)rmNF).Z
__future__rrrZsixrrr/�collectionsrr�r	r
rZtreebuilders.baserr
Z	constantsrrrrrrrrrrrrr�rrrrr"r,r:r&r!ZmemoizerDr�r��	Exceptionror(r(r(r)�<module>sLH

GL


Youez - 2016 - github.com/yon3zu
LinuXploit