
    @OOf                        d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 	  ej                  d      Zh dZh dZd	Z G d
 d      Z G d de      Z G d de      Zdedee   fdZdededefdZdedz  dedz  dedz  defdZdedz  dedz  dedz  dedz  dedz  defdZ G d d       Zd!ee   defd"Z G d# d$ej4                        Zy)%    N)Iterable)base)sliding_window)strutilsz[a-zA-Z0-9._:\-]+(?!=)>   brhrcolimgwbrarear   linkmetaembedinputparamtrackkeygensource>   xmlhtmldoctype   c                       e Zd Zd Zd Zy)Tokenc                     || _         y N)data)selfr   s     `/var/www/premiumrankchecker/venv/lib/python3.12/site-packages/mitmproxy/contentviews/xml_html.py__init__zToken.__init__.   s	    	    c                 L    t        |       j                   d| j                   dS )N())type__name__r   r   s    r   __repr__zToken.__repr__1   s$    t*%%&a		{!44r!   N)r&   
__module____qualname__r    r(    r!   r   r   r   -   s    5r!   r   c                       e Zd Zed        Zy)Textc                 6    | j                   j                         S r   )r   stripr'   s    r   textz	Text.text6   s    yy  r!   N)r&   r)   r*   propertyr0   r+   r!   r   r-   r-   5   s    ! !r!   r-   c                       e Zd Zed        Zedefd       Zedefd       Zed        Zed        Z	ed        Z
ed        Zy	)
Tagc                     t         j                  | j                        }||j                  d      j	                         S y)Nr   z<empty>)	REGEX_TAGsearchr   grouplower)r   ts     r   tagzTag.tag<   s5    TYY'=771:##%%r!   returnc                 8    | j                   j                  d      S )Nz<!--r   
startswithr'   s    r   
is_commentzTag.is_commentC   s    yy##F++r!   c                 8    | j                   j                  d      S )Nz	<![CDATA[r=   r'   s    r   is_cdatazTag.is_cdataG   s    yy##K00r!   c                 8    | j                   j                  d      S )Nz</r=   r'   s    r   
is_closingzTag.is_closingK   s    yy##D))r!   c                     | j                   xs= | j                  xs/ | j                  j                  d      xs | j                  t
        v S )Nz/>)r?   rA   r   endswithr:   HTML_VOID_ELEMENTSr'   s    r   is_self_closingzTag.is_self_closingO   sG     OO .}}.yy!!$'. xx--		
r!   c                 :    | j                    xr | j                   S r   )rC   rG   r'   s    r   
is_openingzTag.is_openingX   s    ??"?4+?+?'??r!   c                     | j                   r| j                  j                  d      S | j                  r| j                  j                  d      S | j                  j                  d      S )Nz-->z]]>>)r?   r   rE   rA   r'   s    r   donezTag.done\   sQ    ??99%%e,,]]99%%e,, 99%%c**r!   N)r&   r)   r*   r1   r:   boolr?   rA   rC   rG   rI   rL   r+   r!   r   r3   r3   ;   s      ,D , , 1$ 1 1 * * 
 
 @ @ + +r!   r3   r   r;   c              #      K   t        d      }dd fd	}t               k  rt        |t               r+ |dd      |_        |j                  r| t        d      }nHt        |t
              r8|xj                   |dd      z  c_        |j                  r| t        d      }t               k  r|j                  j                         r| y y w)N r      c                 f    j                  | |      }|dk(  rt              }||z    }||z   |S )N)findlen)charstartincludeendretr   is        r   	readuntilztokenize.<locals>.readuntill   sA    iie$"9d)C1sW}%'M
