Ë
    ¤2Úiä, ã                   óê   — d dl mZmZmZ d dlmZ d dlmZm	Z	 d dl
mZ ddlmZ ddlmZ ddlmZmZ dd	lmZmZmZ dd
lmZmZ ddlmZ ddlmZ ddlmZ  ee«      Zedk\  reZne	Z G d„ de«      Zy)é    )Úabsolute_importÚdivisionÚunicode_literals)Úunichr)ÚdequeÚOrderedDict)Úversion_infoé   )ÚspaceCharacters)Úentities)ÚasciiLettersÚasciiUpper2Lower)ÚdigitsÚ	hexDigitsÚEOF)Ú
tokenTypesÚtagTokenTypes)ÚreplacementCharacters)ÚHTMLInputStream)ÚTrie)é   é   c                   óÖ  ‡ — e Zd ZdZdKˆ fd„	Zd„ Zd„ ZdLd„Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d „ Z"d!„ Z#d"„ Z$d#„ Z%d$„ Z&d%„ Z'd&„ Z(d'„ Z)d(„ Z*d)„ Z+d*„ Z,d+„ Z-d,„ Z.d-„ Z/d.„ Z0d/„ Z1d0„ Z2d1„ Z3d2„ Z4d3„ Z5d4„ Z6d5„ Z7d6„ Z8d7„ Z9d8„ Z:d9„ Z;d:„ Z<d;„ Z=d<„ Z>d=„ Z?d>„ Z@d?„ ZAd@„ ZBdA„ ZCdB„ ZDdC„ ZEdD„ ZFdE„ ZGdF„ ZHdG„ ZIdH„ ZJdI„ ZKdJ„ ZLˆ xZMS )MÚHTMLTokenizera	   This class takes care of tokenizing HTML.

    * self.currentToken
      Holds the token that is currently being processed.

    * self.state
      Holds a reference to the method to be invoked... XXX

    * self.stream
      Points to HTMLInputStream object.
    c                 ó´   •— t        |fi |¤Ž| _        || _        d| _        g | _        | j
                  | _        d| _        d | _        t        t        | �/  «        y ©NF)r   ÚstreamÚparserÚ
escapeFlagÚlastFourCharsÚ	dataStateÚstateÚescapeÚcurrentTokenÚsuperr   Ú__init__)Úselfr   r   ÚkwargsÚ	__class__s       €úJ/var/www/html/acx/venv/lib/python3.12/site-packages/html5lib/_tokenizer.pyr&   zHTMLTokenizer.__init__(   sU   ø€ ä% fÑ7°Ñ7ˆŒØˆŒð  ˆŒØˆÔØ—^‘^ˆŒ
ØˆŒð !ˆÔÜŒm˜TÑ+Õ-ó    c              #   ó–  K  — t        g «      | _        | j                  «       r¥| j                  j                  rHt
        d   | j                  j                  j                  d«      dœ–— | j                  j                  rŒH| j                  r)| j                  j                  «       –— | j                  rŒ)| j                  «       rŒ¤yy­w)zä This is where the magic happens.

        We do our usually processing through the states and when we have a token
        to return we yield the token which pauses processing until the next token
        is requested.
        Ú
ParseErrorr   ©ÚtypeÚdataN)r   Ú
tokenQueuer"   r   Úerrorsr   ÚpopÚpopleft©r'   s    r*   Ú__iter__zHTMLTokenizer.__iter__7   sŽ   è ø€ ô   ›)ˆŒð �j‰jŒlØ—+‘+×$Ò$Ü)¨,Ñ7ÀÇÁ×ASÑAS×AWÑAWÐXYÓAZÑ[Ò[ð —+‘+×$Ó$à—/’/Ø—o‘o×-Ñ-Ó/Ò/ð —/“/ð �j‰j�lùs   ‚A>C	Â4C	Â6C	ÃC	c                 óô  — t         }d}|rt        }d}g }| j                  j                  «       }||v r@|t        ur8|j                  |«       | j                  j                  «       }||v r	|t        urŒ8t        dj                  |«      |«      }|t        v r2t        |   }| j                  j                  t        d   dd|idœ«       n´d|cxk  rd	k  sn |d
kD  r+d}| j                  j                  t        d   dd|idœ«       nwd|cxk  rdk  s8n d|cxk  rdk  s+n d|cxk  rdk  sn d|cxk  rdk  sn |t        g d¢«      v r(| j                  j                  t        d   dd|idœ«       	 t        |«      }|dk7  r@| j                  j                  t        d   ddœ«       | j                  j                  |«       |S # t        $ r+ |dz
  }t        d|dz	  z  «      t        d|dz  z  «      z   }Y Œzw xY w)zøThis function returns either U+FFFD or the character based on the
        decimal or hexadecimal representation. It also discards ";" if present.
        If not present self.tokenQueue.append({"type": tokenTypes["ParseError"]}) is invoked.
        é
   é   Ú r-   z$illegal-codepoint-for-numeric-entityÚ	charAsInt©r/   r0   Údatavarsi Ø  iÿß  éÿÿ õ   ï¿½r
   é   é   é   é   éŸ   iÐý  iïý  )#é   iþÿ  iÿÿ  iþÿ iÿÿ iþÿ iÿÿ iþÿ iÿÿ iþÿ iÿÿ iþÿ iÿÿ iþÿ iÿÿ iþÿ iÿÿ iþÿ iÿÿ iþÿ	 iÿÿ	 iþÿ
 iÿÿ
 iþÿ iÿÿ iþÿ iÿÿ iþÿ iÿÿ iþÿ iÿÿ iþÿ iÿÿ iþÿ r>   i   i Ü  iÿ  ú;z numeric-entity-without-semicolonr.   )r   r   r   Úcharr   ÚappendÚintÚjoinr   r1   r   Ú	frozensetÚchrÚ
ValueErrorÚunget)	r'   ÚisHexÚallowedÚradixÚ	charStackÚcr;   rG   Úvs	            r*   ÚconsumeNumberEntityz!HTMLTokenizer.consumeNumberEntityG   s  € ô ˆØˆÙÜˆGØˆEàˆ	ð �K‰K×ÑÓˆØ�7‰l˜q¬™|Ø×Ñ˜QÔØ—‘× Ñ Ó"ˆAð �7‰l˜q¬š|ô
 ˜Ÿ™ 	Ó*¨EÓ2ˆ	ð Ô-Ñ-Ü(¨Ñ3ˆDØ�O‰O×"Ñ"¬J°|Ñ,DØ$JØ1<¸iÐ0Hñ$Jõ Kð ˜Ô, fÔ,Ø˜8Ò#ØˆDØ�O‰O×"Ñ"¬J°|Ñ,DØ$JØ1<¸iÐ0Hñ$Jõ Kð
 ˜9Ô.¨Ô.Ø˜9Ô.¨Ô.Ø˜9Ô.¨Ô.Ø˜9Ô.¨Ô.ØœYò (Eó Fñ Fð —‘×&Ñ&´
¸<Ñ0Hà(NØ5@À)Ð4Lñ(Nô OðKô ˜9“~�ð �Š8Ø�O‰O×"Ñ"¬J°|Ñ,DØ$Fñ$Hô Ià�K‰K×Ñ˜aÔ àˆøô ò KØ Ñ'�Ü˜6 Q¨"¡WÑ-Ó.´°V¸qÀ5¹yÑ5IÓ1JÑJ’ðKús   Å1G Ç1G7Ç6G7c                 óh  — d}| j                   j                  «       g}|d   t        v s|d   t        ddfv s
|�(||d   k(  r | j                   j	                  |d   «       �nî|d   dk(  �rd}|j                  | j                   j                  «       «       |d   dv r+d}|j                  | j                   j                  «       «       |r|d   t        v s|s<|d   t        v r1| j                   j	                  |d   «       | j                  |«      }�n=| j                  j                  t        d	   d
dœ«       | j                   j	                  |j                  «       «       ddj                  |«      z   }�nÙ|d   t        urZt        j                  dj                  |«      «      sn5|j                  | j                   j                  «       «       |d   t        urŒZ	 t        j                  dj                  |d d «      «      }t!        |«      }|�Ý|d   dk7  r%| j                  j                  t        d	   ddœ«       |d   dk7  r^|r\|   t$        v s||   t        v s||   dk(  r>| j                   j	                  |j                  «       «       ddj                  |«      z   }n¬t&        |   }| j                   j	                  |j                  «       «       |dj                  |d  «      z  }nb| j                  j                  t        d	   ddœ«       | j                   j	                  |j                  «       «       ddj                  |«      z   }|r| j(                  d   d   dxx   |z  cc<   y |t        v rd}nd}| j                  j                  t        |   |dœ«       y # t"        $ r d }Y �Œ¢w xY w)Nú&r   ú<ú#Féÿÿÿÿ)ÚxÚXTr-   zexpected-numeric-entityr.   r:   rF   znamed-entity-without-semicolonú=zexpected-named-entityr0   r
   ÚSpaceCharactersÚ
Characters)r   rG   r   r   rN   rH   r   r   rU   r1   r   r3   rJ   ÚentitiesTrieÚhas_keys_with_prefixÚlongest_prefixÚlenÚKeyErrorr   r   r$   )	r'   ÚallowedCharÚfromAttributeÚoutputrR   ÚhexÚ
entityNameÚentityLengthÚ	tokenTypes	            r*   ÚconsumeEntityzHTMLTokenizer.consumeEntity�   sR  € àˆà—[‘[×%Ñ%Ó'Ð(ˆ	Ø�a‰LœOÑ+¨y¸©|ÄÀSÈ#¸Ñ/NØÐ(¨[¸IÀa¹LÒ-HØ�K‰K×Ñ˜i¨™lÖ+à�q‰\˜SÓ àˆCØ×Ñ˜TŸ[™[×-Ñ-Ó/Ô0Ø˜‰} 
Ñ*Ø�Ø× Ñ  §¡×!1Ñ!1Ó!3Ô4ñ ˜	 "™¬Ñ2Ù I¨b¡M´VÑ$;à—‘×!Ñ! )¨B¡-Ô0Ø×1Ñ1°#Ó6’ð —‘×&Ñ&´
¸<Ñ0HØ0Iñ(Kô Là—‘×!Ñ! )§-¡-£/Ô2Ø˜rŸw™w yÓ1Ñ1’ð ˜R‘=¬Ñ+Ü#×8Ñ8¸¿¹ÀÓ9KÔLØØ× Ñ  §¡×!1Ñ!1Ó!3Ô4ð ˜R‘=¬Ò+ð"Ü)×8Ñ8¸¿¹ÀÈ3ÈBÀÓ9PÓQ�
Ü" :›�ð Ð%Ø˜b‘> SÒ(Ø—O‘O×*Ñ*´J¸|Ñ4LØ,Lñ,Nô Oà˜r‘N cÒ)©mØ˜|Ñ,´Ñ<Ø˜|Ñ,´Ñ6Ø˜|Ñ,°Ò3Ø—K‘K×%Ñ% i§m¡m£oÔ6Ø  2§7¡7¨9Ó#5Ñ5‘Fä% jÑ1�FØ—K‘K×%Ñ% i§m¡m£oÔ6Ø˜bŸg™g i°°Ð&>Ó?Ñ?‘Fà—‘×&Ñ&´
¸<Ñ0HØ(?ñ(Aô Bà—‘×!Ñ! )§-¡-£/Ô2Ø˜rŸw™w yÓ1Ñ1�áØ×Ñ˜fÑ% bÑ)¨!Ó,°Ñ6Ô,àœÑ(Ø-‘	à(�	Ø�O‰O×"Ñ"¬J°yÑ,AÈ6Ñ#RÕSøô= ò "Ø!“
ð"ús   Ç2N" Î"N1Î0N1c                 ó*   — | j                  |d¬«       y)zIThis method replaces the need for "entityInAttributeValueState".
        T)re   rf   N)rl   )r'   re   s     r*   ÚprocessEntityInAttributez&HTMLTokenizer.processEntityInAttributeß   s   € ð 	×Ñ {À$ÐÕGr+   c                 ó*  — | j                   }|d   t        v rÐ|d   j                  t        «      |d<   |d   t        d   k(  rC|d   }t        |«      }t        |«      t        |«      kD  r|j                  |ddd…   «       ||d<   |d   t        d   k(  rT|d   r%| j                  j                  t        d   d	d
œ«       |d   r%| j                  j                  t        d   dd
œ«       | j                  j                  |«       | j                  | _        y)z®This method is a generic handler for emitting the tags. It also sets
        the state to "data" because that's what's needed after a token has been
        emitted.
        r/   ÚnameÚStartTagr0   NrZ   ÚEndTagr-   zattributes-in-end-tagr.   ÚselfClosingzself-closing-flag-on-end-tag)r$   r   Ú	translater   r   ÚattributeMaprc   Úupdater1   rH   r!   r"   )r'   ÚtokenÚrawr0   s       r*   ÚemitCurrentTokenzHTMLTokenizer.emitCurrentTokenä   s  € ð
 ×!Ñ!ˆà�&‰Mœ]Ñ*Ø! &™M×3Ñ3Ô4DÓEˆE�&‰MØ�V‰}¤
