§
    ð­½jV  ã                   óV  — d Z ddlZddlZddlmZ dgZ ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        Z	 ej        d¦  «        Z
 ej        d	¦  «        Z ej        d
¦  «        Z ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        Z ej        dej        ¦  «        Z ej        dej        ¦  «        Z ej        dej        ¦  «        Z ej        d¦  «        Z ej        d¦  «        Z G d„ dej        ¦  «        ZdS )zA parser for HTML and XHTML.é    N)ÚunescapeÚ
HTMLParserz[&<]z
&[a-zA-Z#]z%&([a-zA-Z][-.a-zA-Z0-9]*)[^a-zA-Z0-9]z)&#(?:[0-9]+|[xX][0-9a-fA-F]+)[^0-9a-fA-F]z	<[a-zA-Z]z
</[a-zA-Z]ú>z--!?>z-?>z0([a-zA-Z][^\t\n\r\f />]*)(?:[\t\n\r\f ]|/(?!>))*a{  
  (
    (?<=['"\t\n\r\f /])[^\t\n\r\f />][^\t\n\r\f /=>]*  # attribute name
   )
  ([\t\n\r\f ]*=[\t\n\r\f ]*        # value indicator
    ('[^']*'                        # LITA-enclosed value
    |"[^"]*"                        # LIT-enclosed value
    |(?!['"])[^>\t\n\r\f ]*         # bare value
    )
   )?
  (?:[\t\n\r\f ]|/(?!>))*           # possibly followed by a space
a  
  [a-zA-Z][^\t\n\r\f />]*           # tag name
  [\t\n\r\f /]*                     # optional whitespace before attribute name
  (?:(?<=['"\t\n\r\f /])[^\t\n\r\f />][^\t\n\r\f /=>]*  # attribute name
    (?:[\t\n\r\f ]*=[\t\n\r\f ]*    # value indicator
      (?:'[^']*'                    # LITA-enclosed value
        |"[^"]*"                    # LIT-enclosed value
        |(?!['"])[^>\t\n\r\f ]*     # bare value
       )
     )?
    [\t\n\r\f /]*                   # possibly followed by a space
   )*
   >?
aF  
  <[a-zA-Z][^\t\n\r\f />\x00]*       # tag name
  (?:[\s/]*                          # optional whitespace before attribute name
    (?:(?<=['"\s/])[^\s/>][^\s/=>]*  # attribute name
      (?:\s*=+\s*                    # value indicator
        (?:'[^']*'                   # LITA-enclosed value
          |"[^"]*"                   # LIT-enclosed value
          |(?!['"])[^>\s]*           # bare value
         )
        \s*                          # possibly followed by a space
       )?(?:\s|/(?!>))*
     )*
   )?
  \s*                                # trailing whitespace
z#</\s*([a-zA-Z][-.a-zA-Z0-9:_]*)\s*>c                   óÎ   — e Zd ZdZdZdZdddœd„Zd„ Zd	„ Zd
„ Z	dZ
d„ Zddœd„Zd„ Zd$d„Zd„ Zd„ Zd$d„Zd%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S )&r   aE  Find tags and other markup and call handler functions.

    Usage:
        p = HTMLParser()
        p.feed(data)
        ...
        p.close()

    Start tags are handled by calling self.handle_starttag() or
    self.handle_startendtag(); end tags by self.handle_endtag().  The
    data between tags is passed from the parser to the derived class
    by calling self.handle_data() with the data as argument (the data
    may be split up in arbitrary chunks).  If convert_charrefs is
    True the character references are converted automatically to the
    corresponding Unicode character (and self.handle_data() is no
    longer split in chunks), otherwise they are passed by calling
    self.handle_entityref() or self.handle_charref() with the string
    containing respectively the named or numeric reference as the
    argument.
    )ÚscriptÚstyleÚxmpÚiframeÚnoembedÚnoframes)ÚtextareaÚtitleTF)Úconvert_charrefsÚ	scriptingc                óJ   — || _         || _        |                      ¦   «          dS )az  Initialize and reset this instance.

        If convert_charrefs is true (the default), all character references
        are automatically converted to the corresponding Unicode characters.

        If *scripting* is false (the default), the content of the
        ``noscript`` element is parsed normally; if it's true,
        it's returned as is without being parsed.
        N)r   r   Úreset)Úselfr   r   s      ú6/Users/bpa/Downloads/Python-3.11.17/Lib/html/parser.pyÚ__init__zHTMLParser.__init__v   s$   € ð !1ˆÔØ"ˆŒØ�
Š
‰Œˆˆˆó    c                 óÌ   — d| _         d| _        t          | _        d| _        d| _        d| _        g | _        d| _        d| _	        t          j                             | ¦  «         dS )z1Reset this instance.  Loses all unprocessed data.Ú z???NTr   é   )ÚrawdataÚlasttagÚinteresting_normalÚinterestingÚ
cdata_elemÚ_support_cdataÚ
_escapableÚ_pendingÚ_pending_lenÚ_parse_thresholdÚ_markupbaseÚ
ParserBaser   ©r   s    r   r   zHTMLParser.reset„   sb   € àˆŒØˆŒÝ-ˆÔØˆŒØ"ˆÔØˆŒØˆŒØˆÔØ !ˆÔÝÔ×$Ò$ TÑ*Ô*Ð*Ð*Ð*r   c                 óR  — | xj         t          |¦  «        z  c_         | j         | j        k     r| j                             |¦  «         dS | j        s| xj        |z  c_        n[| j                             |¦  «         | xj        d                     | j        ¦  «        z  c_        | j                             ¦   «          d| _         t          | j        ¦  «        }|                      d¦  «         t          | j        ¦  «        |k     r	d| _        dS t          | j        ¦  «        | _        dS )z‘Feed data to the parser.

        Call this as often as you want, with as little or as much text
        as you want (may include '\n').
        r   r   r   N)	r"   Úlenr#   r!   Úappendr   ÚjoinÚclearÚgoahead)r   ÚdataÚns      r   ÚfeedzHTMLParser.feed‘   s  € ð 	ÐÔ�S ™YœYÑ&ÐÔØÔ˜tÔ4Ò4Ð4ØŒM× Ò  Ñ&Ô&Ð&Ð&Ð&à”=ð &Ø�” Ñ$�”�à”×$Ò$ TÑ*Ô*Ð*Ø�” §¢¨¬Ñ 6Ô 6Ñ6�”Ø”×#Ò#Ñ%Ô%Ð%Ø !ˆDÔÝ�D”LÑ!Ô!ˆAØ�LŠL˜‰OŒOˆOÝ�4”<Ñ Ô  1Ò$Ð$à()�Ô%Ð%Ð%õ ),¨D¬LÑ(9Ô(9�Ô%Ð%Ð%r   c                 óÎ   — | j         rH| xj        d                     | j         ¦  «        z  c_        | j                              ¦   «          d| _        |                      d¦  «         dS )zHandle any buffered data.r   r   r   N)r!   r   r*   r+   r"   r,   r&   s    r   ÚclosezHTMLParser.close¯   sY   € àŒ=ð 	"ØˆLŒL˜BŸGšG D¤MÑ2Ô2Ñ2ˆLŒLØŒM×ÒÑ!Ô!Ð!Ø !ˆDÔØ�Š�Q‰Œˆˆˆr   Nc                 ó   — | j         S )z)Return full source of start tag: '<...>'.)Ú_HTMLParser__starttag_textr&   s    r   Úget_starttag_textzHTMLParser.get_starttag_text¹   s   € àÔ#Ð#r   ©Ú	escapablec                óŒ  — |                      ¦   «         | _        || _        | j        dk    rt          j        d¦  «        | _        d S |rB| j        s;t          j        d| j        z  t          j        t          j        z  ¦  «        | _        d S t          j        d| j        z  t          j        t          j        z  ¦  «        | _        d S )NÚ	plaintextz\Zz&|</%s(?=[\t\n\r\f />])z</%s(?=[\t\n\r\f />]))	Úlowerr   r    ÚreÚcompiler   r   Ú
