t_@sddlmZmZmZddlmZmZddlZddlm Z ddlm Z ddlm Z ddl m Z dd lmZdd lmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z d d d dZ!dd d ddZ"ddZ#Gddde$Z%ej&ddZ'ddZ(dddddZ)Gddde*Z+dS) )absolute_importdivisionunicode_literals)with_metaclassviewkeysN) _inputstream) _tokenizer) treebuilders)Marker)_utils)spaceCharactersasciiUpper2LowerspecialElementsheadingElements cdataElementsrcdataElements tokenTypes tagTokenTypes namespaceshtmlIntegrationPointElements"mathmlTextIntegrationPointElementsadjustForeignAttributesadjustMathMLAttributesadjustSVGAttributesE_ReparseExceptionetreeTcKs1tj|}t|d|}|j||S)aParse 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('

This is a doc

') namespaceHTMLElements)r getTreeBuilder HTMLParserparse)doc treebuilderrkwargstbpr'/builddir/build/BUILDROOT/alt-python35-pip-20.2.4-1.el7.x86_64/opt/alt/python35/lib/python3.5/site-packages/pip/_vendor/html5lib/html5parser.pyr!sr!divcKs7tj|}t|d|}|j|d||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('this is a fragment') r container)r rr parseFragment)r"r*r#rr$r%r&r'r'r(r+1sr+cs Gfdddt}|S)Ncs"eZdZfddZdS)z-method_decorator_metaclass..Decoratedcs[xB|jD]4\}}t|tjr7|}|||.Decorated.__new__N)__name__ __module__ __qualname__r1r')r8r'r( DecoratedKs r<)r0)r8r<r')r8r(method_decorator_metaclassJsr=c@seZdZdZddddddZddddd Zd d Zed d ZddZ ddZ ddZ ddZ ddZ ddddZddZddZdd Zd!d"Zd#d$Zd%d&ZdS)'r z]HTML parser Generates a tree structure from a stream of (possibly malformed) HTML. NFTcsh|_|dkr$tjd}||_g_fddt|jD_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+i|]!\}}|j|qSr')tree).0namecls)selfr'r( ys z'HTMLParser.__init__..)strictr rr>errors getPhasesr,phases)rBr>rDrdebugr')rBr(__init__]s   zHTMLParser.__init__r)c Ks{||_||_||_tj|d|||_|jy|jWn&tk rv|j|jYnXdS)Nparser) innerHTMLModer* scriptingr HTMLTokenizer tokenizerresetmainLoopr)rBstream innerHTMLr*rLr$r'r'r(_parse|s      zHTMLParser._parsecCs|jjd|_g|_g|_d|_|jr|jj|_ |j t krp|j j |j _ nH|j tkr|j j|j _ n$|j dkr|j j|j _ n|jd|_|jj|jnd|_ |jd|_d|_d|_d|_dS)NFz no quirks plaintext beforeHtmlinitialT)r>rO firstStartTagrElog compatModerKr*lowerrRrrN rcdataStatestater rawtextStateplaintextStaterGphaseinsertHtmlElementresetInsertionMode lastPhasebeforeRCDataPhase framesetOK)rBr'r'r(rOs*           zHTMLParser.resetcCs't|dsdS|jjjdjS)zName of the character encoding that was used to decode the input stream, or :obj:`None` if that is not determined yet rNNr)hasattrrNrQ charEncodingr@)rBr'r'r(documentEncodingszHTMLParser.documentEncodingcCse|jdkrK|jtdkrKd|jkoJ|jdjtdkS|j|jftkSdS)Nzannotation-xmlmathmlencoding text/htmlapplication/xhtml+xml)rjrk)r@ namespacer attributes translaterr)rBelementr'r'r(isHTMLIntegrationPoints z!HTMLParser.isHTMLIntegrationPointcCs|j|jftkS)N)rlr@r)rBror'r'r(isMathMLTextIntegrationPointsz'HTMLParser.isMathMLTextIntegrationPointcCs5td}td}td}td}td}td}td}x|jD]}d} |} x:| dk r| } |jjr|jjdnd} | r| jnd} | r| jnd} | d }||kr|j| d | jd id} qet|jjd ks| |jj ks|j | ru||krc|d t ddgks|||fks| t dkr| dkr||kr|d dks|j | r||||fkr|j}n |jd}||kr|j| } qe||kr&|j| } qe||krD|j| } qe||krb|j| } qe||kr|j| } qe||kre|j| } qeW||krP| drP| d rP|jdd | d iqPWd}g}xD|r0|j|j|jj}|r|j|kstqWdS)N CharactersSpaceCharactersStartTagEndTagCommentDoctype ParseErrorrr0datadatavarsrr@mglyph malignmarkrhzannotation-xmlsvginForeignContent selfClosingselfClosingAcknowledgedz&non-void-element-with-trailing-solidusT)rrNr> openElementsrlr@ parseErrorgetlendefaultNamespacerq frozensetrrpr_rGprocessCharactersprocessSpaceCharactersprocessStartTag processEndTagprocessCommentprocessDoctypeappend processEOFAssertionError)rBCharactersTokenSpaceCharactersToken StartTagToken EndTagToken CommentToken DoctypeTokenParseErrorTokentoken prev_token new_token currentNodecurrentNodeNamespacecurrentNodeNamer0r_ reprocessrGr'r'r(rPsp       "                  zHTMLParser.mainLoopcOs&|j|dd|||jjS)aParse 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('

This is a doc

') FN)rSr> getDocument)rBrQargsr$r'r'r(r!szHTMLParser.parsecOs#|j|d|||jjS)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('this is a fragment') T)rSr> getFragment)rBrQrr$r'r'r(r+szHTMLParser.parseFragmentzXXX-undefined-errorcCsX|dkri}|jj|jjj||f|jrTtt||dS)N)rErrNrQpositionrDrxr)rB errorcoderzr'r'r(r;s  % zHTMLParser.parseErrorcCst|tdS)N)adjust_attributesr)rBrr'r'r(rCsz!HTMLParser.adjustMathMLAttributescCst|tdS)N)rr)rBrr'r'r(rFszHTMLParser.adjustSVGAttributescCst|tdS)N)radjustForeignAttributesMap)rBrr'r'r(rIsz"HTMLParser.adjustForeignAttributescCs|jjdS)N)rJr_)rBrr'r'r(reparseTokenNormalLszHTMLParser.reparseTokenNormalcCsCd}ddddddddd d d d d d d dddddddddddddi}x|jjdddD]}|j}d}||jjdkr|jstd}|j}|dkr|jst| r|j|jjkrqz||kr|j||}Pqz|rz|jd}PqzW||_dS)NFselectinSelecttdinCellthtrinRowtbody inTableBodytheadtfootcaption inCaptioncolgroup inColumnGrouptableinTableheadinBodybodyframeset inFramesethtml beforeHeadrrTr)rrrr) r>rr@rRrrlrrGr_)rBlastnewModesnodenodeName new_phaser'r'r(raPsB       zHTMLParser.resetInsertionModecCsu|dkst|jj||dkrC|jj|j_n|jj|j_|j|_|j d|_dS)NRAWTEXTRCDATAtext)rr) rr> insertElementrNr]r\r[r_ originalPhaserG)rBr contentTyper'r'r(parseRCDataRawtext|s  zHTMLParser.parseRCDataRawtext)r9r:r;__doc__rIrSrOpropertyrgrprqrPr!r+rrrrrrarr'r'r'r(r Vs"  "  C       ,r c.sdd}dd}Gdddt|||Gddd}Gd d d }Gd d d }Gd dd}Gddd}Gddd}GfdddGddd} Gfddd} GfdddGfddd} Gfddd} Gfdd d } Gfd!d"d"}Gfd#d$d$}Gfd%d&d&}Gd'd(d(}Gfd)d*d*}Gd+d,d,}Gfd-d.d.}Gfd/d0d0}Gd1d2d2}Gd3d4d4}d5|d6|d7|d8|d9|d:|d;d<| d=| d>d?| d@| dA| dB|dC|dD|dE|dF|dG|dH|dI|dJ|dK|iS)LNcs2ddtjDfdd}|S)z4Logger that records which phase processes each tokencSsi|]\}}||qSr'r')r?keyvaluer'r'r(rCs z*getPhases..log..csjjdrt|dkr|d}d|di}|dtkr`|d|d<|jjj|jjjj|jj j j|j jj|f|||S|||SdS)Nprocessrr0r@) r9 startswithrrrJrXrrNr\r_ __class__)rBrr$rinfo)r8 type_namesr'r(wrappeds$   z'getPhases..log..wrapped)rr,)r8rr')r8rr(rXszgetPhases..logcSs|rt|StSdS)N)r=r0) use_metaclassmetaclass_funcr'r'r( getMetaclasss zgetPhases..getMetaclassc@seZdZdZdZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ dS)zgetPhases..PhasezNBase class for helper object that implements each phase of processing rJr>__startTagCache __endTagCachecSs(||_||_i|_i|_dS)N)rJr>_Phase__startTagCache_Phase__endTagCache)rBrJr>r'r'r(rIs   z!getPhases..Phase.__init__cSs tdS)N)NotImplementedError)rBr'r'r(rsz#getPhases..Phase.processEOFcSs!|jj||jjddS)Nrr)r> insertCommentr)rBrr'r'r(rsz'getPhases..Phase.processCommentcSs|jjddS)Nzunexpected-doctype)rJr)rBrr'r'r(rsz'getPhases..Phase.processDoctypecSs|jj|ddS)Nry)r> insertText)rBrr'r'r(rsz*getPhases..Phase.processCharacterscSs|jj|ddS)Nry)r>r)rBrr'r'r(rsz/getPhases..Phase.processSpaceCharacterscSs|d}||jkr)|j|}n`|j|}|j|.Phase.processStartTagcSs|jj r-|ddkr-|jjdxN|djD]<\}}||jjdjkr>||jjdj|Wd|j_dS)Nr@rz non-html-rootryrF)rJrWrr,r>rrm)rBrattrrr'r'r( startTagHtmls z%getPhases..Phase.startTagHtmlcSs|d}||jkr)|j|}n`|j|}|j|.Phase.processEndTagN)rJr>rr)r9r:r;r __slots__rIrrrrrrrrr'r'r'r(Phases         rc@syeZdZeZddZddZddZddZd d Z d d Z d dZ ddZ dS)zgetPhases..InitialPhasecSsdS)Nr')rBrr'r'r(rsz6getPhases..InitialPhase.processSpaceCharacterscSs|jj||jjdS)N)r>rdocument)rBrr'r'r(rsz.getPhases..InitialPhase.processCommentc8Ssi|d}|d}|d}|d}|dksX|dk sX|dk rh|dkrh|jjd|dkrzd}|jj||dkr|jt}| s |ddks |jdJs |dKks |jdLr|dks |r|jdDkrdE|j_n6|jdMsC|jdNrO|dk rOdH|j_|jj dI|j_ dS)ONr@publicIdsystemIdcorrectrzabout:legacy-compatzunknown-doctype*+//silmaril//dtd html pro v0r11 19970101//4-//advasoft ltd//dtd html 3.0 aswedit + extensions//*-//as//dtd html 3.0 aswedit + extensions//-//ietf//dtd html 2.0 level 1//-//ietf//dtd html 2.0 level 2//&-//ietf//dtd html 2.0 strict level 1//&-//ietf//dtd html 2.0 strict level 2//-//ietf//dtd html 2.0 strict//-//ietf//dtd html 2.0//-//ietf//dtd html 2.1e//-//ietf//dtd html 3.0//-//ietf//dtd html 3.2 final//-//ietf//dtd html 3.2//-//ietf//dtd html 3//-//ietf//dtd html level 0//-//ietf//dtd html level 1//-//ietf//dtd html level 2//-//ietf//dtd html level 3//"-//ietf//dtd html strict level 0//"-//ietf//dtd html strict level 1//"-//ietf//dtd html strict level 2//"-//ietf//dtd html strict level 3//-//ietf//dtd html strict//-//ietf//dtd html//(-//metrius//dtd metrius presentational//5-//microsoft//dtd internet explorer 2.0 html strict//.-//microsoft//dtd internet explorer 2.0 html//0-//microsoft//dtd internet explorer 2.0 tables//5-//microsoft//dtd internet explorer 3.0 html strict//.-//microsoft//dtd internet explorer 3.0 html//0-//microsoft//dtd internet explorer 3.0 tables//#-//netscape comm. corp.//dtd html//*-//netscape comm. corp.//dtd strict html//*-//o'reilly and associates//dtd html 2.0//3-//o'reilly and associates//dtd html extended 1.0//;-//o'reilly and associates//dtd html extended relaxed 1.0//N-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//E-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//$-//spyglass//dtd html 2.0 extended//+-//sq//dtd html 2.0 hotmetal + extensions//--//sun microsystems corp.//dtd hotjava html//4-//sun microsystems corp.//dtd hotjava strict html//-//w3c//dtd html 3 1995-03-24//-//w3c//dtd html 3.2 draft//-//w3c//dtd html 3.2 final//-//w3c//dtd html 3.2//-//w3c//dtd html 3.2s draft//-//w3c//dtd html 4.0 frameset//#-//w3c//dtd html 4.0 transitional//(-//w3c//dtd html experimental 19960712//&-//w3c//dtd html experimental 970421//-//w3c//dtd w3 html//-//w3o//dtd w3 html 3.0//#-//webtechs//dtd mozilla html 2.0//-//webtechs//dtd mozilla html//$-//w3o//dtd w3 html strict 3.0//en//"-/w3c/dtd html 4.0 transitional/en -//w3c//dtd html 4.01 frameset//$-//w3c//dtd html 4.01 transitional//z:http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtdquirks -//w3c//dtd xhtml 1.0 frameset//$-//w3c//dtd xhtml 1.0 transitional//zlimited quirksrU)7rrrrrrrrrrrrrrrrrrrrrrrrrrrr r r r r rrrrrrrrrrrrrrrrrrr r!r"r#r$)r%r&r)r'r()r*r+)r'r() rJrr> insertDoctypernrrrZrYrGr_)rBrr@rrrr'r'r(rs              z.getPhases..InitialPhase.processDoctypecSs&d|j_|jjd|j_dS)Nr)rU)rJrYrGr_)rBr'r'r( anythingElseZs z,getPhases..InitialPhase.anythingElsecSs|jjd|j|S)Nzexpected-doctype-but-got-chars)rJrr-)rBrr'r'r(r^s z1getPhases..InitialPhase.processCharacterscSs+|jjdd|di|j|S)Nz"expected-doctype-but-got-start-tagr@)rJrr-)rBrr'r'r(rcs  z/getPhases..InitialPhase.processStartTagcSs+|jjdd|di|j|S)Nz expected-doctype-but-got-end-tagr@)rJrr-)rBrr'r'r(ris  z-getPhases..InitialPhase.processEndTagcSs|jjd|jdS)Nzexpected-doctype-but-got-eofT)rJrr-)rBr'r'r(ros z*getPhases..InitialPhase.processEOFN) r9r:r;tuplerrrrr-rrrrr'r'r'r( InitialPhases     _    r/c@smeZdZeZddZddZddZddZd d Z d d Z d dZ dS)z"getPhases..BeforeHtmlPhasecSs3|jjtdd|jjd|j_dS)Nrrtr)r> insertRootimpliedTagTokenrJrGr_)rBr'r'r(r`xsz4getPhases..BeforeHtmlPhase.insertHtmlElementcSs|jdS)NT)r`)rBr'r'r(r}s z-getPhases..BeforeHtmlPhase.processEOFcSs|jj||jjdS)N)r>rr)rBrr'r'r(rsz1getPhases..BeforeHtmlPhase.processCommentcSsdS)Nr')rBrr'r'r(rsz9getPhases..BeforeHtmlPhase.processSpaceCharacterscSs|j|S)N)r`)rBrr'r'r(rs z4getPhases..BeforeHtmlPhase.processCharacterscSs*|ddkrd|j_|j|S)Nr@rT)rJrWr`)rBrr'r'r(rs  z2getPhases..BeforeHtmlPhase.processStartTagcSsB|ddkr0|jjdd|din|j|SdS)Nr@rrrbrzunexpected-end-tag-before-html)rrrr2)rJrr`)rBrr'r'r(rs   z0getPhases..BeforeHtmlPhase.processEndTagN) r9r:r;r.rr`rrrrrrr'r'r'r(BeforeHtmlPhasets        r3c@seZdZeZddZddZddZddZd d Z d d Z d dZ ddZ e jdefde fgZe e_e jde fgZe e_dS)z"getPhases..BeforeHeadPhasecSs|jtdddS)NrrtT) startTagHeadr1)rBr'r'r(rsz-getPhases..BeforeHeadPhase.processEOFcSsdS)Nr')rBrr'r'r(rsz9getPhases..BeforeHeadPhase.processSpaceCharacterscSs|jtdd|S)Nrrt)r4r1)rBrr'r'r(rsz4getPhases..BeforeHeadPhase.processCharacterscSs|jjdj|S)Nr)rJrGr)rBrr'r'r(rsz/getPhases..BeforeHeadPhase.startTagHtmlcSs@|jj||jjd|j_|jjd|j_dS)NrinHeadr)r>rr headPointerrJrGr_)rBrr'r'r(r4sz/getPhases..BeforeHeadPhase.startTagHeadcSs|jtdd|S)Nrrt)r4r1)rBrr'r'r( startTagOthersz0getPhases..BeforeHeadPhase.startTagOthercSs|jtdd|S)Nrrt)r4r1)rBrr'r'r(endTagImplyHeadsz2getPhases..BeforeHeadPhase.endTagImplyHeadcSs!|jjdd|didS)Nzend-tag-after-implied-rootr@)rJr)rBrr'r'r( endTagOthers z.getPhases..BeforeHeadPhase.endTagOtherrrrr2N)rrrr2)r9r:r;r.rrrrrr4r7r8r9r MethodDispatcherrdefaultrr'r'r'r(BeforeHeadPhases            r<c @sWeZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZddZddZddZejdefd e fd/e fd#e fd$efd0e fd*e fd+efgZee_ejd+efd1efgZee_d.S)2zgetPhases..InHeadPhasecSs|jdS)NT)r-)rBr'r'r(rs z)getPhases..InHeadPhase.processEOFcSs|j|S)N)r-)rBrr'r'r(rs z0getPhases..InHeadPhase.processCharacterscSs|jjdj|S)Nr)rJrGr)rBrr'r'r(rsz+getPhases..InHeadPhase.startTagHtmlcSs|jjddS)Nz!two-heads-are-not-better-than-one)rJr)rBrr'r'r(r4sz+getPhases..InHeadPhase.startTagHeadcSs.|jj||jjjd|drrr)rBrr'r'r(startTagBaseLinkCommandsz6getPhases..InHeadPhase.startTagBaseLinkCommandcSs|jj||jjjd|d<|d}|jjjjddkrd|kry|jjjj|dn{d|krd|kr|dj d krt j |dj d }t j |}|j}|jjjj|dS) NTrryr tentativecharsetcontentz http-equivz content-typezutf-8)r>rrrrJrNrQrfchangeEncodingrZr EncodingBytesencodeContentAttrParserr!)rBrrmryrJcodecr'r'r( startTagMetas      z+getPhases..InHeadPhase.startTagMetacSs|jj|ddS)Nr)rJr)rBrr'r'r( startTagTitlesz,getPhases..InHeadPhase.startTagTitlecSs|jj|ddS)Nr)rJr)rBrr'r'r(startTagNoFramesStylesz4getPhases..InHeadPhase.startTagNoFramesStylecSsL|jjr"|jj|dn&|jj||jjd|j_dS)NrinHeadNoscript)rJrLrr>rrGr_)rBrr'r'r(startTagNoscripts z/getPhases..InHeadPhase.startTagNoscriptcSsT|jj||jjj|jj_|jj|j_|jjd|j_dS)Nr) r>rrJrNscriptDataStater\r_rrG)rBrr'r'r(startTagScriptsz-getPhases..InHeadPhase.startTagScriptcSs|j|S)N)r-)rBrr'r'r(r7s z,getPhases..InHeadPhase.startTagOthercSsQ|jjjj}|jdks7td|j|jjd|j_dS)NrzExpected head got %s afterHead)rJr>rrr@rrGr_)rBrrr'r'r( endTagHead s"z)getPhases..InHeadPhase.endTagHeadcSs|j|S)N)r-)rBrr'r'r(endTagHtmlBodyBrs z/getPhases..InHeadPhase.endTagHtmlBodyBrcSs!|jjdd|didS)Nzunexpected-end-tagr@)rJr)rBrr'r'r(r9sz*getPhases..InHeadPhase.endTagOthercSs|jtddS)Nr)rNr1)rBr'r'r(r-sz+getPhases..InHeadPhase.anythingElsertitlenoframesstylenoscriptscriptbasebasefontbgsoundcommandlinkr2rr2rN)rQrR)rUrVrWrXrY)r2rr)r9r:r;r.rrrrr4r=rFrGrHrJrLr7rNrOr9r-r r:rr;rr'r'r'r( InHeadPhases>                         rZc@seZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZejde fd$e fd%e fgZe e_ejd!e fd"efgZee_d#S)&z&getPhases..InHeadNoscriptPhasecSs|jjd|jdS)Nzeof-in-head-noscriptT)rJrr-)rBr'r'r(r/s z1getPhases..InHeadNoscriptPhase.processEOFcSs|jjdj|S)Nr5)rJrGr)rBrr'r'r(r4sz5getPhases..InHeadNoscriptPhase.processCommentcSs|jjd|j|S)Nzchar-in-head-noscript)rJrr-)rBrr'r'r(r7s z8getPhases..InHeadNoscriptPhase.processCharacterscSs|jjdj|S)Nr5)rJrGr)rBrr'r'r(r<sz=getPhases..InHeadNoscriptPhase.processSpaceCharacterscSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r?sz3getPhases..InHeadNoscriptPhase.startTagHtmlcSs|jjdj|S)Nr5)rJrGr)rBrr'r'r(r=Bsz>getPhases..InHeadNoscriptPhase.startTagBaseLinkCommandcSs!|jjdd|didS)Nzunexpected-start-tagr@)rJr)rBrr'r'r(startTagHeadNoscriptEsz;getPhases..InHeadNoscriptPhase.startTagHeadNoscriptcSs+|jjdd|di|j|S)Nzunexpected-inhead-noscript-tagr@)rJrr-)rBrr'r'r(r7Hs z4getPhases..InHeadNoscriptPhase.startTagOthercSsQ|jjjj}|jdks7td|j|jjd|j_dS)NrSzExpected noscript got %sr5)rJr>rrr@rrGr_)rBrrr'r'r(endTagNoscriptMs"z5getPhases..InHeadNoscriptPhase.endTagNoscriptcSs+|jjdd|di|j|S)Nzunexpected-inhead-noscript-tagr@)rJrr-)rBrr'r'r(endTagBrRs z/getPhases..InHeadNoscriptPhase.endTagBrcSs!|jjdd|didS)Nzunexpected-end-tagr@)rJr)rBrr'r'r(r9Wsz2getPhases..InHeadNoscriptPhase.endTagOthercSs|jtddS)NrS)r\r1)rBr'r'r(r-Zsz3getPhases..InHeadNoscriptPhase.anythingElserrVrWrYr2rQrRrrSr2N)rVrWrYr2rQrR)rrS)r9r:r;r.rrrrrrr=r[r7r\r]r9r-r r:rr;rr'r'r'r(InHeadNoscriptPhase,s,                  r^c @seZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZejdefdefde fd&e fd#e fgZe e_ejd'e fgZee_d%S)(z!getPhases..AfterHeadPhasecSs|jdS)NT)r-)rBr'r'r(rns z,getPhases..AfterHeadPhase.processEOFcSs|j|S)N)r-)rBrr'r'r(rrs z3getPhases..AfterHeadPhase.processCharacterscSs|jjdj|S)Nr)rJrGr)rBrr'r'r(rvsz.getPhases..AfterHeadPhase.startTagHtmlcSs6d|j_|jj||jjd|j_dS)NFr)rJrdr>rrGr_)rBrr'r'r( startTagBodyys z.getPhases..AfterHeadPhase.startTagBodycSs*|jj||jjd|j_dS)Nr)r>rrJrGr_)rBrr'r'r(startTagFrameset~sz2getPhases..AfterHeadPhase.startTagFramesetcSs|jjdd|di|jjj|jj|jjdj|xD|jjdddD])}|jdkrg|jjj |PqgWdS)Nz#unexpected-start-tag-out-of-my-headr@r5rrr) rJrr>rrr6rGrr@remove)rBrrr'r'r(startTagFromHeads  z2getPhases..AfterHeadPhase.startTagFromHeadcSs!|jjdd|didS)Nzunexpected-start-tagr@)rJr)rBrr'r'r(r4sz.getPhases..AfterHeadPhase.startTagHeadcSs|j|S)N)r-)rBrr'r'r(r7s z/getPhases..AfterHeadPhase.startTagOthercSs|j|S)N)r-)rBrr'r'r(rOs z2getPhases..AfterHeadPhase.endTagHtmlBodyBrcSs!|jjdd|didS)Nzunexpected-end-tagr@)rJr)rBrr'r'r(r9sz-getPhases..AfterHeadPhase.endTagOthercSs?|jjtdd|jjd|j_d|j_dS)NrrtrT)r>rr1rJrGr_rd)rBr'r'r(r-sz.getPhases..AfterHeadPhase.anythingElserrrrUrVrWrYr2rQrTrRrPrr2N) rUrVrWrYr2rQrTrRrP)rrr2)r9r:r;r.rrrrr_r`rbr4r7rOr9r-r r:rr;rr'r'r'r(AfterHeadPhaseks0                 rcc,s9eZdZdZfddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Zd:d;Z d<d=Z!d>d?Z"d@dAZ#dBdCZ$dDdEZ%dFdGZ&dHdIZ'dJdKZ(dLdMZ)dNdOZ*dPdQZ+dRdSZ,dTdUZ-dVdWZ.dXdYZ/dZd[Z0d\d]Z1d^d_Z2d`daZ3dbdcZ4dddeZ5dfdgZ6e7j8dhj9fde fdre fdse fdefe:efdefdefdefdefdefdefdefdefdefdefdefdefdefdefdefdefde fde!fde"fde#fde$fde&fde'fde%fde(fde)fde*fg!Z;e+e;_<e7j8dre-fdhe.fde/fde0fde,fde1fe:e2fde3fde4fde5fg Z=e6e=_<S)zgetPhases..InBodyPhasercs)t|j|||j|_dS)N)superrIprocessSpaceCharactersNonPrer)rBrr$) InBodyPhaserr'r(rIsz'getPhases..InBodyPhase.__init__cSs4|j|jko3|j|jko3|j|jkS)N)r@rlrm)rBnode1node2r'r'r(isMatchingFormattingElementsz:getPhases..InBodyPhase.isMatchingFormattingElementcSs|jj||jjd}g}xP|jjdddD]5}|tkrVPq@|j||r@|j|q@Wt|dkstt|dkr|jjj |d|jjj|dS)Nrrrr) r>rractiveFormattingElementsr rirrrra)rBrromatchingElementsrr'r'r(addFormattingElements  z3getPhases..InBodyPhase.addFormattingElementc SsTtd}xA|jjdddD]&}|j|kr&|jjdPq&WdS)Ndddtlir&rrrrrrrrrz expected-closing-tag-but-got-eof) rnrorpr&rrrrrrrrr)rr>rr@rJr)rBallowed_elementsrr'r'r(rs  z)getPhases..InBodyPhase.processEOFcSs|d}|j|_|jdre|jjdjdkre|jjd j re|dd}|r|jj|jj|dS) Nry rprelistingtextarear)rsrtrur) rerrr>rr@ hasContent#reconstructActiveFormattingElementsr)rBrryr'r'r(!processSpaceCharactersDropNewlines   z@getPhases..InBodyPhase.processSpaceCharactersDropNewlinecSsn|ddkrdS|jj|jj|d|jjrjtdd|dDrjd|j_dS)NrycSsg|]}|tkqSr')r )r?charr'r'r( s zDgetPhases..InBodyPhase.processCharacters..F)r>rwrrJrdany)rBrr'r'r(rs   z0getPhases..InBodyPhase.processCharacterscSs%|jj|jj|ddS)Nry)r>rwr)rBrr'r'r(res z;getPhases..InBodyPhase.processSpaceCharactersNonPrecSs|jjdj|S)Nr5)rJrGr)rBrr'r'r(startTagProcessInHeadsz4getPhases..InBodyPhase.startTagProcessInHeadcSs|jjdddit|jjdksJ|jjdjdkr_|jjstn]d|j_xN|dj D]<\}}||jjdj kr|||jjdj |rr@rRrrdr,rm)rBrrrr'r'r(r_s z+getPhases..InBodyPhase.startTagBodycSs|jjdddit|jjdksJ|jjdjdkr_|jjstn|jjsnn|jjdj r|jjdj j |jjdx-|jjdjdkr|jjj qW|jj ||jj d|j_dS) Nzunexpected-start-tagr@rrrrrr)rJrrr>rr@rRrrdparent removeChildrrrGr_)rBrr'r'r(r`s1 $z/getPhases..InBodyPhase.startTagFramesetcSs?|jjdddr+|jtd|jj|dS)Nr&variantbutton)r>elementInScopeendTagPr1r)rBrr'r'r(startTagClosePsz-getPhases..InBodyPhase.startTagClosePcSsW|jjdddr+|jtd|jj|d|j_|j|_dS)Nr&rrF) r>rrr1rrJrdrxr)rBrr'r'r(startTagPreListings  z1getPhases..InBodyPhase.startTagPreListingcSs}|jjr(|jjdddinQ|jjdddrS|jtd|jj||jjd|j_dS) Nzunexpected-start-tagr@formr&rrrr) r> formPointerrJrrrr1rr)rBrr'r'r( startTagForms  z+getPhases..InBodyPhase.startTagFormcSsd|j_ddgdddgdddgi}||d}xht|jjD]T}|j|kr|jjjt|jdP|j t krT|jd krTPqTW|jj d d d r|jjjtd d|jj |dS) NFrprornr@ruaddressr)r&rr)rr)r&) rJrdreversedr>rr@r_rr1 nameTuplerrr)rBr stopNamesMap stopNamesrr'r'r(startTagListItem&s"     z/getPhases..InBodyPhase.startTagListItemcSsW|jjdddr+|jtd|jj||jjj|jj_dS)Nr&rr) r>rrr1rrJrNr^r\)rBrr'r'r(startTagPlaintext<sz0getPhases..InBodyPhase.startTagPlaintextcSs|jjdddr+|jtd|jjdjtkrq|jjdd|di|jjj |jj |dS)Nr&rrrzunexpected-start-tagr@r) r>rrr1rr@rrJrrr)rBrr'r'r(startTagHeadingBs z.getPhases..InBodyPhase.startTagHeadingcSs|jjd}|r|jjdddddi|jtd||jjkro|jjj|||jjkr|jjj||jj |j |dS)Naz$unexpected-start-tag-implies-end-tag startNameendName) r>!elementInActiveFormattingElementsrJrendTagFormattingr1rrarkrwrm)rBr afeAElementr'r'r( startTagAJs  z(getPhases..InBodyPhase.startTagAcSs|jj|j|dS)N)r>rwrm)rBrr'r'r(startTagFormattingWs z1getPhases..InBodyPhase.startTagFormattingcSso|jj|jjdr^|jjdddddi|jtd|jj|j|dS)Nnobrz$unexpected-start-tag-implies-end-tagrr)r>rwrrJrrr1rm)rBrr'r'r( startTagNobr[s   z+getPhases..InBodyPhase.startTagNobrcSsu|jjdrH|jjdddddi|jtd|S|jj|jj|d|j_dS)Nrz$unexpected-start-tag-implies-end-tagrrF) r>rrJrrr1rwrrd)rBrr'r'r(startTagButtones  z-getPhases..InBodyPhase.startTagButtoncSs@|jj|jj||jjjtd|j_dS)NF)r>rwrrkrr rJrd)rBrr'r'r(startTagAppletMarqueeObjectps z:getPhases..InBodyPhase.startTagAppletMarqueeObjectcSs[|jjdddr+|jtd|jjd|j_|jj|ddS)Nr&rrFr)r>rrr1rwrJrdr)rBrr'r'r( startTagXmpvs   z*getPhases..InBodyPhase.startTagXmpcSss|jjdkr=|jjdddr=|jtd|jj|d|j_|jjd|j_ dS)Nr)r&rrFr) rJrYr>rrr1rrdrGr_)rBrr'r'r( startTagTable}s  z,getPhases..InBodyPhase.startTagTablecSsG|jj|jj||jjjd|drwrrrrJrd)rBrr'r'r(startTagVoidFormattings   z5getPhases..InBodyPhase.startTagVoidFormattingcSsV|jj}|j|d|dkrR|ddjtdkrR||j_dS)Nr0ryhidden)rJrdrrnr)rBrrdr'r'r( startTagInputs   z,getPhases..InBodyPhase.startTagInputcSs.|jj||jjjd|drrr)rBrr'r'r(startTagParamSourcesz2getPhases..InBodyPhase.startTagParamSourcecSse|jjdddr+|jtd|jj||jjjd|drrr1rrrrJrd)rBrr'r'r( startTagHrs  z)getPhases..InBodyPhase.startTagHrc SsM|jjdddddi|jtddd|dd |d dS) Nzunexpected-start-tag-treated-as originalNameimagenewNameimgrtrmryr)rJrrr1)rBrr'r'r( startTagImages   z,getPhases..InBodyPhase.startTagImagec Ss|jjdddi|jjr)dSi}d|dkrQ|dd|d<|jtddd||jtd d|jtd dd |dkr|dd }nd }|jd tdd|i|dj}d|kr|d=d |kr|d =d|d<|jtddd|d|d|j td |jtd d|j tddS)Nzdeprecated-tagr@isindexactionryrrtrmhrlabelpromptz3This is a searchable index. Enter search keywords: r0rrinputr) rJrr>rrr1rrcopyr)rBr form_attrsrrmr'r'r(startTagIsIndexs6     z.getPhases..InBodyPhase.startTagIsIndexcSsD|jj||jjj|jj_|j|_d|j_dS)NF) r>rrJrNr[r\rxrrd)rBrr'r'r(startTagTextareas z/getPhases..InBodyPhase.startTagTextareacSsd|j_|j|dS)NF)rJrdstartTagRawtext)rBrr'r'r(startTagIFrames z-getPhases..InBodyPhase.startTagIFramecSs-|jjr|j|n |j|dS)N)rJrLrr7)rBrr'r'r(rJs z/getPhases..InBodyPhase.startTagNoscriptcSs|jj|ddS)z8iframe, noembed noframes, noscript(if scripting enabled)rN)rJr)rBrr'r'r(rsz.getPhases..InBodyPhase.startTagRawtextcSsV|jjdjdkr2|jjjtd|jj|jjj|dS)Nroptionr) r>rr@rJr_rr1rwr)rBrr'r'r( startTagOpts z*getPhases..InBodyPhase.startTagOptcSs|jj|jj|d|j_|jj|jjd|jjd|jjd|jjd|jjd|jjdfkr|jjd|j_n|jjd |j_dS) NFrrrrrrinSelectInTabler)r>rwrrJrdr_rG)rBrr'r'r(startTagSelects      z-getPhases..InBodyPhase.startTagSelectcSsY|jjdrE|jj|jjdjdkrE|jj|jj|dS)Nrubyrr)r>rgenerateImpliedEndTagsrr@rJrr)rBrr'r'r( startTagRpRts   z+getPhases..InBodyPhase.startTagRpRtcSss|jj|jj||jj|td|d<|jj||dro|jjjd|drwrJrrrrrr)rBrr'r'r( startTagMaths  z+getPhases..InBodyPhase.startTagMathcSss|jj|jj||jj|td|d<|jj||dro|jjjd|drwrJrrrrrr)rBrr'r'r( startTagSvgs  z*getPhases..InBodyPhase.startTagSvgcSs!|jjdd|didS)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)rJr)rBrr'r'r(startTagMisplacedsz0getPhases..InBodyPhase.startTagMisplacedcSs!|jj|jj|dS)N)r>rwr)rBrr'r'r(r7s z,getPhases..InBodyPhase.startTagOthercSs|jjddds`|jtdd|jjdddi|jtddn||jjd|jjd j dkr|jjdddi|jjj }x%|j dkr|jjj }qWdS) Nr&rrrtzunexpected-end-tagr@rurr) r>rrr1rJrrrrr@r)rBrrr'r'r(rsz&getPhases..InBodyPhase.endTagPcSs|jjds#|jjdS|jjdjdkrxV|jjddD]>}|jtdkrS|jjdddd|jiPqSW|jjd|j_dS)Nrrrnrorpoptgrouprr&rprtrrrrrrrz$expected-one-end-tag-but-got-anothergotName expectedName afterBodyr)rnrorprrr&rrrrrrrrrr) r>rrJrrr@rrGr_)rBrrr'r'r( endTagBody)s    z)getPhases..InBodyPhase.endTagBodycSs-|jjdr)|jtd|SdS)Nr)r>rrr1)rBrr'r'r( endTagHtml;sz)getPhases..InBodyPhase.endTagHtmlcSs|ddkr|j|_|jj|d}|rE|jj|jjdj|dkr|jjdd|di|r|jjj }x)|j|dkr|jjj }qWdS)Nr@rsrzend-tag-too-earlyr) rerr>rrrr@rJrr)rBrinScoperr'r'r( endTagBlockAs  z*getPhases..InBodyPhase.endTagBlockcSs|jj}d|j_|dks7|jj| rS|jjdddinO|jj|jjd|kr|jjdddi|jjj|dS)Nzunexpected-end-tagr@rrzend-tag-too-early-ignoredr)r>rrrJrrrra)rBrrr'r'r( endTagFormOs      z)getPhases..InBodyPhase.endTagFormcSs|ddkrd}nd}|jj|dd|s[|jjdd|din|jjd|d|jjd j|dkr|jjdd|di|jjj}x)|j|dkr|jjj}qWdS) Nr@rplistrzunexpected-end-tagexcluderzend-tag-too-earlyr)r>rrJrrrr@r)rBrrrr'r'r(endTagListItem\s   z-getPhases..InBodyPhase.endTagListItemcSsx.tD]&}|jj|r|jjPqW|jjdj|dkrk|jjdd|dix[tD]S}|jj|rr|jjj}x%|jtkr|jjj}qWPqrWdS)Nrr@zend-tag-too-earlyr) rr>rrrr@rJrr)rBritemr'r'r( endTagHeadingms   z,getPhases..InBodyPhase.endTagHeadingcSs!d}x|dkr|d7}|jj|d}| sd||jjkru|jj|j ru|j|dS||jjkr|jjdd|di|jjj |dS|jj|js|jjdd|didS||jjdkr$|jjdd|di|jjj |}d}x4|jj|dD]}|j t krV|}PqVW|dkr|jjj }x"||kr|jjj }qW|jjj |dS|jj|d}|jjj |}|} } d} |jjj | } x | d kr*| d7} | d8} |jj| } | |jjkry|jjj | q!| |krP| |kr|jjj | d}| j} | |jj|jjj | <| |jj|jjj | <| } | jr| jj| | j| | } q!W| jrD| jj| |jtdkr|jj\}}|j| |n |j| |j} |j| |j| |jjj ||jjj|| |jjj ||jjj|jjj |d| q WdS)z)The much-feared adoption agency algorithmrrr@Nzadoption-agency-1.2zadoption-agency-4.4zadoption-agency-1.3rjrrrrrr)rrrrr)r>rrrr@r9rJrrkraindexrrr cloneNoder~r appendChildrgetTableMisnestedNodePosition insertBeforereparentChildreninsert)rBrouterLoopCounterformattingElementafeIndex furthestBlockrocommonAncestorbookmarklastNoderinnerLoopCounterrcloner~rr'r'r(r|s                   z/getPhases..InBodyPhase.endTagFormattingcSs|jj|dr#|jj|jjdj|dkr]|jjdd|di|jj|dr|jjj}x)|j|dkr|jjj}qW|jjdS)Nr@rzend-tag-too-earlyr) r>rrrr@rJrrclearActiveFormattingElements)rBrror'r'r(endTagAppletMarqueeObjects z8getPhases..InBodyPhase.endTagAppletMarqueeObjectcSsY|jjdddddi|jj|jjtdd|jjjdS)Nzunexpected-end-tag-treated-asrr2rz br elementrt)rJrr>rwrr1rr)rBrr'r'r(r]+s   z'getPhases..InBodyPhase.endTagBrcSsx|jjdddD]}|j|dkr|jjd|d|jjdj|dkr|jjdd|dix|jjj|krqWPq|jtkr|jjdd|diPqWdS)Nrr@rzunexpected-end-tagrr) r>rr@rrJrrrr)rBrrr'r'r(r92s z*getPhases..InBodyPhase.endTagOtherrrUrVrWrXrYr2rTrRrPrrrarticleaside blockquotecenterdetailsdirr)dlfieldset figcaptionfigurefooterheaderhgroupmainmenunavolr&sectionsummaryulrsrtrrprnrorTrbbigcodeemfontissmallstrikestrongtturrappletmarqueeobjectxmprarear2embedrkeygenwbrparamsourcetrackrrrrruiframerSnoembedrQrrrrrmathr}rcolrframerrrrrrrdialog)r) rUrVrWrXrYr2rTrRrP)rrrrrrrr)rrrrrrrrrrrr&rrr)rsrt)rprnro) rrrrrrrrrrrr)rrr)rr2rrr r )r r r )rrQ)rr)rr) rrrrrrrrrrr)rrrrrrrrrr)rrrrrrrrtrrrrrsrrr)rnrorp)rrrrrrrrrrrrrr)rrr)>r9r:r;rrIrirmrrxrrer}r_r`rrrrrrrrrrrrrrrrrrrrrrJrrrrrrrr7rrrrrrrrrr]r9r r:rrrr;rr')rfr)rr(rfs                                                                           rfc@seZdZeZddZddZddZddZd d Z e j gZ ee _ e j d efgZe e_ d S) zgetPhases..TextPhasecSs|jj|ddS)Nry)r>r)rBrr'r'r(rsz.getPhases..TextPhase.processCharacterscSsL|jjdd|jjdji|jjj|jj|j_dS)Nz&expected-named-closing-tag-but-got-eofr@rTr)rJrr>rr@rrr_)rBr'r'r(rs  z'getPhases..TextPhase.processEOFcSsdstd|ddS)NFz4Tried to process start tag %s in RCDATA/RAWTEXT moder@)r)rBrr'r'r(r7sz*getPhases..TextPhase.startTagOthercSs=|jjj}|jdks't|jj|j_dS)NrT)r>rrr@rrJrr_)rBrrr'r'r( endTagScriptsz)getPhases..TextPhase.endTagScriptcSs&|jjj|jj|j_dS)N)r>rrrJrr_)rBrr'r'r(r9sz(getPhases..TextPhase.endTagOtherrTN)r9r:r;r.rrrr7rr9r r:rr;rr'r'r'r( TextPhases        rc seZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZddZddZddZdd Zd!d"Zd#d$Zejd%jfd&e fd'e fd(e fd6e fd7efd/efd8efd2efd3efg Zee_ejd/efd9efgZee_d5S):zgetPhases..InTablePhasecSs4x-|jjdjdkr/|jjjqWdS)Nrrrr)rr)r>rr@r)rBr'r'r(clearStackToTableContextsz8getPhases..InTablePhase.clearStackToTableContextcSsB|jjdjdkr,|jjdn|jjs>tdS)Nrrz eof-in-tabler)r>rr@rJrrRr)rBr'r'r(rsz*getPhases..InTablePhase.processEOFcSsH|jj}|jjd|j_||jj_|jjj|dS)N inTableText)rJr_rGrr)rBrrr'r'r(rs z6getPhases..InTablePhase.processSpaceCharacterscSsH|jj}|jjd|j_||jj_|jjj|dS)Nr)rJr_rGrr)rBrrr'r'r(rs z1getPhases..InTablePhase.processCharacterscSs3d|j_|jjdj|d|j_dS)NTrF)r>insertFromTablerJrGr)rBrr'r'r(rs z*getPhases..InTablePhase.insertTextcSsG|j|jjjt|jj||jjd|j_dS)Nr) rr>rkrr rrJrGr_)rBrr'r'r(startTagCaptions z/getPhases..InTablePhase.startTagCaptioncSs4|j|jj||jjd|j_dS)Nr)rr>rrJrGr_)rBrr'r'r(startTagColgroups z0getPhases..InTablePhase.startTagColgroupcSs|jtdd|S)Nrrt)rr1)rBrr'r'r( startTagColsz+getPhases..InTablePhase.startTagColcSs4|j|jj||jjd|j_dS)Nr)rr>rrJrGr_)rBrr'r'r(startTagRowGroups z0getPhases..InTablePhase.startTagRowGroupcSs|jtdd|S)Nrrt)rr1)rBrr'r'r(startTagImplyTbodysz2getPhases..InTablePhase.startTagImplyTbodycSsL|jjdddddi|jjjtd|jjsH|SdS)Nz$unexpected-start-tag-implies-end-tagrrr)rJrr_rr1rR)rBrr'r'r(rs   z-getPhases..InTablePhase.startTagTablecSs|jjdj|S)Nr5)rJrGr)rBrr'r'r(startTagStyleScriptsz3getPhases..InTablePhase.startTagStyleScriptcSsqd|dkr`|ddjtdkr`|jjd|jj||jjjn |j|dS)Nr0ryrz unexpected-hidden-input-in-table) rnrrJrr>rrrr7)rBrr'r'r(rs z-getPhases..InTablePhase.startTagInputcSs\|jjd|jjdkrX|jj||jjd|j_|jjjdS)Nzunexpected-form-in-tablerr)rJrr>rrrr)rBrr'r'r(rs z,getPhases..InTablePhase.startTagFormcSsP|jjdd|did|j_|jjdj|d|j_dS)Nz)unexpected-start-tag-implies-table-voodoor@TrF)rJrr>rrGr)rBrr'r'r(r7s z-getPhases..InTablePhase.startTagOthercSs|jjdddr|jj|jjdjdkrj|jjdddd|jjdjix-|jjd jdkr|jjjqmW|jjj|jjn|jj st |jjdS) Nrrrzend-tag-too-early-namedrrrrr) r>rrrr@rJrrrarRr)rBrr'r'r( endTagTables  z+getPhases..InTablePhase.endTagTablecSs!|jjdd|didS)Nzunexpected-end-tagr@)rJr)rBrr'r'r( endTagIgnoresz,getPhases..InTablePhase.endTagIgnorecSsP|jjdd|did|j_|jjdj|d|j_dS)Nz'unexpected-end-tag-implies-table-voodoor@TrF)rJrr>rrGr)rBrr'r'r(r9s z+getPhases..InTablePhase.endTagOtherrrrrrrrrrrrrRrTrrrN)rrr)rrr)rRrT) rrrrrrrrrrr)r9r:r;r.rrrrrrrrrrrrrrrr7rr r9r r:rrr;rr')rr'r( InTablePhasesH                             r!cseZdZdZfddZddZddZd d Zd d Zd dZ ddZ ddZ S)z#getPhases..InTableTextPhasercharacterTokenscs/t|j||d|_g|_dS)N)rdrIrr")rBrr$)InTableTextPhaserr'r(rI6s z,getPhases..InTableTextPhase.__init__cSsdjdd|jD}tdd|Drhdtdd|i}|jjdj|n|r~|jj|g|_dS) NrcSsg|]}|dqS)ryr')r?rr'r'r(r{<s zGgetPhases..InTableTextPhase.flushCharacters..cSsg|]}|tkqSr')r )r?rr'r'r(r{=s r0rrryr)joinr"r|rrJrGrr>)rBryrr'r'r(flushCharacters;sz3getPhases..InTableTextPhase.flushCharacterscSs|j|j|j_|S)N)r%rrJr_)rBrr'r'r(rDs z2getPhases..InTableTextPhase.processCommentcSs|j|j|j_dS)NT)r%rrJr_)rBr'r'r(rIs z.getPhases..InTableTextPhase.processEOFcSs(|ddkrdS|jj|dS)Nryry)r"r)rBrr'r'r(rNsz5getPhases..InTableTextPhase.processCharacterscSs|jj|dS)N)r"r)rBrr'r'r(rSsz:getPhases..InTableTextPhase.processSpaceCharacterscSs|j|j|j_|S)N)r%rrJr_)rBrr'r'r(rXs z3getPhases..InTableTextPhase.processStartTagcSs|j|j|j_|S)N)r%rrJr_)rBrr'r'r(r]s z1getPhases..InTableTextPhase.processEndTag)rr") r9r:r;rrIr%rrrrrrr')r#)rr(r#3s      r#c seZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ejdjfd efgZe e_ejde fde fd!e fgZe e_dS)"z!getPhases..InCaptionPhasecSs|jjddd S)Nrrr)r>r)rBr'r'r(ignoreEndTagCaptionfsz5getPhases..InCaptionPhase.ignoreEndTagCaptioncSs|jjdjdS)Nr)rJrGr)rBr'r'r(risz,getPhases..InCaptionPhase.processEOFcSs|jjdj|S)Nr)rJrGr)rBrr'r'r(rlsz3getPhases..InCaptionPhase.processCharacterscSs@|jj|j}|jjjtd|s<|SdS)Nr)rJrr&r_rr1)rBr ignoreEndTagr'r'r(startTagTableElementos   z6getPhases..InCaptionPhase.startTagTableElementcSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r7wsz/getPhases..InCaptionPhase.startTagOthercSs|js|jj|jjdjdkr^|jjdddd|jjdjix-|jjd jdkr|jjjqaW|jjj|jj|jj d|j_ n|jj st |jjdS) Nrrz$expected-one-end-tag-but-got-anotherrrrrrr) r&r>rrr@rJrrrrGr_rRr)rBrr'r'r( endTagCaptionzs    z/getPhases..InCaptionPhase.endTagCaptioncSs@|jj|j}|jjjtd|s<|SdS)Nr)rJrr&r_rr1)rBrr'r'r'r(rs   z-getPhases..InCaptionPhase.endTagTablecSs!|jjdd|didS)Nzunexpected-end-tagr@)rJr)rBrr'r'r(r sz.getPhases..InCaptionPhase.endTagIgnorecSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r9sz-getPhases..InCaptionPhase.endTagOtherrrrrrrrrrrrrN) rrrrrrrrr) rrrrrrrrrr)r9r:r;r.rr&rrr(r7r)rr r9r r:rrr;rr')rr'r(InCaptionPhasebs*               r*cseZdZeZddZddZddZddZd d Z d d Z d dZ ddZ e jdjfdefgZe e_e jde fde fgZe e_dS)z%getPhases..InColumnGroupPhasecSs|jjdjdkS)Nrrr)r>rr@)rBr'r'r(ignoreEndTagColgroupsz:getPhases..InColumnGroupPhase.ignoreEndTagColgroupcSs\|jjdjdkr/|jjs+tdS|j}|jtd|sXdSdS)NrrrTr) r>rr@rJrRrr+endTagColgroupr1)rBr'r'r'r(rs z0getPhases..InColumnGroupPhase.processEOFcSs-|j}|jtd|s)|SdS)Nr)r+r,r1)rBrr'r'r'r(rs z7getPhases..InColumnGroupPhase.processCharacterscSs.|jj||jjjd|drrr)rBrr'r'r(rsz1getPhases..InColumnGroupPhase.startTagColcSs-|j}|jtd|s)|SdS)Nr)r+r,r1)rBrr'r'r'r(r7s z3getPhases..InColumnGroupPhase.startTagOthercSsX|jr.|jjst|jjn&|jjj|jjd|j_ dS)Nr) r+rJrRrrr>rrrGr_)rBrr'r'r(r,s  z4getPhases..InColumnGroupPhase.endTagColgroupcSs|jjdddidS)Nz no-end-tagr@r)rJr)rBrr'r'r( endTagColsz/getPhases..InColumnGroupPhase.endTagColcSs-|j}|jtd|s)|SdS)Nr)r+r,r1)rBrr'r'r'r(r9s z1getPhases..InColumnGroupPhase.endTagOtherrrrN)r9r:r;r.rr+rrrr7r,r-r9r r:rrr;rr')rr'r(InColumnGroupPhases"           r.c seZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZejdjfde fd&e fd'e fgZe e_ejd(e fd#efd)efgZee_d%S)*z#getPhases..InTableBodyPhasecSs_x-|jjdjdkr/|jjjqW|jjdjdkr[|jjs[tdS) Nrrrrrr)rrrrr)r>rr@rrJrRr)rBr'r'r(clearStackToTableBodyContexts  z@getPhases..InTableBodyPhase.clearStackToTableBodyContextcSs|jjdjdS)Nr)rJrGr)rBr'r'r(rsz.getPhases..InTableBodyPhase.processEOFcSs|jjdj|S)Nr)rJrGr)rBrr'r'r(rsz:getPhases..InTableBodyPhase.processSpaceCharacterscSs|jjdj|S)Nr)rJrGr)rBrr'r'r(rsz5getPhases..InTableBodyPhase.processCharacterscSs4|j|jj||jjd|j_dS)Nr)r/r>rrJrGr_)rBrr'r'r( startTagTrs z.getPhases..InTableBodyPhase.startTagTrcSs7|jjdd|di|jtdd|S)Nzunexpected-cell-in-table-bodyr@rrt)rJrr0r1)rBrr'r'r(startTagTableCells z5getPhases..InTableBodyPhase.startTagTableCellcSs|jjdddsH|jjdddsH|jjdddrv|j|jt|jjdj|S|jjst |jj dS)Nrrrrrrr) r>rr/endTagTableRowGroupr1rr@rJrRrr)rBrr'r'r(startTagTableOther s z6getPhases..InTableBodyPhase.startTagTableOthercSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r7sz1getPhases..InTableBodyPhase.startTagOthercSsp|jj|dddrO|j|jjj|jjd|j_n|jjdd|didS)Nr@rrrz unexpected-end-tag-in-table-body) r>rr/rrrJrGr_r)rBrr'r'r(r2s   z7getPhases..InTableBodyPhase.endTagTableRowGroupcSs|jjdddsH|jjdddsH|jjdddrv|j|jt|jjdj|S|jjst |jj dS)Nrrrrrrr) r>rr/r2r1rr@rJrRrr)rBrr'r'r(r%s z/getPhases..InTableBodyPhase.endTagTablecSs!|jjdd|didS)Nz unexpected-end-tag-in-table-bodyr@)rJr)rBrr'r'r(r 2s z0getPhases..InTableBodyPhase.endTagIgnorecSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r96sz/getPhases..InTableBodyPhase.endTagOtherrrrrrrrrrrrrN)rr)rrrrrr)rrr)rrrrrrrr)r9r:r;r.rr/rrrr0r1r3r7r2rr r9r r:rrr;rr')rr'r(InTableBodyPhases4                 r4c s'eZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZddZejdjfd(e fd)e fgZe e_ejd$e fd%efd*efd+efgZee_d'S),zgetPhases..InRowPhasecSsZxS|jjdjdkrU|jjdd|jjdji|jjjqWdS) Nrrrz'unexpected-implied-end-tag-in-table-rowr@r)rrr)r>rr@rJrr)rBr'r'r(clearStackToTableRowContextOs z9getPhases..InRowPhase.clearStackToTableRowContextcSs|jjddd S)Nrrr)r>r)rBr'r'r(ignoreEndTagTrUsz,getPhases..InRowPhase.ignoreEndTagTrcSs|jjdjdS)Nr)rJrGr)rBr'r'r(rYsz(getPhases..InRowPhase.processEOFcSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r\sz4getPhases..InRowPhase.processSpaceCharacterscSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r_sz/getPhases..InRowPhase.processCharacterscSsG|j|jj||jjd|j_|jjjtdS)Nr) r5r>rrJrGr_rkrr )rBrr'r'r(r1bs z/getPhases..InRowPhase.startTagTableCellcSs-|j}|jtd|s)|SdS)Nr)r6endTagTrr1)rBrr'r'r'r(r3hs z0getPhases..InRowPhase.startTagTableOthercSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r7osz+getPhases..InRowPhase.startTagOthercSsb|js?|j|jjj|jjd|j_n|jjsQt |jj dS)Nr) r6r5r>rrrJrGr_rRrr)rBrr'r'r(r7rs   z&getPhases..InRowPhase.endTagTrcSs-|j}|jtd|s)|SdS)Nr)r6r7r1)rBrr'r'r'r(r|s z)getPhases..InRowPhase.endTagTablecSsD|jj|dddr3|jtd|S|jjdS)Nr@rrr)r>rr7r1rJr)rBrr'r'r(r2sz1getPhases..InRowPhase.endTagTableRowGroupcSs!|jjdd|didS)Nzunexpected-end-tag-in-table-rowr@)rJr)rBrr'r'r(r s z*getPhases..InRowPhase.endTagIgnorecSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r9sz)getPhases..InRowPhase.endTagOtherrrrrrrrrrrrrN)rr)rrrrrrr)rrr)rrrrrrr)r9r:r;r.rr5r6rrrr1r3r7r7rr2r r9r r:rrr;rr')rr'r( InRowPhaseJs6                    r8c seZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ejdjfd efgZe e_ejd!e fd"e fd#e fgZe e_dS)$zgetPhases..InCellPhasecSs]|jjdddr.|jtdn+|jjdddrY|jtddS)Nrrrr)r>rendTagTableCellr1)rBr'r'r( closeCellsz(getPhases..InCellPhase.closeCellcSs|jjdjdS)Nr)rJrGr)rBr'r'r(rsz)getPhases..InCellPhase.processEOFcSs|jjdj|S)Nr)rJrGr)rBrr'r'r(rsz0getPhases..InCellPhase.processCharacterscSsa|jjddds0|jjdddr>|j|S|jjsPt|jjdS)Nrrrr)r>rr:rJrRrr)rBrr'r'r(r3s  z1getPhases..InCellPhase.startTagTableOthercSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r7sz,getPhases..InCellPhase.startTagOthercSs|jj|dddr|jj|d|jjdj|dkr|jjdd|dix=|jjj}|j|dkrmPqmWn|jjj|jj|jj d|j_ n|jjdd|didS) Nr@rrrzunexpected-cell-end-tagrzunexpected-end-tagr) r>rrrr@rJrrrrGr_)rBrrr'r'r(r9s  z.getPhases..InCellPhase.endTagTableCellcSs!|jjdd|didS)Nzunexpected-end-tagr@)rJr)rBrr'r'r(r sz+getPhases..InCellPhase.endTagIgnorecSs;|jj|dddr*|j|S|jjdS)Nr@rr)r>rr:rJr)rBrr'r'r( endTagImplys z*getPhases..InCellPhase.endTagImplycSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r9sz*getPhases..InCellPhase.endTagOtherrrrrrrrrrrrrN) rrrrrrrrr)rr)rrrrr)rrrrr)r9r:r;r.rr:rrr3r7r9r r;r9r r:rrr;rr')rr'r( InCellPhases(              r<cs-eZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZejdjfdefdefde fd"e fd e fgZe e_ejde fdefdefgZee_d!S)#z getPhases..InSelectPhasecSsB|jjdjdkr,|jjdn|jjs>tdS)Nrrz eof-in-selectr)r>rr@rJrrRr)rBr'r'r(rsz+getPhases..InSelectPhase.processEOFcSs,|ddkrdS|jj|ddS)Nryry)r>r)rBrr'r'r(rsz2getPhases..InSelectPhase.processCharacterscSs=|jjdjdkr)|jjj|jj|dS)Nrrr)r>rr@rr)rBrr'r'r(startTagOptionsz/getPhases..InSelectPhase.startTagOptioncSsf|jjdjdkr)|jjj|jjdjdkrR|jjj|jj|dS)Nrrrrr)r>rr@rr)rBrr'r'r(startTagOptgroup s z1getPhases..InSelectPhase.startTagOptgroupcSs'|jjd|jtddS)Nzunexpected-select-in-selectr)rJr endTagSelectr1)rBrr'r'r(r sz/getPhases..InSelectPhase.startTagSelectcSsU|jjd|jjdddr?|jtd|S|jjsQtdS)Nzunexpected-input-in-selectrr)rJrr>rr?r1rRr)rBrr'r'r(r s z.getPhases..InSelectPhase.startTagInputcSs|jjdj|S)Nr5)rJrGr)rBrr'r'r(rL sz/getPhases..InSelectPhase.startTagScriptcSs!|jjdd|didS)Nzunexpected-start-tag-in-selectr@)rJr)rBrr'r'r(r7 s z.getPhases..InSelectPhase.startTagOthercSsI|jjdjdkr,|jjjn|jjdddidS)Nrrzunexpected-end-tag-in-selectr@r)r>rr@rrJr)rBrr'r'r( endTagOption s z-getPhases..InSelectPhase.endTagOptioncSs|jjdjdkrB|jjdjdkrB|jjj|jjd jdkrn|jjjn|jjdddidS) Nrrrrzunexpected-end-tag-in-selectr@rr)r>rr@rrJr)rBrr'r'r(endTagOptgroup% s z/getPhases..InSelectPhase.endTagOptgroupcSs|jjdddrb|jjj}x%|jdkrQ|jjj}q-W|jjn|jjstt|jj dS)Nrr) r>rrrr@rJrarRrr)rBrrr'r'r(r?2 sz-getPhases..InSelectPhase.endTagSelectcSs!|jjdd|didS)Nzunexpected-end-tag-in-selectr@)rJr)rBrr'r'r(r9= s z,getPhases..InSelectPhase.endTagOtherrrrrrr rurTN)rr ru)r9r:r;r.rrrr=r>rrrLr7r@rBr?r9r r:rrr;rr')rr'r( InSelectPhases4                    rCc @seZdZeZddZddZddZddZd d Z d d Z e j defgZ ee _e j de fgZe e_dS)z'getPhases..InSelectInTablePhasecSs|jjdjdS)Nr)rJrGr)rBr'r'r(rU sz2getPhases..InSelectInTablePhase.processEOFcSs|jjdj|S)Nr)rJrGr)rBrr'r'r(rX sz9getPhases..InSelectInTablePhase.processCharacterscSs4|jjdd|di|jtd|S)Nz5unexpected-table-element-start-tag-in-select-in-tabler@r)rJrr9r1)rBrr'r'r(r[ sz5getPhases..InSelectInTablePhase.startTagTablecSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r7` sz5getPhases..InSelectInTablePhase.startTagOthercSsT|jjdd|di|jj|dddrP|jtd|SdS)Nz3unexpected-table-element-end-tag-in-select-in-tabler@rrr)rJrr>rr9r1)rBrr'r'r(rc sz3getPhases..InSelectInTablePhase.endTagTablecSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r9i sz3getPhases..InSelectInTablePhase.endTagOtherrrrrrrrrN)rrrrrrrr)rrrrrrrr)r9r:r;r.rrrrr7rr9r r:rr;rr'r'r'r(InSelectInTablePhaseR s         rDc-seZdZeZeddddddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,g,Zd-d.Zfd/d0Zd1d2Z d3d4Z d5S)6z(getPhases..InForeignContentPhaserrrrr2rrrnr)rrorrh1h2h3h4h5h6rrrrrprtrr2rrr&rsrrrspanrrsubsuprrrrvarcHSsddddddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHi$}|dI|kr||dI|dI.InForeignContentPhase.adjustSVGTagNamescsf|ddkrd|d szMgetPhases..InForeignContentPhase.processCharacters..F)rJrdr|r)rBr)rr'r(r s    z:getPhases..InForeignContentPhase.processCharacterscSs|jjd}|d|jksV|ddkrt|djdddh@r|jjdd|dixm|jjdj|jjkr|jj |jjd r|jj |jjd r|jjj qvW|S|jt d kr |jj |n0|jt d kr=|j||jj||jj||j|d <|jj||d r|jjj d |drbreakoutElementssetkeysrJrrlrrprqrrrrrrr)rBrrr'r'r(r s.#    z8getPhases..InForeignContentPhase.processStartTagcSsJt|jjd}|jjd}|jjt|dkr_|jjdd|dix|jjt|dkr|jj|jj dkr|jjj |jjj |j_x.|jjj |kr|jjst qWd}P|d8}|jj|}|j|jjkr,qbqb|jjj|}PqbW|S)Nrr@zunexpected-end-tagrr)rr>rr@rnrrJrr_rGr%rrrrlrr)rBr nodeIndexrrr'r'r(r s( z6getPhases..InForeignContentPhase.processEndTagN) r9r:r;r.rrrrrrrr')rr'r(InForeignContentPhasex s   ) rc@seZdZeZddZddZddZddZd d Z d d Z d dZ e j defgZe e_e j de fgZe e_dS)z!getPhases..AfterBodyPhasecSsdS)Nr')rBr'r'r(r sz,getPhases..AfterBodyPhase.processEOFcSs!|jj||jjddS)Nr)r>rr)rBrr'r'r(r sz0getPhases..AfterBodyPhase.processCommentcSs*|jjd|jjd|j_|S)Nzunexpected-char-after-bodyr)rJrrGr_)rBrr'r'r(r sz3getPhases..AfterBodyPhase.processCharacterscSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r sz.getPhases..AfterBodyPhase.startTagHtmlcSs7|jjdd|di|jjd|j_|S)Nzunexpected-start-tag-after-bodyr@r)rJrrGr_)rBrr'r'r(r7 s z/getPhases..AfterBodyPhase.startTagOthercSs9|jjr|jjdn|jjd|j_dS)Nz'unexpected-end-tag-after-body-innerhtmlafterAfterBody)rJrRrrGr_)rBr@r'r'r(r s z,getPhases..AfterBodyPhase.endTagHtmlcSs7|jjdd|di|jjd|j_|S)Nzunexpected-end-tag-after-bodyr@r)rJrrGr_)rBrr'r'r(r9 s z-getPhases..AfterBodyPhase.endTagOtherrN)r9r:r;r.rrrrrr7rr9r r:rr;rr'r'r'r(AfterBodyPhase s          rcseZdZeZddZddZddZddZd d Z d d Z d dZ ddZ e jdjfdefdefde fgZe e_e jde fgZe e_dS)z"getPhases..InFramesetPhasecSsB|jjdjdkr,|jjdn|jjs>tdS)Nrrzeof-in-framesetr)r>rr@rJrrRr)rBr'r'r(r sz-getPhases..InFramesetPhase.processEOFcSs|jjddS)Nzunexpected-char-in-frameset)rJr)rBrr'r'r(r" sz4getPhases..InFramesetPhase.processCharacterscSs|jj|dS)N)r>r)rBrr'r'r(r`% sz3getPhases..InFramesetPhase.startTagFramesetcSs$|jj||jjjdS)N)r>rrr)rBrr'r'r( startTagFrame( sz0getPhases..InFramesetPhase.startTagFramecSs|jjdj|S)Nr)rJrGr)rBrr'r'r(startTagNoframes, sz3getPhases..InFramesetPhase.startTagNoframescSs!|jjdd|didS)Nz unexpected-start-tag-in-framesetr@)rJr)rBrr'r'r(r7/ s z0getPhases..InFramesetPhase.startTagOthercSs||jjdjdkr,|jjdn|jjj|jj rx|jjdjdkrx|jjd|j_dS)Nrrz)unexpected-frameset-in-frameset-innerhtmlr afterFramesetrr) r>rr@rJrrrRrGr_)rBrr'r'r(endTagFrameset3 s  z1getPhases..InFramesetPhase.endTagFramesetcSs!|jjdd|didS)Nzunexpected-end-tag-in-framesetr@)rJr)rBrr'r'r(r9? s z.getPhases..InFramesetPhase.endTagOtherrrrrQN)r9r:r;r.rrrr`rrr7rr9r r:rrr;rr')rr'r(InFramesetPhase s$             rcseZdZeZddZddZddZddZd d Z d d Z e j d j fdefgZee_e j d e fgZe e_dS)z%getPhases..AfterFramesetPhasecSsdS)Nr')rBr'r'r(rT sz0getPhases..AfterFramesetPhase.processEOFcSs|jjddS)Nzunexpected-char-after-frameset)rJr)rBrr'r'r(rX sz7getPhases..AfterFramesetPhase.processCharacterscSs|jjdj|S)Nr5)rJrGr)rBrr'r'r(r[ sz6getPhases..AfterFramesetPhase.startTagNoframescSs!|jjdd|didS)Nz#unexpected-start-tag-after-framesetr@)rJr)rBrr'r'r(r7^ s z3getPhases..AfterFramesetPhase.startTagOthercSs|jjd|j_dS)NafterAfterFrameset)rJrGr_)rBrr'r'r(rb sz0getPhases..AfterFramesetPhase.endTagHtmlcSs!|jjdd|didS)Nz!unexpected-end-tag-after-framesetr@)rJr)rBrr'r'r(r9e s z1getPhases..AfterFramesetPhase.endTagOtherrrQN)r9r:r;r.rrrrr7rr9r r:rrr;rr')rr'r(AfterFramesetPhaseP s          rc@seZdZeZddZddZddZddZd d Z d d Z d dZ e j de fgZe e_dS)z&getPhases..AfterAfterBodyPhasecSsdS)Nr')rBr'r'r(rw sz1getPhases..AfterAfterBodyPhase.processEOFcSs|jj||jjdS)N)r>rr)rBrr'r'r(rz sz5getPhases..AfterAfterBodyPhase.processCommentcSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r} sz=getPhases..AfterAfterBodyPhase.processSpaceCharacterscSs*|jjd|jjd|j_|S)Nzexpected-eof-but-got-charr)rJrrGr_)rBrr'r'r(r sz8getPhases..AfterAfterBodyPhase.processCharacterscSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r sz3getPhases..AfterAfterBodyPhase.startTagHtmlcSs7|jjdd|di|jjd|j_|S)Nzexpected-eof-but-got-start-tagr@r)rJrrGr_)rBrr'r'r(r7 s z4getPhases..AfterAfterBodyPhase.startTagOthercSs7|jjdd|di|jjd|j_|S)Nzexpected-eof-but-got-end-tagr@r)rJrrGr_)rBrr'r'r(r s z4getPhases..AfterAfterBodyPhase.processEndTagrN)r9r:r;r.rrrrrrr7rr r:rr;r'r'r'r(AfterAfterBodyPhaset s         rc@seZdZeZddZddZddZddZd d Z d d Z d dZ ddZ e jde fde fgZe e_dS)z*getPhases..AfterAfterFramesetPhasecSsdS)Nr')rBr'r'r(r sz5getPhases..AfterAfterFramesetPhase.processEOFcSs|jj||jjdS)N)r>rr)rBrr'r'r(r sz9getPhases..AfterAfterFramesetPhase.processCommentcSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r szAgetPhases..AfterAfterFramesetPhase.processSpaceCharacterscSs|jjddS)Nzexpected-eof-but-got-char)rJr)rBrr'r'r(r sz.AfterAfterFramesetPhase.processCharacterscSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r sz7getPhases..AfterAfterFramesetPhase.startTagHtmlcSs|jjdj|S)Nr5)rJrGr)rBrr'r'r(startTagNoFrames sz;getPhases..AfterAfterFramesetPhase.startTagNoFramescSs!|jjdd|didS)Nzexpected-eof-but-got-start-tagr@)rJr)rBrr'r'r(r7 s z8getPhases..AfterAfterFramesetPhase.startTagOthercSs!|jjdd|didS)Nzexpected-eof-but-got-end-tagr@)rJr)rBrr'r'r(r s z8getPhases..AfterAfterFramesetPhase.processEndTagrrQN)r9r:r;r.rrrrrrrr7rr r:rr;r'r'r'r(AfterAfterFramesetPhase s           rrVrUrr5rIrMrrrrrrrrrrrr~rrrrr)r)rHrXrr/r3r<rZr^rcrr!r*r.r4r8r<rCrDrrrrrrr')rfr#rr(rFsf  %H%-f?B!/F@bYLc&r.8$%&rFcs[t|dt@}|rWt|dfdd|djD|d.)rr0r,)rrneeds_adjustmentr')rr(r srruFcCs2|dkri}dt|d|d|d|iS)Nr0r@ryr)r)r@r0rmrr'r'r(r1 s r1c@seZdZdZdS)rxzError in parsed documentN)r9r:r;rr'r'r'r(rx s rx), __future__rrrZpip._vendor.sixrrr.rrr r Ztreebuilders.baser r constantsr rrrrrrrrrrrrrrrrr!r+r=rr memoizerFrr1 Exceptionrxr'r'r'r(s6 j  7W