¨:Ñ 6Ò6Ø˜F‘m�Ü# CÓ(�Ü�s“8œc $›iÒ'à—K‘K ¡D b D¡	Ô*Ø $��f‘à�V‰}¤
¨8Ñ 4Ò4Ø˜’=Ø—O‘O×*Ñ*´J¸|Ñ4LØ4Kñ,Mô Nà˜Ò'Ø—O‘O×*Ñ*´J¸|Ñ4LØ4Rñ,Tô Uà�‰×Ñ˜uÔ%Ø—^‘^ˆ�
r+   c                 ój  — | j                   j                  «       }|dk(  r| j                  | _        y
|dk(  r| j                  | _        y
|dk(  rK| j
                  j                  t        d   ddœ«       | j
                  j                  t        d   ddœ«       y
|t        u ry|t        v rG| j
                  j                  t        d	   || j                   j                  t        d
«      z   dœ«       y
| j                   j                  d«      }| j
                  j                  t        d   ||z   dœ«       y
)NrW   rX   ú r-   úinvalid-codepointr.   r_   Fr^   T©rW   rX   r{   )r   rG   ÚentityDataStater"   ÚtagOpenStater1   rH   r   r   r   Ú
charsUntil©r'   r0   Úcharss      r*   r!   zHTMLTokenizer.dataState   s0  € Ø�{‰{×ÑÓ!ˆØ�3Š;Ø×-Ñ-ˆDŒJð0 ð/ �SŠ[Ø×*Ñ*ˆDŒJð, ð+ �XÒØ�O‰O×"Ñ"¬J°|Ñ,DØ,?ñ$Aô Bà�O‰O×"Ñ"¬J°|Ñ,DØ,4ñ$6ô 7ð$ ð! ”S‰[àØ”_Ñ$ð �O‰O×"Ñ"¬JÐ7HÑ,IØ$(¨4¯;©;×+AÑ+AÄ/ÐSWÓ+XÑ$Xñ$Zô [ð ð —K‘K×*Ñ*Ð+?Ó@ˆEØ�O‰O×"Ñ"¬J°|Ñ,DØ$(¨5¡Lñ$2ô 3àr+   c                 óF   — | j                  «        | j                  | _        y©NT)rl   r!   r"   r5   s    r*   r~   zHTMLTokenizer.entityDataState  s   € Ø×ÑÔØ—^‘^ˆŒ
Ør+   c                 ól  — | j                   j                  «       }|dk(  r| j                  | _        y|dk(  r| j                  | _        y|t
        k(  ry|dk(  rK| j                  j                  t        d   ddœ«       | j                  j                  t        d   d	dœ«       y|t        v rG| j                  j                  t        d
   || j                   j                  t        d«      z   dœ«       y| j                   j                  d«      }| j                  j                  t        d   ||z   dœ«       y)NrW   rX   Fr{   r-   r|   r.   r_   r?   r^   Tr}   )r   rG   ÚcharacterReferenceInRcdatar"   ÚrcdataLessThanSignStater   r1   rH   r   r   r€   r�   s      r*   ÚrcdataStatezHTMLTokenizer.rcdataState"  s0  € Ø�{‰{×ÑÓ!ˆØ�3Š;Ø×8Ñ8ˆDŒJð0 ð/ �SŠ[Ø×5Ñ5ˆDŒJð, ð+ ”SŠ[àØ�XÒØ�O‰O×"Ñ"¬J°|Ñ,DØ,?ñ$Aô Bà�O‰O×"Ñ"¬J°|Ñ,DØ,4ñ$6ô 7ð ð ”_Ñ$ð �O‰O×"Ñ"¬JÐ7HÑ,IØ$(¨4¯;©;×+AÑ+AÄ/ÐSWÓ+XÑ$Xñ$Zô [ð ð —K‘K×*Ñ*Ð+?Ó@ˆEØ�O‰O×"Ñ"¬J°|Ñ,DØ$(¨5¡Lñ$2ô 3àr+   c                 óF   — | j                  «        | j                  | _        yr„   )rl   rˆ   r"   r5   s    r*   r†   z(HTMLTokenizer.characterReferenceInRcdata?  s   € Ø×ÑÔØ×%Ñ%ˆŒ
Ør+   c                 ó   — | j                   j                  «       }|dk(  r| j                  | _        y
|dk(  rK| j                  j                  t        d   ddœ«       | j                  j                  t        d   ddœ«       y
|t        k(  ry| j                   j                  d	«      }| j                  j                  t        d   ||z   dœ«       y
©NrX   r{   r-   r|   r.   r_   r?   F)rX   r{   T)	r   rG   ÚrawtextLessThanSignStater"   r1   rH   r   r   r€   r�   s      r*   ÚrawtextStatezHTMLTokenizer.rawtextStateD  sÈ   € Ø�{‰{×ÑÓ!ˆØ�3Š;Ø×6Ñ6ˆDŒJð ð �XÒØ�O‰O×"Ñ"¬J°|Ñ,DØ,?ñ$Aô Bà�O‰O×"Ñ"¬J°|Ñ,DØ,4ñ$6ô 7ð ð ”SŠ[àà—K‘K×*Ñ*¨?Ó;ˆEØ�O‰O×"Ñ"¬J°|Ñ,DØ$(¨5¡Lñ$2ô 3àr+   c                 ó   — | j                   j                  «       }|dk(  r| j                  | _        y
|dk(  rK| j                  j                  t        d   ddœ«       | j                  j                  t        d   ddœ«       y
|t        k(  ry| j                   j                  d	«      }| j                  j                  t        d   ||z   dœ«       y
r‹   )	r   rG   ÚscriptDataLessThanSignStater"   r1   rH   r   r   r€   r�   s      r*   ÚscriptDataStatezHTMLTokenizer.scriptDataStateV  sÈ   € Ø�{‰{×ÑÓ!ˆØ�3Š;Ø×9Ñ9ˆDŒJð ð �XÒØ�O‰O×"Ñ"¬J°|Ñ,DØ,?ñ$Aô Bà�O‰O×"Ñ"¬J°|Ñ,DØ,4ñ$6ô 7ð ð ”SŠ[àà—K‘K×*Ñ*¨?Ó;ˆEØ�O‰O×"Ñ"¬J°|Ñ,DØ$(¨5¡Lñ$2ô 3àr+   c                 ón  — | j                   j                  «       }|t        k(  ry|dk(  rK| j                  j	                  t
        d   ddœ«       | j                  j	                  t
        d   ddœ«       y| j                  j	                  t
        d   || j                   j                  d«      z   dœ«       y)	NFr{   r-   r|   r.   r_   r?   T)r   rG   r   r1   rH   r   r€   ©r'   r0   s     r*   ÚplaintextStatezHTMLTokenizer.plaintextStateh  s«   € Ø�{‰{×ÑÓ!ˆØ”3Š;àØ�XÒØ�O‰O×"Ñ"¬J°|Ñ,DØ,?ñ$Aô Bà�O‰O×"Ñ"¬J°|Ñ,DØ,4ñ$6ô 7ð
 ð �O‰O×"Ñ"¬J°|Ñ,DØ$(¨4¯;©;×+AÑ+AÀ(Ó+KÑ$Kñ$Mô Nàr+   c                 óL  — | j                   j                  «       }|dk(  r| j                  | _        y|dk(  r| j                  | _        y|t
        v r&t        d   |g dddœ| _        | j                  | _        y|dk(  r\| j                  j                  t        d   dd	œ«       | j                  j                  t        d
   dd	œ«       | j                  | _        y|dk(  rR| j                  j                  t        d   dd	œ«       | j                   j                  |«       | j                  | _        y| j                  j                  t        d   dd	œ«       | j                  j                  t        d
   dd	œ«       | j                   j                  |«       | j                  | _        y)Nú!ú/rq   F)r/   rp   r0   rs   ÚselfClosingAcknowledgedú>r-   z'expected-tag-name-but-got-right-bracketr.   r_   z<>ú?z'expected-tag-name-but-got-question-markzexpected-tag-namerX   T)r   rG   ÚmarkupDeclarationOpenStater"   ÚcloseTagOpenStater   r   r$   ÚtagNameStater1   rH   r!   rN   ÚbogusCommentStater’   s     r*   r   zHTMLTokenizer.tagOpenStatew  s�  € Ø�{‰{×ÑÓ!ˆØ�3Š;Ø×8Ñ8ˆDŒJð< ð; �SŠ[Ø×/Ñ/ˆDŒJð8 ð7 ”\Ñ!Ü)3°JÑ)?Ø)-°rØ05Ø<Añ!CˆDÔð ×*Ñ*ˆDŒJð, ð+ �SŠ[ð �O‰O×"Ñ"¬J°|Ñ,DØ$Mñ$Oô Pà�O‰O×"Ñ"¬J°|Ñ,DÈdÑ#SÔTØŸ™ˆDŒJð ð �SŠ[ð �O‰O×"Ñ"¬J°|Ñ,DØ$Mñ$Oô Pà�K‰K×Ñ˜dÔ#Ø×/Ñ/ˆDŒJð ð �O‰O×"Ñ"¬J°|Ñ,DØ$7ñ$9ô :à�O‰O×"Ñ"¬J°|Ñ,DÈcÑ#RÔSØ�K‰K×Ñ˜dÔ#ØŸ™ˆDŒJØr+   c                 óz  — | j                   j                  «       }|t        v r%t        d   |g ddœ| _        | j
                  | _        y|dk(  r7| j                  j                  t        d   ddœ«       | j                  | _        y|t        u r\| j                  j                  t        d   ddœ«       | j                  j                  t        d	   d
dœ«       | j                  | _        y| j                  j                  t        d   dd|idœ«       | j                   j                  |«       | j                  | _        y)Nrr   F©r/   rp   r0   rs   r˜   r-   z*expected-closing-tag-but-got-right-bracketr.   z expected-closing-tag-but-got-eofr_   ú</z!expected-closing-tag-but-got-charr0   r<   T)r   rG   r   r   r$   rœ   r"   r1   rH   r!   r   rN   r�   r’   s     r*   r›   zHTMLTokenizer.closeTagOpenStateš  s,  € Ø�{‰{×ÑÓ!ˆØ”<ÑÜ)3°HÑ)=ÀtØ)+¸Eñ!CˆDÔà×*Ñ*ˆDŒJð" ð! �SŠ[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$Pñ$Rô SàŸ™ˆDŒJð ð ”S‰[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$Fñ$Hô Ià�O‰O×"Ñ"¬J°|Ñ,DÈdÑ#SÔTØŸ™ˆDŒJð ð �O‰O×"Ñ"¬J°|Ñ,DØ$GØ17¸°ñ$@ô Að �K‰K×Ñ˜dÔ#Ø×/Ñ/ˆDŒJØr+   c                 óö  — | j                   j                  «       }|t        v r| j                  | _        y
|dk(  r| j                  «        y
|t        u r7| j                  j                  t        d   ddœ«       | j                  | _        y
|dk(  r| j                  | _        y
|dk(  r=| j                  j                  t        d   ddœ«       | j                  dxx   d	z  cc<   y
| j                  dxx   |z  cc<   y
)Nr˜   r-   zeof-in-tag-namer.   r–   r{   r|   rp   r?   T)r   rG   r   ÚbeforeAttributeNameStater"   ry   r   r1   rH   r   r!   ÚselfClosingStartTagStater$   r’   s     r*   rœ   zHTMLTokenizer.tagNameState²  s  € Ø�{‰{×ÑÓ!ˆØ”?Ñ"Ø×6Ñ6ˆDŒJð" ð! �SŠ[Ø×!Ñ!Ô#ð ð ”S‰[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$5ñ$7ô 8àŸ™ˆDŒJð ð �SŠ[Ø×6Ñ6ˆDŒJð ð �XÒØ�O‰O×"Ñ"¬J°|Ñ,DØ,?ñ$Aô Bà×Ñ˜fÓ%¨Ñ1Ó%ð
 ð ×Ñ˜fÓ%¨Ñ-Ó%ð r+   c                 ó  — | j                   j                  «       }|dk(  rd| _        | j                  | _        y| j
                  j                  t        d   ddœ«       | j                   j                  |«       | j                  | _        y©Nr–   r:   r_   rX   r.   T)
r   rG   ÚtemporaryBufferÚrcdataEndTagOpenStater"   r1   rH   r   rN   rˆ   r’   s     r*   r‡   z%HTMLTokenizer.rcdataLessThanSignStateÈ  su   € Ø�{‰{×ÑÓ!ˆØ�3Š;Ø#%ˆDÔ Ø×3Ñ3ˆDŒJð
 ð �O‰O×"Ñ"¬J°|Ñ,DÈcÑ#RÔSØ�K‰K×Ñ˜dÔ#Ø×)Ñ)ˆDŒJØr+   c                 ó8  — | j                   j                  «       }|t        v r'| xj                  |z  c_        | j                  | _        y| j                  j                  t        d   ddœ«       | j                   j                  |«       | j                  | _        y©Nr_   r    r.   T)r   rG   r   r¦   ÚrcdataEndTagNameStater"   r1   rH   r   rN   rˆ   r’   s     r*   r§   z#HTMLTokenizer.rcdataEndTagOpenStateÓ  s   € Ø�{‰{×ÑÓ!ˆØ”<ÑØ× Ò  DÑ(Õ Ø×3Ñ3ˆDŒJð
 ð �O‰O×"Ñ"¬J°|Ñ,DÈdÑ#SÔTØ�K‰K×Ñ˜dÔ#Ø×)Ñ)ˆDŒJØr+   c                 ó&  — | j                   xr8 | j                   d   j                  «       | j                  j                  «       k(  }| j                  j	                  «       }|t
        v r1|r/t        d   | j                  g ddœ| _         | j                  | _        y
|dk(  r1|r/t        d   | j                  g ddœ| _         | j                  | _        y
|dk(  rA|r?t        d   | j                  g ddœ| _         | j                  «        | j                  | _        y
|t        v r| xj                  |z  c_        y
| j                  j                  t        d   d| j                  z   d	œ«       | j                  j                  |«       | j                   | _        y
©Nrp   rr   FrŸ   r–   r˜   r_   r    r.   T)r$   Úlowerr¦   r   rG   r   r   r¢   r"   r£   ry   r!   r   r1   rH   rN   rˆ   ©r'   Úappropriater0   s      r*   rª   z#HTMLTokenizer.rcdataEndTagNameStateÞ  sˆ  € Ø×'Ñ'Òm¨D×,=Ñ,=¸fÑ,E×,KÑ,KÓ,MÐQU×QeÑQe×QkÑQkÓQmÑ,mˆØ�{‰{×ÑÓ!ˆØ”?Ñ"¡{Ü)3°HÑ)=Ø)-×)=Ñ)=Ø)+¸Eñ!CˆDÔð ×6Ñ6ˆDŒJð& ð% �SŠ[™[Ü)3°HÑ)=Ø)-×)=Ñ)=Ø)+¸Eñ!CˆDÔð ×6Ñ6ˆDŒJð ð �SŠ[™[Ü)3°HÑ)=Ø)-×)=Ñ)=Ø)+¸Eñ!CˆDÔð ×!Ñ!Ô#ØŸ™ˆDŒJð ð ”\Ñ!Ø× Ò  DÑ(Õ ð ð	 �O‰O×"Ñ"¬J°|Ñ,DØ,0°4×3GÑ3GÑ,Gñ$Iô Jà�K‰K×Ñ˜dÔ#Ø×)Ñ)ˆDŒJØr+   c                 ó  — | j                   j                  «       }|dk(  rd| _        | j                  | _        y| j
                  j                  t        d   ddœ«       | j                   j                  |«       | j                  | _        yr¥   )