IGNORECASEÚASCII)r   Úelemr6   s      r   Úset_cdata_modezHTMLParser.set_cdata_mode½   s·   € ØŸ*š*™,œ,ˆŒØ#ˆŒØŒ?˜kÒ)Ð)Ý!œz¨%Ñ0Ô0ˆDÔÐÐØð 	B˜tÔ4ð 	BÝ!œzÐ*DÀtÄÑ*VÝ*,¬-½¼Ñ*@ñ Bô  BˆDÔÐÐõ  "œzÐ*BÀTÄ_Ñ*TÝ*,¬-½¼Ñ*@ñ Bô  BˆDÔÐÐr   c                 ó:   — t           | _        d | _        d| _        d S )NT)r   r   r   r    r&   s    r   Úclear_cdata_modezHTMLParser.clear_cdata_modeÉ   s   € Ý-ˆÔØˆŒØˆŒˆˆr   c                 ó   — || _         dS )a  Enable or disable support of the CDATA sections.
        If enabled, "<[CDATA[" starts a CDATA section which ends with "]]>".
        If disabled, "<[CDATA[" starts a bogus comments which ends with ">".

        This method is not called by default. Its purpose is to be called
        in custom handle_starttag() and handle_endtag() methods, with
        value that depends on the adjusted current node.
        See https://html.spec.whatwg.org/multipage/parsing.html#markup-declaration-open-state
        for details.
        N)r   )r   Úflags     r   Ú_set_support_cdatazHTMLParser._set_support_cdataÎ   s   € ð #ˆÔÐÐr   c                 óð  — | j         }d}t          |¦  «        }||k     �rS| j        r}| j        sv|                     d|¦  «        }|dk     rY|                     dt          ||dz
  ¦  «        ¦  «        }|dk    r*t          j        d¦  «         	                    ||¦  «        s�nÒ|}n=| j
         	                    ||¦  «        }|r|                     ¦   «         }n| j        r�n”|}||k     rV| j        r2| j        r+|                      t          |||…         ¦  «        ¦  «         n|                      |||…         ¦  «         |                      ||¦  «        }||k    r�n|j        } |d|¦  «        �rÐt"                               ||¦  «        r|                      |¦  «        }	n° |d|¦  «        r|                      |¦  «        }	nŽ |d|¦  «        r|                      |¦  «        }	nl |d|¦  «        r|                      |¦  «        }	nJ |d	|¦  «        r|                      |¦  «        }	n(|d
