
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
ct„jçI  ã               @   s¼   d dl 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e jƒZe jd	ƒZe jdƒZG dd„ dejƒZdS )é    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 comma
       )?(?:\s|/(?!>))*
     )*
   )?
  \s*                                # trailing whitespace
z#</\s*([a-zA-Z][-.a-zA-Z0-9:_]*)\s*>c               @   sä   e Zd Zd9Z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d: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-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ ZdS );r   ÚscriptÚstyleT)Úconvert_charrefsc            C   s   || _ | jƒ  d S )N)r   Úreset)Úselfr   © r
   ú#/usr/lib64/python3.6/html/parser.pyÚ__init__W   s    zHTMLParser.__init__c             C   s:   d| _ d| _t| _d | _g | _d| _d| _tj	j
| ƒ d S )NÚ z???r   é   )ÚrawdataÚlasttagÚinteresting_normalÚinterestingÚ
cdata_elemÚ_pendingÚ_pending_lenÚ_parse_thresholdÚ_markupbaseÚ
ParserBaser   )r	   r
   r
   r   r   `   s    zHTMLParser.resetc             C   s®   |  j t|ƒ7  _ | j | jk r,| jj|ƒ n~| jsB|  j|7  _n,| jj|ƒ |  jdj| jƒ7  _| jjƒ  d| _ t| jƒ}| jdƒ t| jƒ|k ržd| _nt| jƒ| _d S )Nr   r   r   )	r   Úlenr   r   Úappendr   ÚjoinÚclearÚgoahead)r	   ÚdataÚnr
   r
   r   Úfeedk   s    



zHTMLParser.feedc             C   s:   | j r,|  jdj| j ƒ7  _| j jƒ  d| _| jdƒ d S )Nr   r   r   )r   r   r   r   r   r   )r	   r
   r
   r   Úclose‰   s
    
zHTMLParser.closeNc             C   s   | j S )N)Ú_HTMLParser__starttag_text)r	   r
   r
   r   Úget_starttag_text“   s    zHTMLParser.get_starttag_textc             C   s$   |j ƒ | _tj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   sL  | j }d}t|ƒ}�xÂ||k �rÖ| jr|| j r||jd|ƒ}|dk r¤|jdt||d ƒƒ}|dkrvtjdƒj	||ƒ rvP |}n(| j
j	||ƒ}|r˜|jƒ }n| jr P |}||k rä| jrÒ| j rÒ| jt|||… ƒƒ n| j|||… ƒ | j||ƒ}||krúP |j}|d|ƒ�rLtj||ƒ�r&| j|ƒ}	n„|d|ƒ�r>| j|ƒ}	nl|d|ƒ�rV| j|ƒ}	nT|d|ƒ�rn| j|ƒ}	n<|d	|ƒ�r†| j|ƒ}	n$|d
 |k �r¨| jdƒ |d
 }	nP |	dk �r>|�s¼P |jd|d
 ƒ}	|	dk �rú|jd|d
 ƒ}	|	dk �r|d
 }	n|	d
7 }	| j�r,| j �r,| jt|||	… ƒƒ n| j|||	… ƒ | j||	ƒ}q|d|ƒ�rðtj||ƒ}|�r´|jƒ dd… }
| j|
ƒ |jƒ }	|d|	d
 ƒ�s¤|	d
 }	| j||	ƒ}qn:d||d … k�rì| j|||d … ƒ | j||d ƒ}P q|d|ƒrtj||ƒ}|�rN|jd
ƒ}
| j|
ƒ |jƒ }	|d|	d
 ƒ�s@|	d
 }	| j||	ƒ}qtj||ƒ}|�r¦|�r¢|jƒ ||d … k�r¢|jƒ }	|	|k�r’|}	| j||d
 ƒ}P n,|d
 |k �rÐ| jdƒ | j||d
 ƒ}nP qqW |�r:||k �r:| j �r:| j�r| j �r| jt|||… ƒƒ n| j|||… ƒ | j||ƒ}||d … | _ d S )Nr   ú<ú&é"   z[\s;]z</z<!--z<?z<!r   r   z&#é   ú;éÿÿÿÿ)r   r   r   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)r	   rB   r   Úir   ÚjZampposr9   r7   ÚkÚnamer
   r
   r   r   ¢   sÂ    
 











zHTMLParser.goaheadc             C   s¢   | j }|||d … dkr$| j|ƒS |||d … dkrB| j|ƒS |||d … jƒ dkr”|jd|d ƒ}|d
krvdS | j||d	 |… ƒ |d S | j|ƒS d S )Né   z<!--é   z<![é	   z	<!doctyper   r   r.   r0   r0   )r   r<   Zparse_marked_sectionr$   r1   Úhandle_declÚparse_bogus_comment)r	   rF   r   Úgtposr
   r
   r   r>     s    

z!HTMLParser.parse_html_declarationr   c             C   sD   | j }|jd|d ƒ}|dkr"dS |r<| j||d |… ƒ |d S )Nr   r.   r   r0   r0   )r   r1   Úhandle_comment)r	   rF   Zreportr   Úposr
   r
   r   rN   1  s    zHTMLParser.parse_bogus_commentc             C   sH   | j }tj||d ƒ}|sdS |jƒ }| j||d |… ƒ |jƒ }|S )Nr.   r   r0   )r   Úpicloser4   r5   Ú	handle_pirB   )r	   rF   r   r9   rG   r
   r
   r   r=   =  s    zHTMLParser.parse_pic             C   sä  d | _ | j|ƒ}|dk r|S | j}|||… | _ g }tj||d ƒ}|jƒ }|jdƒjƒ  | _}xÄ||k �r$t	j||ƒ}|s~P |jdddƒ\}	}
}|
sœd }n^|d d… d  ko¾|d
d … kn  sî|d d… d  koæ|dd … kn  � rú|dd… }|�rt
|ƒ}|j|	jƒ |fƒ |jƒ }qbW |||… jƒ }|dk�r¤| jƒ \}}d	| j k�r€|| j jd	ƒ }t| j ƒ| j jd	ƒ }n|t| j ƒ }| j|||… ƒ |S |jdƒ�r¾| j||ƒ n"| j||ƒ || jk�rà| j|ƒ |S )Nr   r   r.   rK   ú'ú"r   ú/>Ú
r0   r0   r0   )r   rV   )r"   Úcheck_for_whole_start_tagr   Útagfind_tolerantr9   rB   r@   r$   r   Úattrfind_tolerantr   r   ÚstripZgetposÚcountr   r2   r6   ÚendswithÚhandle_startendtagÚhandle_starttagÚCDATA_CONTENT_ELEMENTSr)   )r	   rF   Úendposr   Úattrsr9   rH   ÚtagÚmZattrnameÚrestZ	attrvaluerB   ÚlinenoÚoffsetr
   r
   r   r:   I  sP    
(*

zHTMLParser.parse_starttagc             C   s¶   | j }tj||ƒ}|rª|jƒ }|||d … }|dkr>|d S |dkr~|jd|ƒrZ|d S |jd|ƒrjd	S ||krv|S |d S |dkrŠd
S |dkr–dS ||kr¢|S |d S tdƒ‚d S )Nr   r   ú/z/>r.   r   z6abcdefghijklmnopqrstuvwxyz=/ABCDEFGHIJKLMNOPQRSTUVWXYZzwe should not get here!r0   r0   r0   )r   Úlocatestarttagend_tolerantr9   rB   r7   ÚAssertionError)r	   rF   r   rd   rG   Únextr
   r
   r   rX   |  s.    z$HTMLParser.check_for_whole_start_tagc             C   s  | j }tj||d ƒ}|sdS |jƒ }tj||ƒ}|sÀ| jd k	rV| j|||… ƒ |S tj||d ƒ}|s�|||d … dkr†|d S | j	|ƒS |j
dƒjƒ }|jd|jƒ ƒ}| j|ƒ |d S |j
dƒjƒ }| jd k	� rü|| jk� rü| j|||… ƒ |S | j|jƒ ƒ | jƒ  |S )Nr   r.   rK   z</>r   r0   )r   Ú	endendtagr4   rB   Ú
endtagfindr9   r   r6   rY   rN   r@   r$   r1   Úhandle_endtagr*   )r	   rF   r   r9   rO   Z	namematchZtagnamer(   r
   r
   r   r;   ž  s6    


zHTMLParser.parse_endtagc             C   s   | j ||ƒ | j|ƒ d S )N)r_   rn   )r	   rc   rb   r
   r
   r   r^   Æ  s    zHTMLParser.handle_startendtagc             C   s   d S )Nr
   )r	   rc   rb   r
   r
   r   r_   Ë  s    zHTMLParser.handle_starttagc             C   s   d S )Nr
   )r	   rc   r
   r
   r   rn   Ï  s    zHTMLParser.handle_endtagc             C   s   d S )Nr
   )r	   rI   r
   r
   r   rA   Ó  s    zHTMLParser.handle_charrefc             C   s   d S )Nr
   )r	   rI   r
   r
   r   rD   ×  s    zHTMLParser.handle_entityrefc             C   s   d S )Nr
   )r	   r   r
   r
   r   r6   Û  s    zHTMLParser.handle_datac             C   s   d S )Nr
   )r	   r   r
   r
   r   rP   ß  s    zHTMLParser.handle_commentc             C   s   d S )Nr
   )r	   Zdeclr
   r
   r   rM   ã  s    zHTMLParser.handle_declc             C   s   d S )Nr
   )r	   r   r
   r
   r   rS   ç  s    zHTMLParser.handle_pic             C   s   d S )Nr
   )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   r   )r   )Ú__name__Ú
__module__Ú__qualname__r`   r   r   r    r!   r"   r#   r)   r*   r   r>   rN   r=   r:   rX   r;   r^   r_   rn   rA   rD   r6   rP   rM   rS   ro   r   r
   r
   r
   r   r   ?   s6   	z
3"()r%   rq   r   Zhtmlr   Ú__all__r&   r   rE   rC   r?   r8   rR   ZcommentcloserY   rZ   ÚVERBOSEri   rl   rm   r   r   r
   r
   r
   r   Ú<module>   s&   