r   rG   r¦   ÚrawtextEndTagOpenStater"   r1   rH   r   rN   r�   r’   s     r*   rŒ   z&HTMLTokenizer.rawtextLessThanSignStateú  su   € Ø�{‰{×ÑÓ!ˆØ�3Š;Ø#%ˆDÔ Ø×4Ñ4ˆDŒJð
 ð �O‰O×"Ñ"¬J°|Ñ,DÈcÑ#RÔSØ�K‰K×Ñ˜dÔ#Ø×*Ñ*ˆDŒJØr+   c                 ó8  — | j                   j                  «       }|t        v r'| xj                  |z  c_        | j                  | _        y| j                  j                  t        d   ddœ«       | j                   j                  |«       | j                  | _        yr©   )r   rG   r   r¦   ÚrawtextEndTagNameStater"   r1   rH   r   rN   r�   r’   s     r*   r±   z$HTMLTokenizer.rawtextEndTagOpenState  s   € Ø�{‰{×ÑÓ!ˆØ”<ÑØ× Ò  DÑ(Õ Ø×4Ñ4ˆDŒJð
 ð �O‰O×"Ñ"¬J°|Ñ,DÈdÑ#SÔTØ�K‰K×Ñ˜dÔ#Ø×*Ñ*ˆDŒJØr+   c                 ó&  — | j                   xr8 | j                   d   j                  «       | j                  j                  «       k(  }| j                  j	                  «       }|t
        v r1|r/t        d   | j                  g ddœ| _         | j                  | _        y
|dk(  r1|r/t        d   | j                  g ddœ| _         | j                  | _        y
|dk(  rA|r?t        d   | j                  g ddœ| _         | j                  «        | j                  | _        y
|t        v r| xj                  |z  c_        y
| j                  j                  t        d   d| j                  z   d	œ«       | j                  j                  |«       | j                   | _        y
r¬   )r$   r­   r¦   r   rG   r   r   r¢   r"   r£   ry   r!   r   r1   rH   rN   r�   r®   s      r*   r³   z$HTMLTokenizer.rawtextEndTagNameState  sˆ  € Ø×'Ñ'Òm¨D×,=Ñ,=¸fÑ,E×,KÑ,KÓ,MÐQU×QeÑQe×QkÑQkÓQmÑ,mˆØ�{‰{×ÑÓ!ˆØ”?Ñ"¡{Ü)3°HÑ)=Ø)-×)=Ñ)=Ø)+¸Eñ!CˆDÔð ×6Ñ6ˆDŒJð& ð% �SŠ[™[Ü)3°HÑ)=Ø)-×)=Ñ)=Ø)+¸Eñ!CˆDÔð ×6Ñ6ˆDŒJð ð �SŠ[™[Ü)3°HÑ)=Ø)-×)=Ñ)=Ø)+¸Eñ!CˆDÔð ×!Ñ!Ô#ØŸ™ˆDŒJð ð ”\Ñ!Ø× Ò  DÑ(Õ ð ð	 �O‰O×"Ñ"¬J°|Ñ,DØ,0°4×3GÑ3GÑ,Gñ$Iô Jà�K‰K×Ñ˜dÔ#Ø×*Ñ*ˆDŒJØr+   c                 óŽ  — | j                   j                  «       }|dk(  rd| _        | j                  | _        y|dk(  r7| j
                  j                  t        d   ddœ«       | j                  | _        y| j
                  j                  t        d   ddœ«       | j                   j                  |«       | j                  | _        y)	Nr–   r:   r•   r_   z<!r.   rX   T)r   rG   r¦   ÚscriptDataEndTagOpenStater"   r1   rH   r   ÚscriptDataEscapeStartStaterN   r�   r’   s     r*   r�   z)HTMLTokenizer.scriptDataLessThanSignState,  s¬   € Ø�{‰{×ÑÓ!ˆØ�3Š;Ø#%ˆDÔ Ø×7Ñ7ˆDŒJð ð �SŠ[Ø�O‰O×"Ñ"¬J°|Ñ,DÈdÑ#SÔTØ×8Ñ8ˆDŒJð
 ð �O‰O×"Ñ"¬J°|Ñ,DÈcÑ#RÔSØ�K‰K×Ñ˜dÔ#Ø×-Ñ-ˆDŒJØr+   c                 ó8  — | j                   j                  «       }|t        v r'| xj                  |z  c_        | j                  | _        y| j                  j                  t        d   ddœ«       | j                   j                  |«       | j                  | _        yr©   )r   rG   r   r¦   ÚscriptDataEndTagNameStater"   r1   rH   r   rN   r�   r’   s     r*   r¶   z'HTMLTokenizer.scriptDataEndTagOpenState:  s   € Ø�{‰{×ÑÓ!ˆØ”<ÑØ× Ò  DÑ(Õ Ø×7Ñ7ˆDŒJð
 ð �O‰O×"Ñ"¬J°|Ñ,DÈdÑ#SÔTØ�K‰K×Ñ˜dÔ#Ø×-Ñ-ˆDŒJØr+   c                 ó&  — | j                   xr8 | j                   d   j                  «       | j                  j                  «       k(  }| j                  j	                  «       }|t
        v r1|r/t        d   | j                  g ddœ| _         | j                  | _        y
|dk(  r1|r/t        d   | j                  g ddœ| _         | j                  | _        y
|dk(  rA|r?t        d   | j                  g ddœ| _         | j                  «        | j                  | _        y
|t        v r| xj                  |z  c_        y
| j                  j                  t        d   d| j                  z   d	œ«       | j                  j                  |«       | j                   | _        y
r¬   )r$   r­   r¦   r   rG   r   r   r¢   r"   r£   ry   r!   r   r1   rH   rN   r�   r®   s      r*   r¹   z'HTMLTokenizer.scriptDataEndTagNameStateE  sˆ  € Ø×'Ñ'Òm¨D×,=Ñ,=¸fÑ,E×,KÑ,KÓ,MÐQU×QeÑQe×QkÑQkÓQmÑ,mˆØ�{‰{×ÑÓ!ˆØ”?Ñ"¡{Ü)3°HÑ)=Ø)-×)=Ñ)=Ø)+¸Eñ!CˆDÔð ×6Ñ6ˆDŒJð& ð% �SŠ[™[Ü)3°HÑ)=Ø)-×)=Ñ)=Ø)+¸Eñ!CˆDÔð ×6Ñ6ˆDŒJð ð �SŠ[™[Ü)3°HÑ)=Ø)-×)=Ñ)=Ø)+¸Eñ!CˆDÔð ×!Ñ!Ô#ØŸ™ˆDŒJð ð ”\Ñ!Ø× Ò  DÑ(Õ ð ð	 �O‰O×"Ñ"¬J°|Ñ,DØ,0°4×3GÑ3GÑ,Gñ$Iô Jà�K‰K×Ñ˜dÔ#Ø×-Ñ-ˆDŒJØr+   c                 ó  — | j                   j                  «       }|dk(  r7| j                  j                  t        d   ddœ«       | j
                  | _        y| j                   j                  |«       | j                  | _        y©Nú-r_   r.   T)	r   rG   r1   rH   r   ÚscriptDataEscapeStartDashStater"   rN   r�   r’   s     r*   r·   z(HTMLTokenizer.scriptDataEscapeStartStatea  óm   € Ø�{‰{×ÑÓ!ˆØ�3Š;Ø�O‰O×"Ñ"¬J°|Ñ,DÈcÑ#RÔSØ×<Ñ<ˆDŒJð ð �K‰K×Ñ˜dÔ#Ø×-Ñ-ˆDŒJØr+   c                 ó  — | j                   j                  «       }|dk(  r7| j                  j                  t        d   ddœ«       | j
                  | _        y| j                   j                  |«       | j                  | _        yr¼   )	r   rG   r1   rH   r   ÚscriptDataEscapedDashDashStater"   rN   r�   r’   s     r*   r¾   z,HTMLTokenizer.scriptDataEscapeStartDashStatek  r¿   r+   c                 ó:  — | j                   j                  «       }|dk(  r7| j                  j                  t        d   ddœ«       | j
                  | _        y