z   |k     s|r|                      d¦  «         |d
z   }	n�n#|	dk     �rÐ|s�nt"                               ||¦  «        r�n­ |d|¦  «        r_|dz   |k    r|                      d¦  «         �n�t0                               ||¦  «        r�nd|                      ||dz   d …         ¦  «         �nB |d|¦  «        rU|}dD ]/}
|                     |
|dz   ¦  «        r|t          |
¦  «        z  } nŒ0|                      ||dz   |…         ¦  «         ná |d|¦  «        r(| j        r!|                      ||dz   d …         ¦  «         n­|||dz   …                              ¦   «         dk    r!|                      ||dz   d …         ¦  «         ni |d	|¦  «        r!|                      ||dz   d …         ¦  «         n< |d|¦  «        r!|                      ||dz   d …         ¦  «         ntA          d¦  «        ‚|}	|                      ||	¦  «        }�n- |d|¦  «        rÕtB                               ||¦  «        }|rq| "                    ¦   «         dd…         }|  #                    |¦  «         | $                    ¦   «         }	 |d|	d
z
  ¦  «        s|	d
z
  }	|                      ||	¦  «        }�ŒÀd||d …         v r9|                      |||dz   …         ¦  «         |                      ||dz   ¦  «        }�nS |d|¦  «        �r5tJ                               ||¦  «        }|rj| "                    d
¦  «        }|  &                    |¦  «         | $                    ¦   «         }	 |d|	d
z
  ¦  «        s|	d
z
  }	|                      ||	¦  «        }�Œ›tN                               ||¦  «        }|rX|rU| "                    ¦   «         ||d …         k    r5| $                    ¦   «         }	|	|k    r|}	|                      ||d
