ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     U
    e5d9E                     @   s   d Z ddlZddlZddlZddlmZ dgZedZedZ	edZ
edZed	Zed
ZedZedZedZedejZed
ZedZG d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--\s*>z+([a-zA-Z][^\t\n\r\f />\x00]*)(?:\s|/(?!>))*z]((?<=[\'"\s/])[^\s/>][^\s/=>]*)(\s*=+\s*(\'[^\']*\'|"[^"]*"|(?![\'"])[^>\s]*))?(?:\s|/(?!>))*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                   @   s   e Zd ZdZdZddddZdd Zd	d
 Zdd ZdZ	dd Z
dd Zdd Zdd Zdd Zd9ddZdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 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.
    )ZscriptZstyleT)convert_charrefsc                C   s   || _ |   dS )zInitialize and reset this instance.

        If convert_charrefs is True (the default), all character references
        are automatically converted to the corresponding Unicode characters.
        N)r   reset)selfr    r   #/usr/lib64/python3.8/html/parser.py__init__W   s    zHTMLParser.__init__c                 C   s(   d| _ d| _t| _d| _tj|  dS )z1Reset this instance.  Loses all unprocessed data. z???N)rawdatalasttaginteresting_normalinteresting
cdata_elem_markupbase
ParserBaser   r   r   r   r	   r   `   s
    zHTMLParser.resetc                 C   s   | j | | _ | d dS )zFeed 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   N)r   goaheadr   datar   r   r	   feedh   s    zHTMLParser.feedc                 C   s   |  d dS )zHandle any buffered data.   N)r   r   r   r   r	   closeq   s    zHTMLParser.closeNc                 C   s   | j S )z)Return full source of start tag: '<...>'.)_HTMLParser__starttag_textr   r   r   r	   get_starttag_textw   s    zHTMLParser.get_starttag_textc                 C   s$   |  | _td| j tj| _d S )Nz</\s*%s\s*>)lowerr   recompileIr   )r   elemr   r   r	   set_cdata_mode{   s    
zHTMLParser.set_cdata_modec                 C   s   t | _d | _d S N)r   r   r   r   r   r   r	   clear_cdata_mode   s    zHTMLParser.clear_cdata_modec                 C   sX  | j }d}t|}||k r| jrv| jsv|d|}|dk r|dt||d }|dkrptd	||spq|}n*| j
	||}|r| }n| jrq|}||k r| jr| js| t|||  n| |||  | ||}||krq|j}|d|rJt||r"| |}	n|d|r:| |}	nn|d|rR| |}	nV|d|rj| |}	n>|d	|r| |}	n&|d
 |k r| d |d
 }	nq|	dk r<|sq|d|d
 }	|	dk r|d|d
 }	|	dk r|d
 }	n|	d
7 }	| jr*| js*| t|||	  n| |||	  | ||	}q|d|rt||}|r| dd }
| |
 | }	|d|	d
 s|	d
 }	| ||	}qn<d||d  kr| |||d   | ||d }qq|d|rt||}|rP|d
}
| |
 | }	|d|	d
 sB|	d
 }	| ||	}qt||}|r|r| ||d  kr| }	|	|kr|}	| ||d
 }qn.|d
 |k r| d | ||d
 }nqqdstdq|rF||k rF| jsF| jr(| js(| t|||  n| |||  | ||}||d  | _ d S )Nr   <&"   z[\s;]</<!--<?<!r   r   z&#   ;zinteresting.search() lied)r   lenr   r   findrfindmaxr   r   searchr   starthandle_datar   Z	updatepos
startswithstarttagopenmatchparse_starttagparse_endtagparse_commentparse_piparse_html_declarationcharrefgrouphandle_charrefend	entityrefhandle_entityref
incompleteAssertionError)r   r@   r   injZampposr7   r5   knamer   r   r	   r      s    

 










zHTMLParser.goaheadc                 C   s   | j }|||d  dks"td|||d  dkr@| |S |||d  dkr^| |S |||d   d	kr|d
|d }|dkrdS | ||d |  |d S | |S d S )Nr+   r*   z+unexpected call to parse_html_declaration()   r(      z<![	   z	<!doctyper   r,   r   )r   rD   r:   Zparse_marked_sectionr   r/   handle_declparse_bogus_comment)r   rE   r   gtposr   r   r	   r<      s    

z!HTMLParser.parse_html_declarationr   c                 C   s`   | j }|||d  dks"td|d|d }|dkr>dS |rX| ||d |  |d S )Nr+   )r*   r'   z"unexpected call to parse_comment()r   r,   r   )r   rD   r/   handle_comment)r   rE   Zreportr   posr   r   r	   rN     s    zHTMLParser.parse_bogus_commentc                 C   sd   | j }|||d  dks"tdt||d }|s:dS | }| ||d |  | }|S )Nr+   r)   zunexpected call to parse_pi()r,   )r   rD   picloser2   r3   	handle_pir@   )r   rE   r   r7   rG   r   r   r	   r;   !  s    zHTMLParser.parse_pic                 C   s  d | _ | |}|dk r|S | j}||| | _ g }t||d }|sPtd| }|d  | _	}||k r.t
||}|sq.|ddd\}	}
}|
sd }n\|d d d  kr|dd  ksn |d d d  kr|dd  krn n|dd }|rt|}||	 |f | }ql|||  }|d	kr|  \}}d
| j kr|| j d
 }t| j | j d
 }n|t| j  }| |||  |S |dr| || n"| || || jkr| | |S )Nr   r   z#unexpected call to parse_starttag()r+   rK   'r,   ")r   />