|dk(  r| j                  | _        y
|dk(  rK| j                  j                  t        d   ddœ«       | j                  j                  t        d   ddœ«       y
|t        k(  r| j                  | _        y
| j                   j                  d	«      }| j                  j                  t        d   ||z   dœ«       y
)Nr½   r_   r.   rX   r{   r-   r|   r?   )rX   r½   r{   T)r   rG   r1   rH   r   ÚscriptDataEscapedDashStater"   Ú"scriptDataEscapedLessThanSignStater   r!   r€   r�   s      r*   ÚscriptDataEscapedStatez$HTMLTokenizer.scriptDataEscapedStateu  s  € Ø�{‰{×ÑÓ!ˆØ�3Š;Ø�O‰O×"Ñ"¬J°|Ñ,DÈcÑ#RÔSØ×8Ñ8ˆDŒJð ð �SŠ[Ø×@Ñ@ˆDŒJð ð �XÒØ�O‰O×"Ñ"¬J°|Ñ,DØ,?ñ$Aô Bà�O‰O×"Ñ"¬J°|Ñ,DØ,4ñ$6ô 7ð ð ”SŠ[ØŸ™ˆDŒJð
 ð —K‘K×*Ñ*Ð+?Ó@ˆEØ�O‰O×"Ñ"¬J°|Ñ,DØ$(¨5¡Lñ$2ô 3àr+   c                 óB  — | j                   j                  «       }|dk(  r7| j                  j                  t        d   ddœ«       | j
                  | _        y	|dk(  r| j                  | _        y	|dk(  r\| j                  j                  t        d   ddœ«       | j                  j                  t        d   ddœ«       | j                  | _        y	|t        k(  r| j                  | _        y	| j                  j                  t        d   |dœ«       | j                  | _        y	)
Nr½   r_   r.   rX   r{   r-   r|   r?   T)r   rG   r1   rH   r   rÁ   r"   rÄ   rÅ   r   r!   r’   s     r*   rÃ   z(HTMLTokenizer.scriptDataEscapedDashState‰  s  € Ø�{‰{×ÑÓ!ˆØ�3Š;Ø�O‰O×"Ñ"¬J°|Ñ,DÈcÑ#RÔSØ×<Ñ<ˆDŒJð ð �SŠ[Ø×@Ñ@ˆDŒJð ð �XÒØ�O‰O×"Ñ"¬J°|Ñ,DØ,?ñ$Aô Bà�O‰O×"Ñ"¬J°|Ñ,DØ,4ñ$6ô 7à×4Ñ4ˆDŒJð ð ”SŠ[ØŸ™ˆDŒJð ð �O‰O×"Ñ"¬J°|Ñ,DÈdÑ#SÔTØ×4Ñ4ˆDŒJØr+   c                 ó˜  — | j                   j                  «       }|dk(  r&| j                  j                  t        d   ddœ«       y
|dk(  r| j
                  | _        y
|dk(  r7| j                  j                  t        d   ddœ«       | j                  | _        y
|dk(  r\| j                  j                  t        d   ddœ«       | j                  j                  t        d   d	dœ«       | j                  | _        y
|t        k(  r| j                  | _        y
| j                  j                  t        d   |dœ«       | j                  | _        y
)Nr½   r_   r.   rX   r˜   r{   r-   r|   r?   T)r   rG   r1   rH   r   rÄ   r"   r�   rÅ   r   r!   r’   s     r*   rÁ   z,HTMLTokenizer.scriptDataEscapedDashDashState�  s5  € Ø�{‰{×ÑÓ!ˆØ�3Š;Ø�O‰O×"Ñ"¬J°|Ñ,DÈcÑ#RÔSð" ð! �SŠ[Ø×@Ñ@ˆDŒJð ð �SŠ[Ø�O‰O×"Ñ"¬J°|Ñ,DÈcÑ#RÔSØ×-Ñ-ˆDŒJð ð �XÒØ�O‰O×"Ñ"¬J°|Ñ,DØ,?ñ$Aô Bà�O‰O×"Ñ"¬J°|Ñ,DØ,4ñ$6ô 7à×4Ñ4ˆDŒJð ð ”SŠ[ØŸ™ˆDŒJð ð �O‰O×"Ñ"¬J°|Ñ,DÈdÑ#SÔTØ×4Ñ4ˆDŒJØr+   c                 ó¨  — | j                   j                  «       }|dk(  rd| _        | j                  | _        y|t
        v rA| j                  j                  t        d   d|z   dœ«       || _        | j                  | _        y| j                  j                  t        d   ddœ«       | j                   j                  |«       | j                  | _        yr¥   )r   rG   r¦   Ú scriptDataEscapedEndTagOpenStater"   r   r1   rH   r   Ú scriptDataDoubleEscapeStartStaterN   rÅ   r’   s     r*   rÄ   z0HTMLTokenizer.scriptDataEscapedLessThanSignState³  sº   € Ø�{‰{×ÑÓ!ˆØ�3Š;Ø#%ˆDÔ Ø×>Ñ>ˆDŒJð ð ”\Ñ!Ø�O‰O×"Ñ"¬J°|Ñ,DÈcÐTXÉjÑ#YÔZØ#'ˆDÔ Ø×>Ñ>ˆDŒJð
 ð �O‰O×"Ñ"¬J°|Ñ,DÈcÑ#RÔSØ�K‰K×Ñ˜dÔ#Ø×4Ñ4ˆDŒJØr+   c                 ó  — | j                   j                  «       }|t        v r|| _        | j                  | _        y| j                  j                  t        d   ddœ«       | j                   j                  |«       | j                  | _        yr©   )r   rG   r   r¦   Ú scriptDataEscapedEndTagNameStater"   r1   rH   r   rN   rÅ   r’   s     r*   rÉ   z.HTMLTokenizer.scriptDataEscapedEndTagOpenStateÂ  sv   € Ø�{‰{×ÑÓ!ˆØ”<ÑØ#'ˆDÔ Ø×>Ñ>ˆDŒJð
 ð �O‰O×"Ñ"¬J°|Ñ,DÈdÑ#SÔTØ�K‰K×Ñ˜dÔ#Ø×4Ñ4ˆDŒJØr+   c                 ó&  — | j                   xr8 | j                   d   j                  «       | j                  j                  «       k(  }| j                  j	                  «       }|t
        v r1|r/t        d   | j                  g ddœ| _         | j                  | _        y
|dk(  r1|r/t        d   | j                  g ddœ| _         | j                  | _        y
|dk(  rA|r?t        d   | j                  g ddœ| _         | j                  «        | j                  | _        y
|t        v r| xj                  |z  c_        y
| j                  j                  t        d   d| j                  z   d	œ«       | j                  j                  |«       | j                   | _        y
r¬   )r$   r­   r¦   r   rG   r   r   r¢   r"   r£   ry   r!   r   r1   rH   rN   rÅ   r®   s      r*   rÌ   z.HTMLTokenizer.scriptDataEscapedEndTagNameStateÍ  sˆ  € Ø×'Ñ'Òm¨D×,=Ñ,=¸fÑ,E×,KÑ,KÓ,MÐQU×QeÑQe×QkÑQkÓQmÑ,mˆØ�{‰{×ÑÓ!ˆØ”?Ñ"¡{Ü)3°HÑ)=Ø)-×)=Ñ)=Ø)+¸Eñ!CˆDÔð ×6Ñ6ˆDŒJð& ð% �SŠ[™[Ü)3°HÑ)=Ø)-×)=Ñ)=Ø)+¸Eñ!CˆDÔð ×6Ñ6ˆDŒJð ð �SŠ[™[Ü)3°HÑ)=Ø)-×)=Ñ)=Ø)+¸Eñ!CˆDÔð ×!Ñ!Ô#ØŸ™ˆDŒJð ð ”\Ñ!Ø× Ò  DÑ(Õ ð ð	 �O‰O×"Ñ"¬J°|Ñ,DØ,0°4×3GÑ3GÑ,Gñ$Iô Jà�K‰K×Ñ˜dÔ#Ø×4Ñ4ˆDŒJØr+   c                 ó
  — | j                   j                  «       }|t        t        d«      z  v rf| j                  j                  t        d   |dœ«       | j                  j                  «       dk(  r| j                  | _
        y| j                  | _
        y|t        v r;| j                  j                  t        d   |dœ«       | xj                  |z  c_        y| j                   j                  |«       | j                  | _
        y©N)r–   r˜   r_   r.   ÚscriptT)r   rG   r   rK   r1   rH   r   r¦   r­   ÚscriptDataDoubleEscapedStater"   rÅ   r   rN   r’   s     r*   rÊ   z.HTMLTokenizer.scriptDataDoubleEscapeStartStateé  sß   € Ø�{‰{×ÑÓ!ˆØ”O¤i°
Ó&;Ñ;Ñ<Ø�O‰O×"Ñ"¬J°|Ñ,DÈdÑ#SÔTØ×#Ñ#×)Ñ)Ó+¨xÒ7Ø!×>Ñ>�”
ð ð "×8Ñ8�”
ð ð ”\Ñ!Ø�O‰O×"Ñ"¬J°|Ñ,DÈdÑ#SÔTØ× Ò  DÑ(Õ ð ð �K‰K×Ñ˜dÔ#Ø×4Ñ4ˆDŒJØr+   c                 ó’  — | j                   j                  «       }|dk(  r7| j                  j                  t        d   ddœ«       | j
                  | _        y