z   ¦  «        }nJ|d
z   |k     r/|                      d¦  «         |                      ||d
z   ¦  «        }nnJ d¦   «         ‚||k     �°S|rr||k     rl| j        r2| j        r+|                      t          |||…         ¦  «        ¦  «         n|                      |||…         ¦  «         |                      ||¦  «        }||d …         | _         d S )Nr   ú<ú&é"   z[\t\n\r\f ;]ú</ú<!--ú<?ú<!r   é   )z--!z--ú-é   ú	<![CDATA[é   é	   ú	<!doctypezwe should not get here!z&#éÿÿÿÿú;zinteresting.search() lied)(r   r(   r   r   ÚfindÚrfindÚmaxr:   r;   Úsearchr   Ústartr    Úhandle_datar   Ú	updateposÚ
startswithÚstarttagopenÚmatchÚparse_starttagÚparse_endtagÚparse_commentÚparse_piÚparse_html_declarationÚ
endtagopenÚhandle_commentÚendswithr   Úunknown_declr9   Úhandle_declÚ	handle_piÚAssertionErrorÚcharrefÚgroupÚhandle_charrefÚendÚ	entityrefÚhandle_entityrefÚ
incomplete)r   ro   r   Úir.   ÚjÚampposr_   r]   ÚkÚsuffixÚnames               r   r,   zHTMLParser.goaheadÞ   s¯  € Ø”,ˆØˆÝ�‰LŒLˆØ�!Še‰eØÔ$ð ¨T¬_ð Ø—L’L  aÑ(Ô(�Ø�q’5�5ð %Ÿ]š]¨3µ°A°q¸±t±´Ñ=Ô=�FØ !š˜ÝœJ Ñ7Ô7×>Ò>¸wÈÑOÔOð $áØ�AøàÔ(×/Ò/°¸Ñ;Ô;�Øð ØŸš™œ�A�Aà”ð ÙØ�AØ�1ŠuˆuØÔ(ð 3¨T¬_ð 3Ø×$Ò$¥X¨g°a¸°c¬lÑ%;Ô%;Ñ<Ô<Ð<Ð<à×$Ò$ W¨Q¨q¨S¤\Ñ2Ô2Ð2Ø—’˜q !Ñ$Ô$ˆAØ�AŠvˆv‘uØ Ô+ˆJØˆz˜#˜qÑ!Ô!ñ \6Ý×%Ò% g¨qÑ1Ô1ð Ø×+Ò+¨AÑ.Ô.�A�AØ�Z  aÑ(Ô(ð Ø×)Ò)¨!Ñ,Ô,�A�AØ�Z ¨Ñ*Ô*ð 
Ø×*Ò*¨1Ñ-Ô-�A�AØ�Z  aÑ(Ô(ð ØŸš aÑ(Ô(�A�AØ�Z  aÑ(Ô(ð Ø×3Ò3°AÑ6Ô6�A�AØ˜!‘e˜q’[�[ C�[Ø×$Ò$ SÑ)Ô)Ð)Ø˜A™�A�AáØ�q’5‘5Øð ÙÝ#×)Ò)¨'°1Ñ5Ô5ð HÙØ#˜ D¨!Ñ,Ô,ð HØ˜q™5 Aš:˜:Ø ×,Ò,¨TÑ2Ô2Ð2Ñ2Ý'×-Ò-¨g°qÑ9Ô9ð ?Ù ð !×/Ò/°¸¸!¹¸¸´Ñ>Ô>Ð>Ñ>Ø#˜ F¨AÑ.Ô.ð HØ˜Ø&8ð &ð &˜FØ&×/Ò/°¸¸!¹Ñ<Ô<ð &Ø !¥S¨¡[¤[Ñ 0 Ø % ð&ð ×+Ò+¨G°A°a±C¸°E¬NÑ;Ô;Ð;Ð;Ø#˜ K°Ñ3Ô3ð 
H¸Ô8Kð 
HØ×)Ò)¨'°!°A±#°$°$¬-Ñ8Ô8Ð8Ð8Ø   1 Q¡3 œ×-Ò-Ñ/Ô/°;Ò>Ð>Ø×(Ò(¨°°1±°°¬Ñ7Ô7Ð7Ð7Ø#˜ D¨!Ñ,Ô,ð Hà×+Ò+¨G°A°a±C°D°D¬MÑ:Ô:Ð:Ð:Ø#˜ D¨!Ñ,Ô,ð HØŸš w¨q°©s¨t¨t¤}Ñ5Ô5Ð5Ð5å,Ð-FÑGÔGÐGØ�AØ—N’N 1 aÑ(Ô(�‘Ø�˜D !Ñ$Ô$ð +6ÝŸš g¨qÑ1Ô1�Øð Ø Ÿ;š;™=œ=¨¨2¨Ô.�DØ×'Ò'¨Ñ-Ô-Ð-ØŸ	š	™œ�AØ%˜: c¨1¨Q©3Ñ/Ô/ð "Ø ™E˜ØŸš q¨!Ñ,Ô,�AÙà˜g a b bœkÐ)Ð)Ø×(Ò(¨°°1°Q±3°¬Ñ8Ô8Ð8Ø ŸNšN¨1¨a°©cÑ2Ô2˜ÙØ�˜C Ñ#Ô#ñ 6Ý!Ÿš¨°Ñ3Ô3�Øð Ø Ÿ;š; q™>œ>�DØ×)Ò)¨$Ñ/Ô/Ð/ØŸ	š	™œ�AØ%˜: c¨1¨Q©3Ñ/Ô/ð "Ø ™E˜ØŸš q¨!Ñ,Ô,�AÙÝ"×(Ò(¨°!Ñ4Ô4�Øð àð 5˜uŸ{š{™}œ}°¸¸¸´Ò;Ð;Ø!ŸIšI™KœK˜Ø š6˜6Ø !˜AØ ŸNšN¨1¨a°!©eÑ4Ô4˜àØ˜!‘e˜q’[�[ð ×$Ò$ SÑ)Ô)Ð)ØŸš q¨!¨a©%Ñ0Ô0�A�Aàà5Ð5Ñ5Ô5�qðw �!Še‰eðz ð 	%�1�q’5�5ØÔ$ð /¨¬ð /Ø× Ò ¥¨'°!°A°#¬,Ñ!7Ô!7Ñ8Ô8Ð8Ð8à× Ò  ¨¨1¨¤Ñ.Ô.Ð.Ø—’˜q !Ñ$Ô$ˆAØ˜q˜r˜r”{ˆŒˆˆr   c                 ó^  — | j         }|||dz   …         dk    s
J d¦   «         ‚|||dz   …         dk    r|                      |¦  «        S |||dz   …         dk    rM| j        rF|                     d|dz   ¦  «        }|d	k     rd
S |                      ||dz   |…         ¦  «         |dz   S |||dz   …                              ¦   «         dk    rF|                     d|dz   ¦  «        }|d
k    rd
S |                      ||dz   |…         ¦  «         |dz   S |||dz   …         dk    ry|                     d|dz   ¦  «        }|d	k     rd
S ||dz
           dk    r$|                      ||dz   |dz
  …         ¦  «         n |                      ||dz   |…         ¦  «         |dz   S |                      |¦  «        S )NrM   rL   z+unexpected call to parse_html_declaration()rO   rJ   rR   rP   z]]>r   rT   rQ   rS   r   r   z<![ú])	r   rb   r   rV   rh   r9   ri   rf   Úparse_bogus_comment)r   rs   r   rt   Úgtposs        r   rd   z!HTMLParser.parse_html_declarationj  sð  € Ø”,ˆØ�q˜˜1™�uŒ~ Ò%Ð%Ð%ð )CÑ%Ô%Ð%à�1�Q�q‘S�5Œ>˜VÒ#Ð#à×%Ò% aÑ(Ô(Ð(Ø�Q�q˜‘s�UŒ^˜{Ò*Ð*¨tÔ/BÐ*Ø—’˜U A a¡CÑ(Ô(ˆAØ�1ŠuˆuØ�rØ×Ò˜g a¨¡c¨1 fœoÑ.Ô.Ð.Ø�q‘5ˆLØ�Q�q˜‘s�UŒ^×!Ò!Ñ#Ô# {Ò2Ð2à—L’L  a¨¡cÑ*Ô*ˆEØ˜Š{ˆ{Ø�rØ×Ò˜W Q q¡S¨ YÔ/Ñ0Ô0Ð0Ø˜‘7ˆNØ�Q�q˜‘s�UŒ^˜uÒ$Ð$Ø—’˜S ! A¡#Ñ&Ô&ˆAØ�1ŠuˆuØ�rØ�q˜‘sŒ|˜sÒ"Ð"Ø×!Ò! '¨!¨A©#¨q°©s¨(Ô"3Ñ4Ô4Ð4Ð4à×#Ò# G¨A¨a©C°¨F¤OÑ4Ô4Ð4Ø�q‘5ˆLà×+Ò+¨AÑ.Ô.Ð.r   c                 óh  — | j         }|                     d|¦  «        s