rV   )r   check_for_whole_start_tagr   tagfind_tolerantr7   rD   r@   r>   r   r   attrfind_tolerantr   appendstripZgetposcountr.   r0   r4   endswithhandle_startendtaghandle_starttagCDATA_CONTENT_ELEMENTSr!   )r   rE   endposr   attrsr7   rH   tagmattrnamerestZ	attrvaluer@   linenooffsetr   r   r	   r8   -  s\    

&
 




zHTMLParser.parse_starttagc                 C   s   | j }t||}|r| }|||d  }|dkr>|d S |dkr~|d|rZ|d S |d|rjdS ||krv|S |d S |dkrdS |dkrdS ||kr|S |d S td	d S )
Nr   r   /rV   r+   r,   r   z6abcdefghijklmnopqrstuvwxyz=/ABCDEFGHIJKLMNOPQRSTUVWXYZzwe should not get here!)r   locatestarttagend_tolerantr7   r@   r5   rD   )r   rE   r   re   rG   nextr   r   r	   rX   `  s.    z$HTMLParser.check_for_whole_start_tagc                 C   s.  | j }|||d  dks"tdt||d }|s:dS | }t||}|s| jd k	rr| |||  |S t	||d }|s|||d  dkr|d S | 
|S |d }|d| }| | |d S |d }| jd k	r|| jkr| |||  |S | | |   |S )	Nr+   r'   zunexpected call to parse_endtagr   r,   rK   z</>r   )r   rD   	endendtagr2   r@   
endtagfindr7   r   r4   rY   rN   r>   r   r/   handle_endtagr#   )r   rE   r   r7   rO   Z	namematchZtagnamer    r   r   r	   r9     s8    



zHTMLParser.parse_endtagc                 C   s   |  || | | d S r"   )r`   ro   r   rd   rc   r   r   r	   r_     s    zHTMLParser.handle_startendtagc                 C   s   d S r"   r   rp   r   r   r	   r`     s    zHTMLParser.handle_starttagc                 C   s   d S r"   r   )r   rd   r   r   r	   ro     s    zHTMLParser.handle_endtagc                 C   s   d S r"   r   r   rI   r   r   r	   r?     s    zHTMLParser.handle_charrefc                 C   s   d S r"   r   rq   r   r   r	   rB     s    zHTMLParser.handle_entityrefc                 C   s   d S r"   r   r   r   r   r	   r4     s    zHTMLParser.handle_datac                 C   s   d S r"   r   r   r   r   r	   rP     s    zHTMLParser.handle_commentc                 C   s   d S r"   r   )r   Zdeclr   r   r	   rM     s    zHTMLParser.handle_declc                 C   s   d S r"   r   r   r   r   r	   rS     s    zHTMLParser.handle_pic                 C   s   d S r"   r   r   r   r   r	   unknown_decl  s    zHTMLParser.unknown_declc                 C   s   t jdtdd t|S )NzZThe unescape method is deprecated and will be removed in 3.5, use html.unescape() instead.r+   )
stacklevel)warningswarnDeprecationWarningr   )r   sr   r   r	   r     s
     zHTMLParser.unescape)r   )__name__
__module____qualname____doc__ra   r
   r   r   r   r   r   r!   r#   r   r<   rN   r;   r8   rX   r9   r_   r`   ro   r?   rB   r4   rP   rM   rS   rr   r   r   r   r   r	   r   ?   s8   		z
3"()r{   r   rt   r   Zhtmlr   __all__r   r   rC   rA   r=   r6   rR   ZcommentcloserY   rZ   VERBOSErk   rm   rn   r   r   r   r   r   r	   <module>   s,   