|dk(  r7| j                  j                  t        d   ddœ«       | j                  | _        y
|dk(  rK| j                  j                  t        d   ddœ«       | j                  j                  t        d   ddœ«       y
|t        k(  r7| j                  j                  t        d   d	dœ«       | j                  | _        y
| j                  j                  t        d   |dœ«       y
©Nr½   r_   r.   rX   r{   r-   r|   r?   úeof-in-script-in-scriptT)
r   rG   r1   rH   r   Ú scriptDataDoubleEscapedDashStater"   Ú(scriptDataDoubleEscapedLessThanSignStater   r!   r’   s     r*   rÑ   z*HTMLTokenizer.scriptDataDoubleEscapedStateù  s/  € Ø�{‰{×ÑÓ!ˆØ�3Š;Ø�O‰O×"Ñ"¬J°|Ñ,DÈcÑ#RÔSØ×>Ñ>ˆDŒJð ð �SŠ[Ø�O‰O×"Ñ"¬J°|Ñ,DÈcÑ#RÔSØ×FÑFˆDŒJð ð �XÒØ�O‰O×"Ñ"¬J°|Ñ,DØ,?ñ$Aô Bà�O‰O×"Ñ"¬J°|Ñ,DØ,4ñ$6ô 7ð ð ”SŠ[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$=ñ$?ô @àŸ™ˆDŒJð ð �O‰O×"Ñ"¬J°|Ñ,DÈdÑ#SÔTØr+   c                 óÖ  — | j                   j                  «       }|dk(  r7| j                  j                  t        d   ddœ«       | j
                  | _        y
|dk(  r7| j                  j                  t        d   ddœ«       | j                  | _        y
|dk(  r\| j                  j                  t        d   ddœ«       | j                  j                  t        d   ddœ«       | j                  | _        y
|t        k(  r7| j                  j                  t        d   d	dœ«       | j                  | _        y
| j                  j                  t        d   |dœ«       | j                  | _        y
rÓ   )r   rG   r1   rH   r   Ú$scriptDataDoubleEscapedDashDashStater"   rÖ   rÑ   r   r!   r’   s     r*   rÕ   z.HTMLTokenizer.scriptDataDoubleEscapedDashState  sI  € Ø�{‰{×ÑÓ!ˆØ�3Š;Ø�O‰O×"Ñ"¬J°|Ñ,DÈcÑ#RÔSØ×BÑBˆDŒJð" ð! �SŠ[Ø�O‰O×"Ñ"¬J°|Ñ,DÈcÑ#RÔSØ×FÑFˆDŒJð ð �XÒØ�O‰O×"Ñ"¬J°|Ñ,DØ,?ñ$Aô Bà�O‰O×"Ñ"¬J°|Ñ,DØ,4ñ$6ô 7à×:Ñ:ˆDŒJð ð ”SŠ[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$=ñ$?ô @àŸ™ˆDŒJð ð �O‰O×"Ñ"¬J°|Ñ,DÈdÑ#SÔTØ×:Ñ:ˆDŒJØr+   c                 ó,  — | j                   j                  «       }|dk(  r&| j                  j                  t        d   ddœ«       y|dk(  r7| j                  j                  t        d   ddœ«       | j
                  | _        y|dk(  r7| j                  j                  t        d   ddœ«       | j                  | _        y|dk(  r\| j                  j                  t        d   ddœ«       | j                  j                  t        d   d	dœ«       | j                  | _        y|t        k(  r7| j                  j                  t        d   d
dœ«       | j                  | _        y| j                  j                  t        d   |dœ«       | j                  | _        y)Nr½   r_   r.   rX   r˜   r{   r-   r|   r?   rÔ   T)r   rG   r1   rH   r   rÖ   r"   r�   rÑ   r   r!   r’   s     r*   rØ   z2HTMLTokenizer.scriptDataDoubleEscapedDashDashState%  ss  € Ø�{‰{×ÑÓ!ˆØ�3Š;Ø�O‰O×"Ñ"¬J°|Ñ,DÈcÑ#RÔSð( ð' �SŠ[Ø�O‰O×"Ñ"¬J°|Ñ,DÈcÑ#RÔSØ×FÑFˆDŒJð" ð! �SŠ[Ø�O‰O×"Ñ"¬J°|Ñ,DÈcÑ#RÔSØ×-Ñ-ˆDŒJð ð �XÒØ�O‰O×"Ñ"¬J°|Ñ,DØ,?ñ$Aô Bà�O‰O×"Ñ"¬J°|Ñ,DØ,4ñ$6ô 7à×:Ñ:ˆDŒJð ð ”SŠ[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$=ñ$?ô @àŸ™ˆDŒJð ð �O‰O×"Ñ"¬J°|Ñ,DÈdÑ#SÔTØ×:Ñ:ˆDŒJØr+   c                 ó  — | j                   j                  «       }|dk(  r>| j                  j                  t        d   ddœ«       d| _        | j                  | _        y| j                   j                  |«       | j                  | _        y)Nr–   r_   r.   r:   T)
r   rG   r1   rH   r   r¦   ÚscriptDataDoubleEscapeEndStater"   rN   rÑ   r’   s     r*   rÖ   z6HTMLTokenizer.scriptDataDoubleEscapedLessThanSignState>  su   € Ø�{‰{×ÑÓ!ˆØ�3Š;Ø�O‰O×"Ñ"¬J°|Ñ,DÈcÑ#RÔSØ#%ˆDÔ Ø×<Ñ<ˆDŒJð ð �K‰K×Ñ˜dÔ#Ø×:Ñ:ˆDŒJØr+   c                 ó
  — | j                   j                  «       }|t        t        d«      z  v rf| j                  j                  t        d   |dœ«       | j                  j                  «       dk(  r| j                  | _
        y| j                  | _
        y|t        v r;| j                  j                  t        d   |dœ«       | xj                  |z  c_        y| j                   j                  |«       | j                  | _
        yrÏ   )r   rG   r   rK   r1   rH   r   r¦   r­   rÅ   r"   rÑ   r   rN   r’   s     r*   rÛ   z,HTMLTokenizer.scriptDataDoubleEscapeEndStateI  sß   € Ø�{‰{×ÑÓ!ˆØ”O¤i°
Ó&;Ñ;Ñ<Ø�O‰O×"Ñ"¬J°|Ñ,DÈdÑ#SÔTØ×#Ñ#×)Ñ)Ó+¨xÒ7Ø!×8Ñ8�”
ð ð "×>Ñ>�”
ð ð ”\Ñ!Ø�O‰O×"Ñ"¬J°|Ñ,DÈdÑ#SÔTØ× Ò  DÑ(Õ ð ð �K‰K×Ñ˜dÔ#Ø×:Ñ:ˆDŒJØr+   c                 ó¦  — | j                   j                  «       }|t        v r!| j                   j                  t        d«       y|t        v r2| j
                  d   j                  |dg«       | j                  | _        y|dk(  r| j                  «        y|dk(  r| j                  | _        y|dv rW| j                  j                  t        d   dd	œ«       | j
                  d   j                  |dg«       | j                  | _        y|d
k(  rW| j                  j                  t        d   dd	œ«       | j
                  d   j                  ddg«       | j                  | _        y|t        u r7| j                  j                  t        d   dd	œ«       | j                  | _        y| j
                  d   j                  |dg«       | j                  | _        y)NTr0   r:   r˜   r–   )ú'ú"r]   rX   r-   ú#invalid-character-in-attribute-namer.   r{   r|   r?   z#expected-attribute-name-but-got-eof)r   rG   r   r€   r   r$   rH   ÚattributeNameStater"   ry   r£   r1   r   r   r!   r’   s     r*   r¢   z&HTMLTokenizer.beforeAttributeNameStateY  sÇ  € Ø�{‰{×ÑÓ!ˆØ”?Ñ"Ø�K‰K×"Ñ"¤?°DÔ9ð2 ð1 ”\Ñ!Ø×Ñ˜fÑ%×,Ñ,¨d°B¨ZÔ8Ø×0Ñ0ˆDŒJð, ð+ �SŠ[Ø×!Ñ!Ô#ð( ð' �SŠ[Ø×6Ñ6ˆDŒJð$ ð# Ð)Ñ)Ø�O‰O×"Ñ"¬J°|Ñ,DØ$Iñ$Kô Là×Ñ˜fÑ%×,Ñ,¨d°B¨ZÔ8Ø×0Ñ0ˆDŒJð ð �XÒØ�O‰O×"Ñ"¬J°|Ñ,DØ,?ñ$Aô Bà×Ñ˜fÑ%×,Ñ,¨h¸¨^Ô<Ø×0Ñ0ˆDŒJð ð ”S‰[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$Iñ$Kô LàŸ™ˆDŒJð ð ×Ñ˜fÑ%×,Ñ,¨d°B¨ZÔ8Ø×0Ñ0ˆDŒJØr+   c                 ó¬  — | j                   j                  «       }d}d}|dk(  r| j                  | _        �nv|t        v rB| j
                  d   d   dxx   || j                   j                  t        d«      z   z  cc<   d}�n,|dk(  rd}�n#|t        v r| j                  | _        �n|dk(  r| j                  | _        nñ|d	k(  rE| j                  j                  t        d
   ddœ«       | j
                  d   d   dxx   dz  cc<   d}n§|dv rE| j                  j                  t        d
   ddœ«       | j
                  d   d   dxx   |z  cc<   d}n^|t        u r7| j                  j                  t        d
   ddœ«       | j                  | _        n| j
                  d   d   dxx   |z  cc<   d}|r¦| j
                  d   d   d   j                  t         «      | j
                  d   d   d<   | j
                  d   d d D ]D  \  }}| j
                  d   d   d   |k(  sŒ| j                  j                  t        d
   ddœ«        n |r| j#                  «        y)NTFr]   r0   rZ   r   r˜   r–   r{   r-   r|   r.   r?   ©rÞ   rß   rX   rà   zeof-in-attribute-namezduplicate-attribute)r   rG   ÚbeforeAttributeValueStater"   r   r$   r€   r   ÚafterAttributeNameStater£   r1   rH   r   r   r!   rt   r   ry   )r'   r0   ÚleavingThisStateÚ	emitTokenrp   Ú_s         r*   rá   z HTMLTokenizer.attributeNameStatew  sq  € Ø�{‰{×ÑÓ!ˆØÐØˆ	Ø�3Š;Ø×7Ñ7ˆDŽJØ”\Ñ!Ø×Ñ˜fÑ% bÑ)¨!Ó,°Ø—‘×&Ñ&¤|°TÓ:ñ1;ñ ;Ó,à$ÒØ�SŠ[ð ŠIØ”_Ñ$Ø×5Ñ5ˆDŽJØ�SŠ[Ø×6Ñ6ˆD�JØ�XÒØ�O‰O×"Ñ"¬J°|Ñ,DØ,?ñ$Aô Bà×Ñ˜fÑ% bÑ)¨!Ó,°Ñ8Ó,Ø$ÑØ�_Ñ$Ø�O‰O×"Ñ"¬J°|Ñ,Dà$Iñ$Kô Lð ×Ñ˜fÑ% bÑ)¨!Ó,°Ñ4Ó,Ø$ÑØ”S‰[Ø�O‰O×"Ñ"¬J°|Ñ,DØ,Cñ$Eô FàŸ™ˆD�Jà×Ñ˜fÑ% bÑ)¨!Ó,°Ñ4Ó,Ø$Ðáð
 ×!Ñ! &Ñ)¨"Ñ-¨aÑ0×:Ñ:Ô;KÓLð ×Ñ˜fÑ% bÑ)¨!Ñ,à×,Ñ,¨VÑ4°S°bÐ9ò ‘��aØ×$Ñ$ VÑ,¨RÑ0°Ñ3°tÓ;Ø—O‘O×*Ñ*´J¸|Ñ4LØ,Añ,Cô Dáð	ñ Ø×%Ñ%Ô'Ør+   c                 óÔ  — | j                   j                  «       }|t        v r!| j                   j                  t        d«       y|dk(  r| j                  | _        y|dk(  r| j                  «        y|t        v r2| j                  d   j                  |dg«       | j                  | _        y|dk(  r| j                  | _        y|dk(  rW| j                  j                  t        d   d	d
œ«       | j                  d   j                  ddg«       | j                  | _        y|dv rW| j                  j                  t        d   dd
œ«       | j                  d   j                  |dg«       | j                  | _        y|t        u r7| j                  j                  t        d   dd
œ«       | j                  | _        y| j                  d   j                  |dg«       | j                  | _        y)NTr]   r˜   r0   r:   r–   r{   r-   r|   r.   r?   rã   z&invalid-character-after-attribute-namezexpected-end-of-tag-but-got-eof)r   rG   r   r€   rä   r"   ry   r   r$   rH   rá   r£   r1   r   r   r!   r’   s     r*   rå   z%HTMLTokenizer.afterAttributeNameState­  sá  € Ø�{‰{×ÑÓ!ˆØ”?Ñ"Ø�K‰K×"Ñ"¤?°DÔ9ð6 ð5 �SŠ[Ø×7Ñ7ˆDŒJð2 ð1 �SŠ[Ø×!Ñ!Ô#ð. ð- ”\Ñ!Ø×Ñ˜fÑ%×,Ñ,¨d°B¨ZÔ8Ø×0Ñ0ˆDŒJð( ð' �SŠ[Ø×6Ñ6ˆDŒJð$ ð# �XÒØ�O‰O×"Ñ"¬J°|Ñ,DØ,?ñ$Aô Bà×Ñ˜fÑ%×,Ñ,¨h¸¨^Ô<Ø×0Ñ0ˆDŒJð ð �_Ñ$Ø�O‰O×"Ñ"¬J°|Ñ,DØ$Lñ$Nô Oà×Ñ˜fÑ%×,Ñ,¨d°B¨ZÔ8Ø×0Ñ0ˆDŒJð ð ”S‰[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$Eñ$Gô HàŸ™ˆDŒJð ð ×Ñ˜fÑ%×,Ñ,¨d°B¨ZÔ8Ø×0Ñ0ˆDŒJØr+   c                 óü  — | j                   j                  «       }|t        v r!| j                   j                  t        d«       y|dk(  r| j                  | _        y|dk(  r-| j                  | _        | j                   j                  |«       y|dk(  r| j                  | _        y|dk(  r6| j                  j                  t        d   ddœ«       | j                  «        y|d	k(  rT| j                  j                  t        d   d
dœ«       | j                  d   d   dxx   dz  cc<   | j                  | _        y|dv rT| j                  j                  t        d   ddœ«       | j                  d   d   dxx   |z  cc<   | j                  | _        y|t        u r7| j                  j                  t        d   ddœ«       | j                  | _        y| j                  d   d   dxx   |z  cc<   | j                  | _        y)NTrß   rW   rÞ   r˜   r-   z.expected-attribute-value-but-got-right-bracketr.   r{   r|   r0   rZ   r
   r?   )r]   rX   ú`z"equals-in-unquoted-attribute-valuez$expected-attribute-value-but-got-eof)r   rG   r   r€   ÚattributeValueDoubleQuotedStater"   ÚattributeValueUnQuotedStaterN   ÚattributeValueSingleQuotedStater1   rH   r   ry   r$   r   r!   r’   s     r*   rä   z'HTMLTokenizer.beforeAttributeValueStateÍ  s  € Ø�{‰{×ÑÓ!ˆØ”?Ñ"Ø�K‰K×"Ñ"¤?°DÔ9ð: ð9 �TŠ\Ø×=Ñ=ˆDŒJð6 ð5 �SŠ[Ø×9Ñ9ˆDŒJØ�K‰K×Ñ˜dÔ#ð0 ð/ �SŠ[Ø×=Ñ=ˆDŒJð, ð+ �SŠ[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$Tñ$Vô Wà×!Ñ!Ô#ð$ ð# �XÒØ�O‰O×"Ñ"¬J°|Ñ,DØ,?ñ$Aô Bà×Ñ˜fÑ% bÑ)¨!Ó,°Ñ8Ó,Ø×9Ñ9ˆDŒJð ð �_Ñ$Ø�O‰O×"Ñ"¬J°|Ñ,DØ$Hñ$Jô Kà×Ñ˜fÑ% bÑ)¨!Ó,°Ñ4Ó,Ø×9Ñ9ˆDŒJð ð ”S‰[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$Jñ$Lô MàŸ™ˆDŒJð ð ×Ñ˜fÑ% bÑ)¨!Ó,°Ñ4Ó,Ø×9Ñ9ˆDŒJØr+   c                 ó  — | j                   j                  «       }|dk(  r| j                  | _        y|dk(  r| j	                  d«       y|dk(  rC| j
                  j                  t        d   ddœ«       | j                  d   d   d	xx   d
z  cc<   y|t        u r7| j
                  j                  t        d   ddœ«       | j                  | _        y| j                  d   d   d	xx   || j                   j                  d«      z   z  cc<   y)Nrß   rW   r{   r-   r|   r.   r0   rZ   r
   r?   z#eof-in-attribute-value-double-quote)rß   rW   r{   T©r   rG   ÚafterAttributeValueStater"   rn   r1   rH   r   r$   r   r!   r€   r’   s     r*   rì   z-HTMLTokenizer.attributeValueDoubleQuotedStateï  s  € Ø�{‰{×ÑÓ!ˆØ�4Š<Ø×6Ñ6ˆDŒJð ð �SŠ[Ø×)Ñ)¨#Ô.ð ð �XÒØ�O‰O×"Ñ"¬J°|Ñ,DØ,?ñ$Aô Bà×Ñ˜fÑ% bÑ)¨!Ó,°Ñ8Ó,ð ð ”S‰[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$Iñ$Kô LàŸ™ˆDŒJð ð ×Ñ˜fÑ% bÑ)¨!Ó,°Ø—‘×&Ñ&Ð'<Ó=ñ1>ñ >Ó,àr+   c                 ó  — | j                   j                  «       }|dk(  r| j                  | _        y|dk(  r| j	                  d«       y|dk(  rC| j
                  j                  t        d   ddœ«       | j                  d   d   d	xx   d
z  cc<   y|t        u r7| j
                  j                  t        d   ddœ«       | j                  | _        y| j                  d   d   d	xx   || j                   j                  d«      z   z  cc<   y)NrÞ   rW   r{   r-   r|   r.   r0   rZ   r
   r?   z#eof-in-attribute-value-single-quote)rÞ   rW   r{   Trð   r’   s     r*   rî   z-HTMLTokenizer.attributeValueSingleQuotedState  s  € Ø�{‰{×ÑÓ!ˆØ�3Š;Ø×6Ñ6ˆDŒJð ð �SŠ[Ø×)Ñ)¨#Ô.ð ð �XÒØ�O‰O×"Ñ"¬J°|Ñ,DØ,?ñ$Aô Bà×Ñ˜fÑ% bÑ)¨!Ó,°Ñ8Ó,ð ð ”S‰[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$Iñ$Kô LàŸ™ˆDŒJð ð ×Ñ˜fÑ% bÑ)¨!Ó,°Ø—‘×&Ñ&Ð';Ó<ñ1=ñ =Ó,àr+   c           	      óô  — | j                   j                  «       }|t        v r| j                  | _        y|dk(  r| j                  d«       y|dk(  r| j                  «        y|dv rC| j                  j                  t        d   ddœ«       | j                  d   d   d	xx   |z  cc<   y|d
k(  rC| j                  j                  t        d   ddœ«       | j                  d   d   d	xx   dz  cc<   y|t        u r7| j                  j                  t        d   ddœ«       | j                  | _        y| j                  d   d   d	xx   || j                   j                  t        d«      t        z  «      z   z  cc<   y)NrW   r˜   )rß   rÞ   r]   rX   rë   r-   z0unexpected-character-in-unquoted-attribute-valuer.   r0   rZ   r
   r{   r|   r?   z eof-in-attribute-value-no-quotes)rW   r˜   rß   rÞ   r]   rX   rë   r{   T)r   rG   r   r¢   r"   rn   ry   r1   rH   r   r$   r   r!   r€   rK   r’   s     r*   rí   z)HTMLTokenizer.attributeValueUnQuotedState  s“  € Ø�{‰{×ÑÓ!ˆØ”?Ñ"Ø×6Ñ6ˆDŒJð( ð' �SŠ[Ø×)Ñ)¨#Ô.ð$ ð# �SŠ[Ø×!Ñ!Ô#ð  ð Ð.Ñ.Ø�O‰O×"Ñ"¬J°|Ñ,DØ$Vñ$Xô Yà×Ñ˜fÑ% bÑ)¨!Ó,°Ñ4Ó,ð ð �XÒØ�O‰O×"Ñ"¬J°|Ñ,DØ,?ñ$Aô Bà×Ñ˜fÑ% bÑ)¨!Ó,°Ñ8Ó,ð ð ”S‰[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$Fñ$Hô IàŸ™ˆDŒJð ð ×Ñ˜fÑ% bÑ)¨!Ó,°°t·{±{×7MÑ7MÜÐGÓHÌ?ÑZó8\ñ 1\ñ \Ó,àr+   c                 ó  — | j                   j                  «       }|t        v r| j                  | _        y|dk(  r| j                  «        y|dk(  r| j                  | _        y|t        u rR| j                  j                  t        d   ddœ«       | j                   j                  |«       | j                  | _        y| j                  j                  t        d   ddœ«       | j                   j                  |«       | j                  | _        y)Nr˜   r–   r-   z$unexpected-EOF-after-attribute-valuer.   z*unexpected-character-after-attribute-valueT)r   rG   r   r¢   r"   ry   r£   r   r1   rH   r   rN   r!   r’   s     r*   rñ   z&HTMLTokenizer.afterAttributeValueState.  sø   € Ø�{‰{×ÑÓ!ˆØ”?Ñ"Ø×6Ñ6ˆDŒJð ð �SŠ[Ø×!Ñ!Ô#ð ð �SŠ[Ø×6Ñ6ˆDŒJð ð ”S‰[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$Jñ$Lô Mà�K‰K×Ñ˜dÔ#ØŸ™ˆDŒJð ð	 �O‰O×"Ñ"¬J°|Ñ,DØ$Pñ$Rô Sà�K‰K×Ñ˜dÔ#Ø×6Ñ6ˆDŒJØr+   c                 óØ  — | j                   j                  «       }|dk(  r d| j                  d<   | j                  «        y|t        u rR| j
                  j                  t        d   ddœ«       | j                   j                  |«       | j                  | _
        y| j
                  j                  t        d   ddœ«       | j                   j                  |«       | j                  | _
        y)Nr˜   Trs   r-   z#unexpected-EOF-after-solidus-in-tagr.   z)unexpected-character-after-solidus-in-tag)r   rG   r$   ry   r   r1   rH   r   rN   r!   r"   r¢   r’   s     r*   r£   z&HTMLTokenizer.selfClosingStartTagStateB  sÓ   € Ø�{‰{×ÑÓ!ˆØ�3Š;Ø/3ˆD×Ñ˜mÑ,Ø×!Ñ!Ô#ð ð ”S‰[Ø�O‰O×"Ñ"¬J°|Ñ,Dà$Iñ$Kô Lð �K‰K×Ñ˜dÔ#ØŸ™ˆDŒJð ð	 �O‰O×"Ñ"¬J°|Ñ,DØ$Oñ$Qô Rà�K‰K×Ñ˜dÔ#Ø×6Ñ6ˆDŒJØr+   c                 óþ   — | j                   j                  d«      }|j                  dd«      }| j                  j	                  t
        d   |dœ«       | j                   j                  «        | j                  | _        y)Nr˜   r{   r?   ÚCommentr.   T)	r   r€   Úreplacer1   rH   r   rG   r!   r"   r’   s     r*   r�   zHTMLTokenizer.bogusCommentStateT  sg   € ð �{‰{×%Ñ% cÓ*ˆØ�|‰|˜H hÓ/ˆØ�‰×ÑÜ 	Ñ*°DÑ9ô	;ð
 	�‰×ÑÔØ—^‘^ˆŒ
Ør+   c                 ó<  — | j                   j                  «       g}|d   dk(  rU|j                  | j                   j                  «       «       |d   dk(  �rct        d   ddœ| _        | j
                  | _        y|d   dv red}dD ]6  }|j                  | j                   j                  «       «       |d   |vsŒ4d	} n |rút        d
   dd d ddœ| _        | j                  | _        y|d   dk(  rÌ| j                  �À| j                  j                  j                  r | j                  j                  j                  d   j                  | j                  j                  j                  k7  rRd}dD ]7  }|j                  | j                   j                  «       «       |d   |k7  sŒ5d	} n |r| j                  | _        y| j                  j                  t        d   ddœ«       |r,| j                   j                  |j!                  «       «       |rŒ,| j"                  | _        y)NrZ   r½   r÷   r:   r.   T)ÚdÚD))ÚoÚO©rS   ÚC©ÚtÚT©ÚyÚY©ÚpÚP©ÚeÚEFÚDoctype)r/   rp   ÚpublicIdÚsystemIdÚcorrectú[)rÿ   rû   ÚAr  r  r  r-   zexpected-dashes-or-doctype)r   rG   rH   r   r$   ÚcommentStartStater"   ÚdoctypeStater   ÚtreeÚopenElementsÚ	namespaceÚdefaultNamespaceÚcdataSectionStater1   rN   r3   r�   )r'   rR   ÚmatchedÚexpecteds       r*   rš   z(HTMLTokenizer.markupDeclarationOpenStatec  sù  € Ø—[‘[×%Ñ%Ó'Ð(ˆ	Ø�R‰=˜CÒØ×Ñ˜TŸ[™[×-Ñ-Ó/Ô0Ø˜‰} Ó#Ü-7¸	Ñ-BÈBÑ$O�Ô!Ø!×3Ñ3�”
ØØ�r‰]˜jÑ(ØˆGðAò �à× Ñ  §¡×!1Ñ!1Ó!3Ô4Ø˜R‘=¨Ò0Ø#�GÙðñ Ü-7¸	Ñ-BØ-/Ø15À4Ø04ñ%6�Ô!ð "×.Ñ.�”
ØØ˜‰m˜sÒ"Ø�k‰kÐ%Ø�k‰k×Ñ×+Ò+Ø�k‰k×Ñ×+Ñ+¨BÑ/×9Ñ9¸T¿[¹[×=MÑ=M×=^Ñ=^Ò^ØˆGØ:ò �Ø× Ñ  §¡×!1Ñ!1Ó!3Ô4Ø˜R‘= HÓ,Ø#�GÙð	ñ
 Ø!×3Ñ3�”
Øà�‰×Ñ¬
°<Ñ(@Ø <ñ >ô 	?ñ Ø�K‰K×Ñ˜iŸm™m›oÔ.ò à×+Ñ+ˆŒ
Ør+   c                 óÄ  — | j                   j                  «       }|dk(  r| j                  | _        y|dk(  r=| j                  j                  t        d   ddœ«       | j                  dxx   dz  cc<   y|dk(  r\| j                  j                  t        d   d	dœ«       | j                  j                  | j                  «       | j                  | _        y|t        u r\| j                  j                  t        d   d
dœ«       | j                  j                  | j                  «       | j                  | _        y| j                  dxx   |z  cc<   | j                  | _        y)Nr½   r{   r-   r|   r.   r0   r?   r˜   úincorrect-commentúeof-in-commentT)r   rG   ÚcommentStartDashStater"   r1   rH   r   r$   r!   r   ÚcommentStater’   s     r*   r  zHTMLTokenizer.commentStartState�  sA  € Ø�{‰{×ÑÓ!ˆØ�3Š;Ø×3Ñ3ˆDŒJð$ ð# �XÒØ�O‰O×"Ñ"¬J°|Ñ,DØ,?ñ$Aô Bà×Ñ˜fÓ%¨Ñ1Ó%ð ð �SŠ[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$7ñ$9ô :à�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð ð ”S‰[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$4ñ$6ô 7à�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð ð ×Ñ˜fÓ%¨Ñ-Ó%Ø×*Ñ*ˆDŒJØr+   c                 óÊ  — | j                   j                  «       }|dk(  r| j                  | _        y|dk(  r=| j                  j                  t        d   ddœ«       | j                  dxx   dz  cc<   y|dk(  r\| j                  j                  t        d   d	dœ«       | j                  j                  | j                  «       | j                  | _        y|t        u r\| j                  j                  t        d   d
dœ«       | j                  j                  | j                  «       | j                  | _        y| j                  dxx   d|z   z  cc<   | j                  | _        y)Nr½   r{   r-   r|   r.   r0   õ   -ï¿½r˜   r  r  T)r   rG   ÚcommentEndStater"   r1   rH   r   r$   r!   r   r  r’   s     r*   r  z#HTMLTokenizer.commentStartDashState§  sE  € Ø�{‰{×ÑÓ!ˆØ�3Š;Ø×-Ñ-ˆDŒJð$ ð# �XÒØ�O‰O×"Ñ"¬J°|Ñ,DØ,?ñ$Aô Bà×Ñ˜fÓ%¨Ñ2Ó%ð ð �SŠ[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$7ñ$9ô :à�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð ð ”S‰[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$4ñ$6ô 7à�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð ð ×Ñ˜fÓ%¨¨t©Ñ3Ó%Ø×*Ñ*ˆDŒJØr+   c                 ó  — | j                   j                  «       }|dk(  r| j                  | _        y
|dk(  r=| j                  j                  t        d   ddœ«       | j                  dxx   dz  cc<   y
|t        u r\| j                  j                  t        d   ddœ«       | j                  j                  | j                  «       | j                  | _        y
| j                  dxx   || j                   j                  d	«      z   z  cc<   y
)Nr½   r{   r-   r|   r.   r0   r?   r  )r½   r{   T)r   rG   ÚcommentEndDashStater"   r1   rH   r   r$   r   r!   r€   r’   s     r*   r  zHTMLTokenizer.commentState¾  sû   € Ø�{‰{×ÑÓ!ˆØ�3Š;Ø×1Ñ1ˆDŒJð ð �XÒØ�O‰O×"Ñ"¬J°|Ñ,DØ,?ñ$Aô Bà×Ñ˜fÓ%¨Ñ1Ó%ð ð ”S‰[Ø�O‰O×"Ñ"¬J°|Ñ,DØ,<ñ$>ô ?à�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð ð ×Ñ˜fÓ%¨Ø—‘×&Ñ& Ó7ñ*8ñ 8Ó%àr+   c                 ó*  — | j                   j                  «       }|dk(  r| j                  | _        y	|dk(  rN| j                  j                  t        d   ddœ«       | j                  dxx   dz  cc<   | j                  | _        y	|t        u r\| j                  j                  t        d   ddœ«       | j                  j                  | j                  «       | j                  | _        y	| j                  dxx   d|z   z  cc<   | j                  | _        y	)
Nr½   r{   r-   r|   r.   r0   r!  zeof-in-comment-end-dashT)r   rG   r"  r"   r1   rH   r   r$   r  r   r!   r’   s     r*   r$  z!HTMLTokenizer.commentEndDashStateÐ  s  € Ø�{‰{×ÑÓ!ˆØ�3Š;Ø×-Ñ-ˆDŒJð ð �XÒØ�O‰O×"Ñ"¬J°|Ñ,DØ,?ñ$Aô Bà×Ñ˜fÓ%¨Ñ2Ó%Ø×*Ñ*ˆDŒJð ð ”S‰[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$=ñ$?ô @à�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð ð ×Ñ˜fÓ%¨¨t©Ñ3Ó%Ø×*Ñ*ˆDŒJØr+   c                 óº  — | j                   j                  «       }|dk(  r7| j                  j                  | j                  «       | j
                  | _        y|dk(  rN| j                  j                  t        d   ddœ«       | j                  dxx   dz  cc<   | j                  | _        y|dk(  r7| j                  j                  t        d   d	dœ«       | j                  | _        y|d
k(  r=| j                  j                  t        d   ddœ«       | j                  dxx   |z  cc<   y|t        u r\| j                  j                  t        d   ddœ«       | j                  j                  | j                  «       | j
                  | _        y| j                  j                  t        d   ddœ«       | j                  dxx   d|z   z  cc<   | j                  | _        y)Nr˜   r{   r-   r|   r.   r0   u   --ï¿½r•   z,unexpected-bang-after-double-dash-in-commentr½   z,unexpected-dash-after-double-dash-in-commentzeof-in-comment-double-dashzunexpected-char-in-commentz--T)r   rG   r1   rH   r$   r!   r"   r   r  ÚcommentEndBangStater   r’   s     r*   r"  zHTMLTokenizer.commentEndStateã  sÀ  € Ø�{‰{×ÑÓ!ˆØ�3Š;Ø�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð2 ð1 �XÒØ�O‰O×"Ñ"¬J°|Ñ,DØ,?ñ$Aô Bà×Ñ˜fÓ%¨Ñ3Ó%Ø×*Ñ*ˆDŒJð( ð' �SŠ[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$Rñ$Tô Uà×1Ñ1ˆDŒJð  ð �SŠ[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$Rñ$Tô Uà×Ñ˜fÓ%¨Ñ-Ó%ð ð ”S‰[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$@ñ$Bô Cà�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð ð	 �O‰O×"Ñ"¬J°|Ñ,DØ$@ñ$Bô Cà×Ñ˜fÓ%¨°©Ñ4Ó%Ø×*Ñ*ˆDŒJØr+   c                 óÐ  — | j                   j                  «       }|dk(  r7| j                  j                  | j                  «       | j
                  | _        y|dk(  r)| j                  dxx   dz  cc<   | j                  | _        y|dk(  rN| j                  j                  t        d   ddœ«       | j                  dxx   d	z  cc<   | j                  | _        y|t        u r\| j                  j                  t        d   d
dœ«       | j                  j                  | j                  «       | j
                  | _        y| j                  dxx   d|z   z  cc<   | j                  | _        y)Nr˜   r½   r0   z--!r{   r-   r|   r.   u   --!ï¿½zeof-in-comment-end-bang-stateT)r   rG   r1   rH   r$   r!   r"   r$  r   r  r   r’   s     r*   r'  z!HTMLTokenizer.commentEndBangState  sI  € Ø�{‰{×ÑÓ!ˆØ�3Š;Ø�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð" ð! �SŠ[Ø×Ñ˜fÓ%¨Ñ.Ó%Ø×1Ñ1ˆDŒJð ð �XÒØ�O‰O×"Ñ"¬J°|Ñ,DØ,?ñ$Aô Bà×Ñ˜fÓ%¨Ñ4Ó%Ø×*Ñ*ˆDŒJð ð ”S‰[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$Cñ$Eô Fà�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð ð ×Ñ˜fÓ%¨°©Ñ5Ó%Ø×*Ñ*ˆDŒJØr+   c                 óô  — | j                   j                  «       }|t        v r| j                  | _        y|t
        u rk| j                  j                  t        d   ddœ«       d| j                  d<   | j                  j                  | j                  «       | j                  | _        y| j                  j                  t        d   ddœ«       | j                   j                  |«       | j                  | _        y)Nr-   ú!expected-doctype-name-but-got-eofr.   Fr  zneed-space-after-doctypeT)r   rG   r   ÚbeforeDoctypeNameStater"   r   r1   rH   r   r$   r!   rN   r’   s     r*   r  zHTMLTokenizer.doctypeState  sÙ   € Ø�{‰{×ÑÓ!ˆØ”?Ñ"Ø×4Ñ4ˆDŒJð ð ”S‰[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$Gñ$Iô Jà+0ˆD×Ñ˜iÑ(Ø�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð ð	 �O‰O×"Ñ"¬J°|Ñ,DØ$>ñ$@ô Aà�K‰K×Ñ˜dÔ#Ø×4Ñ4ˆDŒJØr+   c                 óè  — | j                   j                  «       }|t        v r	 y|dk(  rk| j                  j	                  t
        d   ddœ«       d| j                  d<   | j                  j	                  | j                  «       | j                  | _        y|dk(  rF| j                  j	                  t
        d   ddœ«       d	| j                  d
<   | j                  | _        y|t        u rk| j                  j	                  t
        d   ddœ«       d| j                  d<   | j                  j	                  | j                  «       | j                  | _        y|| j                  d
<   | j                  | _        y)Nr˜   r-   z+expected-doctype-name-but-got-right-bracketr.   Fr  r{   r|   r?   rp   r*  T)r   rG   r   r1   rH   r   r$   r!   r"   ÚdoctypeNameStater   r’   s     r*   r+  z$HTMLTokenizer.beforeDoctypeNameState*  s]  € Ø�{‰{×ÑÓ!ˆØ”?Ñ"Øð* ð) �SŠ[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$Qñ$Sô Tà+0ˆD×Ñ˜iÑ(Ø�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð ð �XÒØ�O‰O×"Ñ"¬J°|Ñ,DØ,?ñ$Aô Bà(0ˆD×Ñ˜fÑ%Ø×.Ñ.ˆDŒJð ð ”S‰[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$Gñ$Iô Jà+0ˆD×Ñ˜iÑ(Ø�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð ð )-ˆD×Ñ˜fÑ%Ø×.Ñ.ˆDŒJØr+   c                 ó¸  — | j                   j                  «       }|t        v rA| j                  d   j	                  t
        «      | j                  d<   | j                  | _        y|dk(  rf| j                  d   j	                  t
        «      | j                  d<   | j                  j                  | j                  «       | j                  | _        y|dk(  rN| j                  j                  t        d   ddœ«       | j                  dxx   dz  cc<   | j                  | _        y|t        u rš| j                  j                  t        d   ddœ«       d	| j                  d
<   | j                  d   j	                  t
        «      | j                  d<   | j                  j                  | j                  «       | j                  | _        y| j                  dxx   |z  cc<   y)Nrp   r˜   r{   r-   r|   r.   r?   zeof-in-doctype-nameFr  T)r   rG   r   r$   rt   r   ÚafterDoctypeNameStater"   r1   rH   r!   r   r-  r   r’   s     r*   r-  zHTMLTokenizer.doctypeNameStateD  s¦  € Ø�{‰{×ÑÓ!ˆØ”?Ñ"Ø(,×(9Ñ(9¸&Ñ(A×(KÑ(KÔL\Ó(]ˆD×Ñ˜fÑ%Ø×3Ñ3ˆDŒJð& ð% �SŠ[Ø(,×(9Ñ(9¸&Ñ(A×(KÑ(KÔL\Ó(]ˆD×Ñ˜fÑ%Ø�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð ð �XÒØ�O‰O×"Ñ"¬J°|Ñ,DØ,?ñ$Aô Bà×Ñ˜fÓ%¨Ñ1Ó%Ø×.Ñ.ˆDŒJð ð ”S‰[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$9ñ$;ô <à+0ˆD×Ñ˜iÑ(Ø(,×(9Ñ(9¸&Ñ(A×(KÑ(KÔL\Ó(]ˆD×Ñ˜fÑ%Ø�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð ð ×Ñ˜fÓ%¨Ñ-Ó%Ør+   c                 ó²  — | j                   j                  «       }|t        v r	 y|dk(  r7| j                  j	                  | j
                  «       | j                  | _        y|t        u r†d| j
                  d<   | j                   j                  |«       | j                  j	                  t        d   ddœ«       | j                  j	                  | j
                  «       | j                  | _        y|dv r?d}d	D ]$  }| j                   j                  «       }||vsŒ"d} n |rU| j                  | _        y|d
v r?d}dD ]$  }| j                   j                  «       }||vsŒ"d} n |r| j                  | _        y| j                   j                  |«       | j                  j	                  t        d   dd|idœ«       d| j
                  d<   | j                  | _        y)Nr˜   Fr  r-   úeof-in-doctyper.   r  T))ÚuÚU)ÚbÚB)ÚlÚL)ÚiÚIrþ   ©ÚsÚS)r  r:  r   r	  )ÚmÚMz*expected-space-or-right-bracket-in-doctyper0   r<   )r   rG   r   r1   rH   r$   r!   r"   r   rN   r   ÚafterDoctypePublicKeywordStateÚafterDoctypeSystemKeywordStateÚbogusDoctypeState)r'   r0   r  r  s       r*   r/  z#HTMLTokenizer.afterDoctypeNameState]  sÙ  € Ø�{‰{×ÑÓ!ˆØ”?Ñ"Øð\ ð[ �SŠ[Ø�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJðV ðU ”S‰[Ø+0ˆD×Ñ˜iÑ(Ø�K‰K×Ñ˜dÔ#Ø�O‰O×"Ñ"¬J°|Ñ,DØ$4ñ$6ô 7à�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJðH ðE �zÑ!Ø�ð!9ò �HàŸ;™;×+Ñ+Ó-�DØ 8Ò+Ø"'˜Ùðñ Ø!%×!DÑ!D�D”JØØ˜Ñ#Ø�ð!9ò �HàŸ;™;×+Ñ+Ó-�DØ 8Ò+Ø"'˜Ùðñ Ø!%×!DÑ!D�D”JØð �K‰K×Ñ˜dÔ#Ø�O‰O×"Ñ"¬J°|Ñ,DØ$PØ%+¨T Nñ$4ô 5ð ,1ˆD×Ñ˜iÑ(Ø×/Ñ/ˆDŒJàr+   c                 óV  — | j                   j                  «       }|t        v r| j                  | _        y|dv rR| j
                  j                  t        d   ddœ«       | j                   j                  |«       | j                  | _        y|t        u rk| j
                  j                  t        d   ddœ«       d| j                  d<   | j
                  j                  | j                  «       | j                  | _        y| j                   j                  |«       | j                  | _        y©	N)rÞ   rß   r-   úunexpected-char-in-doctyper.   r1  Fr  T)r   rG   r   Ú"beforeDoctypePublicIdentifierStater"   r1   rH   r   rN   r   r$   r!   r’   s     r*   r?  z,HTMLTokenizer.afterDoctypePublicKeywordState�  ó  € Ø�{‰{×ÑÓ!ˆØ”?Ñ"Ø×@Ñ@ˆDŒJð ð �ZÑØ�O‰O×"Ñ"¬J°|Ñ,DØ$@ñ$Bô Cà�K‰K×Ñ˜dÔ#Ø×@Ñ@ˆDŒJð ð ”S‰[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$4ñ$6ô 7à+0ˆD×Ñ˜iÑ(Ø�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð ð �K‰K×Ñ˜dÔ#Ø×@Ñ@ˆDŒJØr+   c                 ó4  — | j                   j                  «       }|t        v r	 y|dk(  r!d| j                  d<   | j                  | _        y|dk(  r!d| j                  d<   | j                  | _        y|dk(  rk| j                  j                  t        d   ddœ«       d	| j                  d
<   | j                  j                  | j                  «       | j                  | _        y|t        u rk| j                  j                  t        d   ddœ«       d	| j                  d
<   | j                  j                  | j                  «       | j                  | _        y| j                  j                  t        d   ddœ«       d	| j                  d
<   | j                  | _        y)Nrß   r:   r  rÞ   r˜   r-   úunexpected-end-of-doctyper.   Fr  r1  rD  T)r   rG   r   r$   Ú(doctypePublicIdentifierDoubleQuotedStater"   Ú(doctypePublicIdentifierSingleQuotedStater1   rH   r   r!   r   rA  r’   s     r*   rE  z0HTMLTokenizer.beforeDoctypePublicIdentifierState¤  s…  € Ø�{‰{×ÑÓ!ˆØ”?Ñ"Øð0 ð/ �TŠ\Ø,.ˆD×Ñ˜jÑ)Ø×FÑFˆDŒJð* ð) �SŠ[Ø,.ˆD×Ñ˜jÑ)Ø×FÑFˆDŒJð$ ð# �SŠ[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$?ñ$Aô Bà+0ˆD×Ñ˜iÑ(Ø�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð ð ”S‰[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$4ñ$6ô 7à+0ˆD×Ñ˜iÑ(Ø�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð ð	 �O‰O×"Ñ"¬J°|Ñ,DØ$@ñ$Bô Cà+0ˆD×Ñ˜iÑ(Ø×/Ñ/ˆDŒJØr+   c                 óÞ  — | j                   j                  «       }|dk(  r| j                  | _        y|dk(  r=| j                  j                  t        d   ddœ«       | j                  dxx   dz  cc<   y|dk(  rk| j                  j                  t        d   d	dœ«       d
| j                  d<   | j                  j                  | j                  «       | j                  | _        y|t        u rk| j                  j                  t        d   ddœ«       d
| j                  d<   | j                  j                  | j                  «       | j                  | _        y| j                  dxx   |z  cc<   y)Nrß   r{   r-   r|   r.   r  r?   r˜   rH  Fr  r1  T©
r   rG   Ú!afterDoctypePublicIdentifierStater"   r1   rH   r   r$   r!   r   r’   s     r*   rI  z6HTMLTokenizer.doctypePublicIdentifierDoubleQuotedStateÁ  óV  € Ø�{‰{×ÑÓ!ˆØ�4Š<Ø×?Ñ?ˆDŒJð& ð% �XÒØ�O‰O×"Ñ"¬J°|Ñ,DØ,?ñ$Aô Bà×Ñ˜jÓ)¨XÑ5Ó)ð ð �SŠ[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$?ñ$Aô Bà+0ˆD×Ñ˜iÑ(Ø�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð ð ”S‰[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$4ñ$6ô 7à+0ˆD×Ñ˜iÑ(Ø�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð ð ×Ñ˜jÓ)¨TÑ1Ó)Ør+   c                 óÞ  — | j                   j                  «       }|dk(  r| j                  | _        y|dk(  r=| j                  j                  t        d   ddœ«       | j                  dxx   dz  cc<   y|dk(  rk| j                  j                  t        d   d	dœ«       d
| j                  d<   | j                  j                  | j                  «       | j                  | _        y|t        u rk| j                  j                  t        d   ddœ«       d
| j                  d<   | j                  j                  | j                  «       | j                  | _        y| j                  dxx   |z  cc<   y)NrÞ   r{   r-   r|   r.   r  r?   r˜   rH  Fr  r1  TrL  r’   s     r*   rJ  z6HTMLTokenizer.doctypePublicIdentifierSingleQuotedStateÙ  óV  € Ø�{‰{×ÑÓ!ˆØ�3Š;Ø×?Ñ?ˆDŒJð& ð% �XÒØ�O‰O×"Ñ"¬J°|Ñ,DØ,?ñ$Aô Bà×Ñ˜jÓ)¨XÑ5Ó)ð ð �SŠ[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$?ñ$Aô Bà+0ˆD×Ñ˜iÑ(Ø�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð ð ”S‰[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$4ñ$6ô 7à+0ˆD×Ñ˜iÑ(Ø�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð ð ×Ñ˜jÓ)¨TÑ1Ó)Ør+   c                 ó€  — | j                   j                  «       }|t        v r| j                  | _        y|dk(  r7| j
                  j                  | j                  «       | j                  | _        y|dk(  rF| j
                  j                  t        d   ddœ«       d| j                  d<   | j                  | _        y|dk(  rF| j
                  j                  t        d   ddœ«       d| j                  d<   | j                  | _        y|t        u rk| j
                  j                  t        d   d	dœ«       d
| j                  d<   | j
                  j                  | j                  «       | j                  | _        y| j
                  j                  t        d   ddœ«       d
| j                  d<   | j                  | _        y)Nr˜   rß   r-   rD  r.   r:   r  rÞ   r1  Fr  T)r   rG   r   Ú-betweenDoctypePublicAndSystemIdentifiersStater"   r1   rH   r$   r!   r   Ú(doctypeSystemIdentifierDoubleQuotedStateÚ(doctypeSystemIdentifierSingleQuotedStater   rA  r’   s     r*   rM  z/HTMLTokenizer.afterDoctypePublicIdentifierStateñ  s¢  € Ø�{‰{×ÑÓ!ˆØ”?Ñ"Ø×KÑKˆDŒJð2 ð1 �SŠ[Ø�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð, ð+ �SŠ[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$@ñ$Bô Cà,.ˆD×Ñ˜jÑ)Ø×FÑFˆDŒJð" ð! �SŠ[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$@ñ$Bô Cà,.ˆD×Ñ˜jÑ)Ø×FÑFˆDŒJð ð ”S‰[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$4ñ$6ô 7à+0ˆD×Ñ˜iÑ(Ø�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð ð	 �O‰O×"Ñ"¬J°|Ñ,DØ$@ñ$Bô Cà+0ˆD×Ñ˜iÑ(Ø×/Ñ/ˆDŒJØr+   c                 óÎ  — | j                   j                  «       }|t        v r	 y|dk(  r7| j                  j	                  | j
                  «       | j                  | _        y|dk(  r!d| j
                  d<   | j                  | _        y|dk(  r!d| j
                  d<   | j                  | _        y|t        k(  rk| j                  j	                  t        d   ddœ«       d	| j
                  d
<   | j                  j	                  | j
                  «       | j                  | _        y| j                  j	                  t        d   ddœ«       d	| j
                  d
<   | j                  | _        y)Nr˜   rß   r:   r  rÞ   r-   r1  r.   Fr  rD  T)r   rG   r   r1   rH   r$   r!   r"   rS  rT  r   r   rA  r’   s     r*   rR  z;HTMLTokenizer.betweenDoctypePublicAndSystemIdentifiersState  sR  € Ø�{‰{×ÑÓ!ˆØ”?Ñ"Øð* ð) �SŠ[Ø�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð$ ð# �SŠ[Ø,.ˆD×Ñ˜jÑ)Ø×FÑFˆDŒJð ð �SŠ[Ø,.ˆD×Ñ˜jÑ)Ø×FÑFˆDŒJð ð ”SŠ[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$4ñ$6ô 7à+0ˆD×Ñ˜iÑ(Ø�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð ð	 �O‰O×"Ñ"¬J°|Ñ,DØ$@ñ$Bô Cà+0ˆD×Ñ˜iÑ(Ø×/Ñ/ˆDŒJØr+   c                 óV  — | j                   j                  «       }|t        v r| j                  | _        y|dv rR| j
                  j                  t        d   ddœ«       | j                   j                  |«       | j                  | _        y|t        u rk| j
                  j                  t        d   ddœ«       d| j                  d<   | j
                  j                  | j                  «       | j                  | _        y| j                   j                  |«       | j                  | _        yrC  )r   rG   r   Ú"beforeDoctypeSystemIdentifierStater"   r1   rH   r   rN   r   r$   r!   r’   s     r*   r@  z,HTMLTokenizer.afterDoctypeSystemKeywordState)  rF  r+   c                 ó4  — | j                   j                  «       }|t        v r	 y|dk(  r!d| j                  d<   | j                  | _        y|dk(  r!d| j                  d<   | j                  | _        y|dk(  rk| j                  j                  t        d   ddœ«       d	| j                  d
<   | j                  j                  | j                  «       | j                  | _        y|t        u rk| j                  j                  t        d   ddœ«       d	| j                  d
<   | j                  j                  | j                  «       | j                  | _        y| j                  j                  t        d   ddœ«       d	| j                  d
<   | j                  | _        y)Nrß   r:   r  rÞ   r˜   r-   rD  r.   Fr  r1  T)r   rG   r   r$   rS  r"   rT  r1   rH   r   r!   r   rA  r’   s     r*   rW  z0HTMLTokenizer.beforeDoctypeSystemIdentifierState=  s…  € Ø�{‰{×ÑÓ!ˆØ”?Ñ"Øð0 ð/ �TŠ\Ø,.ˆD×Ñ˜jÑ)Ø×FÑFˆDŒJð* ð) �SŠ[Ø,.ˆD×Ñ˜jÑ)Ø×FÑFˆDŒJð$ ð# �SŠ[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$@ñ$Bô Cà+0ˆD×Ñ˜iÑ(Ø�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð ð ”S‰[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$4ñ$6ô 7à+0ˆD×Ñ˜iÑ(Ø�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð ð	 �O‰O×"Ñ"¬J°|Ñ,DØ$@ñ$Bô Cà+0ˆD×Ñ˜iÑ(Ø×/Ñ/ˆDŒJØr+   c                 óÞ  — | j                   j                  «       }|dk(  r| j                  | _        y|dk(  r=| j                  j                  t        d   ddœ«       | j                  dxx   dz  cc<   y|dk(  rk| j                  j                  t        d   d	dœ«       d
| j                  d<   | j                  j                  | j                  «       | j                  | _        y|t        u rk| j                  j                  t        d   ddœ«       d
| j                  d<   | j                  j                  | j                  «       | j                  | _        y| j                  dxx   |z  cc<   y)Nrß   r{   r-   r|   r.   r  r?   r˜   rH  Fr  r1  T©
r   rG   Ú!afterDoctypeSystemIdentifierStater"   r1   rH   r   r$   r!   r   r’   s     r*   rS  z6HTMLTokenizer.doctypeSystemIdentifierDoubleQuotedStateZ  rN  r+   c                 óÞ  — | j                   j                  «       }|dk(  r| j                  | _        y|dk(  r=| j                  j                  t        d   ddœ«       | j                  dxx   dz  cc<   y|dk(  rk| j                  j                  t        d   d	dœ«       d
| j                  d<   | j                  j                  | j                  «       | j                  | _        y|t        u rk| j                  j                  t        d   ddœ«       d
| j                  d<   | j                  j                  | j                  «       | j                  | _        y| j                  dxx   |z  cc<   y)NrÞ   r{   r-   r|   r.   r  r?   r˜   rH  Fr  r1  TrZ  r’   s     r*   rT  z6HTMLTokenizer.doctypeSystemIdentifierSingleQuotedStater  rP  r+   c                 ó  — | j                   j                  «       }|t        v r	 y|dk(  r7| j                  j	                  | j
                  «       | j                  | _        y|t        u rk| j                  j	                  t        d   ddœ«       d| j
                  d<   | j                  j	                  | j
                  «       | j                  | _        y| j                  j	                  t        d   ddœ«       | j                  | _        y)	Nr˜   r-   r1  r.   Fr  rD  T)r   rG   r   r1   rH   r$   r!   r"   r   r   rA  r’   s     r*   r[  z/HTMLTokenizer.afterDoctypeSystemIdentifierStateŠ  sì   € Ø�{‰{×ÑÓ!ˆØ”?Ñ"Øð ð �SŠ[Ø�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð ð ”S‰[Ø�O‰O×"Ñ"¬J°|Ñ,DØ$4ñ$6ô 7à+0ˆD×Ñ˜iÑ(Ø�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð
 ð �O‰O×"Ñ"¬J°|Ñ,DØ$@ñ$Bô Cà×/Ñ/ˆDŒJØr+   c                 óf  — | j                   j                  «       }|dk(  r7| j                  j                  | j                  «       | j
                  | _        y|t        u rR| j                   j                  |«       | j                  j                  | j                  «       | j
                  | _        y	 y)Nr˜   T)	r   rG   r1   rH   r$   r!   r"   r   rN   r’   s     r*   rA  zHTMLTokenizer.bogusDoctypeState�  sŽ   € Ø�{‰{×ÑÓ!ˆØ�3Š;Ø�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð ð ”S‰[à�K‰K×Ñ˜dÔ#Ø�O‰O×"Ñ" 4×#4Ñ#4Ô5ØŸ™ˆDŒJð ð Ør+   c                 ó¦  — g }	 |j                  | j                  j                  d«      «       |j                  | j                  j                  d«      «       | j                  j                  «       }|t        k(  rn0|dk(  sJ ‚|d   dd  dk(  r|d   d d |d<   n|j                  |«       Œ¨dj                  |«      }|j                  d«      }|d	kD  rGt        |«      D ]'  }| j                  j                  t        d
   ddœ«       Œ) |j                  dd«      }|r%| j                  j                  t        d   |dœ«       | j                  | _        y)NTú]r˜   rZ   éþÿÿÿz]]r:   r{   r   r-   r|   r.   r?   r_   )rH   r   r€   rG   r   rJ   ÚcountÚranger1   r   rø   r!   r"   )r'   r0   rG   Ú	nullCountrè   s        r*   r  zHTMLTokenizer.cdataSectionState«  sB  € ØˆØØ�K‰K˜Ÿ™×.Ñ.¨sÓ3Ô4Ø�K‰K˜Ÿ™×.Ñ.¨sÓ3Ô4Ø—;‘;×#Ñ#Ó%ˆDØ”sŠ{Øà˜s’{Ð"�{Ø˜‘8˜B˜C�= DÒ(Ø# B™x¨¨˜}�D˜‘HØà—K‘K Ô%ð ð �w‰w�t‹}ˆà—J‘J˜xÓ(ˆ	Ø�qŠ=Ü˜9Ó%ò F�Ø—‘×&Ñ&´
¸<Ñ0HØ0Cñ(Eõ FðFð —<‘< ¨(Ó3ˆDÙØ�O‰O×"Ñ"¬J°|Ñ,DØ,0ñ$2ô 3à—^‘^ˆŒ
Ør+   )Nr   )NÚ__name__Ú
__module__Ú__qualname__Ú__doc__r&   r6   rU   rl   rn   ry   r!   r~   rˆ   r†   r�   r�   r“   r   r›   rœ   r‡   r§   rª   rŒ   r±   r³   r�   r¶   r¹   r·   r¾   rÅ   rÃ   rÁ   rÄ   rÉ   rÌ   rÊ   rÑ   rÕ   rØ   rÖ   rÛ   r¢   rá   rå   rä   rì   rî   rí   rñ   r£   r�   rš   r  r  r  r$  r"  r'  r  r+  r-  r/  r?  rE  rI  rJ  rM  rR  r@  rW  rS  rT  r[  rA  r  Ú__classcell__)r)   s   @r*   r   r      s�  ø„ ñ
õ.ò0ò FóPNTò`Hò
$ò8ò:ò
ò:ò
ò$ò$ò!òFò0ò,	ò	òò8	ò	òò8ò	òò8òòò(ò(ò,ò	òò8ò ò*ò.ò2	òò ò<4òlò@ òDò&ò&ò2ò(ò$ò+òZò.ò.ò$ò&ò>ò.ò"ò4ò21òfò(ò:ò0ò0ò<ò4ò(ò:ò0ò0ò&ör+   r   N) Ú
__future__r   r   r   Úsixr   rL   Úcollectionsr   r   Úsysr	   Ú	constantsr   r   r   r   r   r   r   r   r   r   Ú_inputstreamr   Ú_trier   r`   Údictru   Úobjectr   © r+   r*   ú<module>rt     sX   ðß BÑ Bå ç *Ý å &Ý ß 5ß -Ñ -ß 0Ý ,å )å á�H‹~€à�6ÒØ�Là€Lôl�Fõ lr+   