J d¦   «         ‚t                               ||dz   ¦  «        }|s"t                               ||dz   ¦  «        }|sdS |r4|                     ¦   «         }|                      ||dz   |…         ¦  «         |                     ¦   «         S )NrJ   ú"unexpected call to parse_comment()rO   rT   )	r   r]   ÚcommentcloserY   Úcommentabruptcloser_   rZ   rf   ro   )r   rs   Úreportr   r_   rt   s         r   rb   zHTMLParser.parse_commentŒ  s¸   € Ø”,ˆØ×!Ò! &¨!Ñ,Ô,ÐRÐRÐ.RÑRÔRÐ,Ý×#Ò# G¨Q¨q©SÑ1Ô1ˆØð 	Ý&×,Ò,¨W°a¸±cÑ:Ô:ˆEØð Ø�rØð 	1Ø—’‘”ˆAØ×Ò ¨¨!©¨Q¨¤Ñ0Ô0Ð0Ø�yŠy‰{Œ{Ðr   r   c                 óÒ   — | j         }|||dz   …         dv s
J d¦   «         ‚|                     d|dz   ¦  «        }|dk    rdS |r |                      ||dz   |…         ¦  «         |dz   S )NrM   )rL   rI   r~   r   rT   r   )r   rV   rf   )r   rs   r�   r   Úposs        r   r{   zHTMLParser.parse_bogus_comment›  s‰   € Ø”,ˆØ�q˜˜1™�uŒ~ Ð-Ð-Ð-ð 1BÑ-Ô-Ð-à�lŠl˜3  !¡Ñ$Ô$ˆØ�"Š9ˆ9Ø�2Øð 	2Ø×Ò ¨¨!©¨C¨Ô 0Ñ1Ô1Ð1Ø�Q‰wˆr   c                 ó  — | j         }|||dz   …         dk    s
J d¦   «         ‚t                               ||dz   ¦  «        }|sdS |                     ¦   «         }|                      ||dz   |…         ¦  «         |                     ¦   «         }|S )NrM   rK   zunexpected call to parse_pi()rT   )r   ÚpicloserY   rZ   rj   ro   ©r   rs   r   r_   rt   s        r   rc   zHTMLParser.parse_pi§  s�   € Ø”,ˆØ�q˜˜1™�uŒ~ Ò%Ð%Ð%Ð'FÑ%Ô%Ð%Ý—’˜w¨¨!©Ñ,Ô,ˆØð 	Ø�2Ø�KŠK‰MŒMˆØ�Š�w˜q ™s A˜v”Ñ'Ô'Ð'Ø�IŠI‰KŒKˆØˆr   c                 óÂ  — d | _         |                      |¦  «        }|dk     r|S | j        }|||…         | _         g }t                               ||dz   ¦  «        }|s
J d¦   «         ‚|                     ¦   «         }|                     d¦  «                             ¦   «         x| _        }||k     rÛt                               ||¦  «        }|sn½|                     ddd¦  «        \  }	}
}|
sd }nI|d d…         dcxk    r|dd …         k    s"n |d d…         dcxk    r|dd …         k    rn n
|dd…         }|rt          |¦  «        }|                     |	                     ¦   «         |f¦  «         |                     ¦   «         }||k     °Û|||…                              ¦   «         }|d	vr|                      |||…         ¦  «         |S |                     d
¦  «        r|                      ||¦  «         nj|                      ||¦  «         || j        v s| j        r|dk    s|dk    r|                      |d¬¦  «         n || j        v r|                      |d¬¦  «         |S )Nr   r   z#unexpected call to parse_starttag()rM   rQ   ú'rT   ú")r   ú/>rŠ   Únoscriptr8   Fr5   T)r3   Úcheck_for_whole_start_tagr   Útagfind_tolerantr_   ro   rm   r9   r   Úattrfind_tolerantr   r)   Ústripr[   rg   Úhandle_startendtagÚhandle_starttagÚCDATA_CONTENT_ELEMENTSr   r?   ÚRCDATA_CONTENT_ELEMENTS)r   rs   Úendposr   Úattrsr_   rv   ÚtagÚmÚattrnameÚrestÚ	attrvaluero   s                r   r`   zHTMLParser.parse_starttag³  sº  € ð  $ˆÔØ×/Ò/°Ñ2Ô2ˆØ�AŠ:ˆ:ØˆMØ”,ˆØ& q¨ xÔ0ˆÔð ˆÝ ×&Ò& w°°!±Ñ4Ô4ˆØÐ;Ð;Ð;Ñ;Ô;ˆuØ�IŠI‰KŒKˆØ"Ÿ[š[¨™^œ^×1Ò1Ñ3Ô3Ð3ˆŒ�sØ�&ŠjˆjÝ!×'Ò'¨°Ñ3Ô3ˆAØð ØØ()¯ª°°1°aÑ(8Ô(8Ñ%ˆH�d˜IØð ,Ø �	�	Ø˜2˜A˜2” $Ð8Ð8Ò8Ð8¨)°B°C°C¬.Ò8Ð8Ð8Ð8Ø˜2˜A˜2” #Ð7Ð7Ò7Ð7¨°2°3°3¬Ò7Ð7Ð7Ð7Ð7Ø% a¨ dœO�	Øð 0Ý$ YÑ/Ô/�	Ø�LŠL˜(Ÿ.š.Ñ*Ô*¨IÐ6Ñ7Ô7Ð7Ø—’‘”ˆAð �&Šjˆjð �a˜�hÔ×%Ò%Ñ'Ô'ˆØ�kÐ!Ð!Ø×Ò˜W Q v XÔ.Ñ/Ô/Ð/ØˆMØ�<Š<˜ÑÔð 
	9à×#Ò# C¨Ñ/Ô/Ð/Ð/à× Ò   eÑ,Ô,Ð,Ø�tÔ2Ð2Ð2Ø”ð 3Ø$'¨:Ò$5Ð$5Ø�{Ò"Ð"Ø×#Ò# C°5Ð#Ñ9Ô9Ð9Ð9Ø˜Ô4Ð4Ð4Ø×#Ò# C°4Ð#Ñ8Ô8Ð8Øˆr   c                 ó¢   — | j         }t                               ||dz   ¦  «        }|sJ ‚|                     ¦   «         }||dz
           dk    rdS |S )Nr   r   rT   )r   Úlocatetagendr_   ro   r†   s        r   rŒ   z$HTMLParser.check_for_whole_start_tagå  sU   € Ø”,ˆÝ×"Ò" 7¨A¨a©CÑ0Ô0ˆØˆˆˆuØ�IŠI‰KŒKˆØ�1�Q‘3Œ<˜3ÒÐØ�2Øˆr   c                 óŒ  — | j         }|||dz   …         dk    s