r!   <rK   )rP   )r-   rT   
isinstancer   r0   r3   rL   r/   )r   tokenr[   rZ   s   `  @r   tokenizer_   g   s     8E	A c$i-eT""31-EJzzGEs#JJ)CA..JzzR c$i- zz s   B4C9 Cprefixc                     t        j                  d| z         j                         }t        j                  ||d d       S )Nz                                     )textwrapdedentr/   indent)r   r`   dedenteds      r   indent_textrg      s6     x$/557H??8VCR[11r!   abcc                     t        | t              r`t        |t              rPt        |t              r@| j                  r4d|j                  vr&|j
                  r| j                  |j                  k(  ryy)N
TF)r]   r3   r-   rI   r   rC   r:   )rh   ri   rj   s      r   is_inline_textrm      sJ    !SjD1jC6H<<D.1<<AEEQUUNr!   prev2prev1r9   next1next2c                    t        |t              rt        |||      S t        |t              rt        | ||      st        |||      ryt        |t              r2|j                  r&|j
                  r|j                  |j                  k(  ryt        |t              r2|j                  r&|j
                  r|j                  |j                  k(  ryy)NTF)r]   r-   rm   r3   rI   rC   r:   )rn   ro   r9   rp   rq   s        r   	is_inliners      s     !TeQ..	As	%*nQu.Muc"  "uc"  		QUU"r!   c                   .    e Zd ZdZd ZdefdZdefdZy)ElementStackz:
    Keep track of how deeply nested our document is.
    c                      g | _         d| _        y )NrO   )	open_tagsre   r'   s    r   r    zElementStack.__init__   s    r!   r:   c                     t        | j                        dkD  ry | j                  j                  |       |t        vr| xj                  dt
        z  z  c_        y y )N    )rT   rw   appendNO_INDENT_TAGSre   INDENT)r   r:   s     r   push_tagzElementStack.push_tag   sG    t~~#c"n$KK3<'K %r!   c                     || j                   v rKd}	 | j                   j                         }|t        vr	|t        z  }||k(  rn2| j                  d |  | _        y y )Nr   )rw   popr|   r}   re   )r   r:   remove_indentr9   s       r   pop_tagzElementStack.pop_tag   sb    $.. MNN&&(N*!V+M8  ++o~6DKr!   N)r&   r)   r*   __doc__r    strr~   r   r+   r!   r   ru   ru      s$    (C (3 r!   ru   tokensc                 n   t        j                         }t               }t        j                  | dd      D ]  \  }}}}}t        |t              rM|j                  rk|j                  t        |j                  |j                               t        |||||      s|j                  d       |j                  |j                         |j                  r|j!                  |j                         t        |||||      r|j                  |j                         n/|j                  t        |j                  |j                               |j                  d       &|j                  t        |j                  |j                               |j                  d       ht        |t"              rnt        |||||      r|j                  |j$                         |j                  t        |j                  |j                               |j                  d       t'                |j)                         S )Nr   rl   )ioStringIOru   r   windowr]   r3   rI   writerg   r   re   rs   r~   r:   rC   r   r-   r0   RuntimeErrorgetvalue)r   outcontextrn   ro   r^   rp   rq   s           r   
format_xmlr      s   
++-CnG-;-B-B61a-P !)ueUEeS!		+ejj'..AB ueUCIIdO  +!!		*UE5%?IIejj)IIk%**gnnEF		$ 		+ejj'..AB		$t$ueU;		%**%		+ejj'..AB		$. 9!< <<>r!   c                   :    e Zd ZdZdZd Zdddededz  defd	Z	y)
ViewXmlHtmlzXML/HTML)ztext/xmlz	text/htmlc                     |j                  dd      }t        |      }t        j                  t	        |            }d|j                         v rd}||fS d}||fS )Nutf8xmlcharrefreplacer   HTMLXML)decoder_   r   format_textr   r8   )r   r   metadatar   prettyr9   s         r   __call__zViewXmlHtml.__call__   se    
 {{6#67$
 !!*V"45TZZ\!A &y A&yr!   N)content_typer   r   r;   c                T    |sy|| j                   v ryt        j                  |      ryy)Nr   rP   g?)_ViewXmlHtml__content_typesr   is_xml)r   r   r   r   s       r   render_priorityzViewXmlHtml.render_priority  s-     4///__T"r!   )
r&   r)   r*   namer   r   bytesr   floatr   r+   r!   r   r   r      s7    D/O& :>		,/$J			r!   r   )r   rerc   collections.abcr   mitmproxy.contentviewsr   mitmproxy.utilsr   r   compiler5   rF   r|   r}   r   r-   r3   r   r_   rg   rM   rm   rs   ru   r   Viewr   r+   r!   r   <module>r      sJ   	 	  $ ' * $	 BJJ01	 " ,	
5 5!5 !)+% )+X3 8E? :2c 23 23 2edl ut|   4<4< t| 4<	
 4< 
: <#x #3 #L$)) r!   