J d¦   «         ‚|                     d|dz   ¦  «        dk     rdS t                               ||¦  «        s.||dz   |dz   …         dk    r|dz   S |                      |¦  «        S t
                               ||dz   ¦  «        }|sJ ‚|                     ¦   «         }||dz
           dk    rdS t                               ||dz   ¦  «        }|sJ ‚|                     d¦  «         	                    ¦   «         }|  
                    |¦  «         |                      ¦   «          |S )	NrM   rI   zunexpected call to parse_endtagr   r   rT   rQ   r   )r   rV   re   r_   r{   rœ   ro   r�   rm   r9   Úhandle_endtagrA   )r   rs   r   r_   rt   r–   s         r   ra   zHTMLParser.parse_endtagï  sU  € ð ”,ˆØ�q˜˜1™�uŒ~ Ò%Ð%Ð%Ð'HÑ%Ô%Ð%Ø�<Š<˜˜Q˜q™SÑ!Ô! AÒ%Ð%Ø�2Ý×Ò ¨Ñ+Ô+ð 	3Ø�q˜‘s˜1˜Q™3�wÔ 3Ò&Ð&à˜‘s�
à×/Ò/°Ñ2Ô2Ð2å×"Ò" 7¨A¨a©CÑ0Ô0ˆØˆˆˆuØ�IŠI‰KŒKˆØ�1�Q‘3Œ<˜3ÒÐØ�2õ !×&Ò& w°°!±Ñ4Ô4ˆØˆˆˆuØ�kŠk˜!‰nŒn×"Ò"Ñ$Ô$ˆØ×Ò˜3ÑÔÐØ×ÒÑÔÐØˆr   c                 ó\   — |                       ||¦  «         |                      |¦  «         d S ©N)r‘   rž   ©r   r–   r•   s      r   r�   zHTMLParser.handle_startendtag  s2   € Ø×Ò˜S %Ñ(Ô(Ð(Ø×Ò˜3ÑÔÐÐÐr   c                 ó   — d S r    © r¡   s      r   r‘   zHTMLParser.handle_starttag  ó   € Øˆr   c                 ó   — d S r    r£   )r   r–   s     r   rž   zHTMLParser.handle_endtag  r¤   r   c                 ó   — d S r    r£   ©r   rx   s     r   rn   zHTMLParser.handle_charref  r¤   r   c                 ó   — d S r    r£   r§   s     r   rq   zHTMLParser.handle_entityref  r¤   r   c                 ó   — d S r    r£   ©r   r-   s     r   r[   zHTMLParser.handle_data"  r¤   r   c                 ó   — d S r    r£   rª   s     r   rf   zHTMLParser.handle_comment&  r¤   r   c                 ó   — d S r    r£   )r   Údecls     r   ri   zHTMLParser.handle_decl*  r¤   r   c                 ó   — d S r    r£   rª   s     r   rj   zHTMLParser.handle_pi.  r¤   r   c                 ó   — d S r    r£   rª   s     r   rh   zHTMLParser.unknown_decl1  r¤   r   )T)r   )!Ú__name__Ú
__module__Ú__qualname__Ú__doc__r’   r“   r   r   r/   r1   r3   r4   r?   rA   rD   r,   rd   rb   r{   rc   r`   rŒ   ra   r�   r‘   rž   rn   rq   r[   rf   ri   rj   rh   r£   r   r   r   r   Z   sò  € € € € € ðð ð0 YÐØ3Ðà+/¸5ð ð ð ð ð ð+ð +ð +ð:ð :ð :ð<ð ð ð €Oð$ð $ð $ð 16ð 
Bð 
Bð 
Bð 
Bð 
Bðð ð ð
#ð #ð #ð #ð G#ð G#ð G#ðX/ð /ð /ðDð ð ð ð	ð 	ð 	ð 	ð	ð 	ð 	ð.ð .ð .ðdð ð ðð ð ð< ð  ð  ð
ð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð ð r   )r³   r:   r$   Úhtmlr   Ú__all__r;   r   rr   rp   rl   r^   re   r…   r   r€   r�   ÚVERBOSErŽ   rœ   Úlocatestarttagend_tolerantÚ	endendtagÚ
endtagfindr%   r   r£   r   r   ú<module>rº      s¶  ðØ "Ð "ð 
€	€	€	Ø Ð Ð Ð à Ð Ð Ð Ð Ð ð ˆ.€ð  �R”Z Ñ'Ô'Ð ØˆRŒZ˜Ñ%Ô%€
àˆBŒJÐ>Ñ?Ô?€	Ø
ˆ"Œ*Ð@Ñ
AÔ
A€àˆrŒz˜+Ñ&Ô&€ØˆRŒZ˜Ñ%Ô%€
Ø
ˆ"Œ*�S‰/Œ/€ØˆrŒz˜(Ñ#Ô#€Ø�R”Z Ñ'Ô'Ð ð �2”:ÐQÑRÔRÐ Ø�B”Jð  ð „Zñô Ð ð ˆrŒzð ð „Zñô €ð  (˜RœZð )ð „Zñô Ð ð ˆBŒJ�s‰OŒO€	ØˆRŒZÐ>Ñ?Ô?€
ðXð Xð Xð Xð X�Ô'ñ Xô Xð Xð Xð Xr   