a
    Z¨Xh½;  ã                   @   sÒ   d dl Z d dlZd dlmZ ddlmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZ ddlmZmZ e  d¡Ze  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S )é    N)Úascii_loweré   )ÚAtKeywordTokenÚCommentÚCurlyBracketsBlockÚDimensionTokenÚFunctionBlockÚ	HashTokenÚ
IdentTokenÚLiteralTokenÚNumberTokenÚParenthesesBlockÚ
ParseErrorÚPercentageTokenÚSquareBracketsBlockÚStringTokenÚUnicodeRangeTokenÚURLTokenÚWhitespaceToken)Úserialize_string_valueÚserialize_urlz([-+]?([0-9]*\.)?[0-9]+([eE][+-]?[0-9]+)?z([0-9A-Fa-f]{1,6})[ \n\t]?Fc              	   C   sl  |   dd¡  dd¡  dd¡  dd¡} t| ƒ}d }}d}d	}g  }}d
}	g }
||k rh|  d||¡}|d	kr†|d|  d||¡ 7 }|}|| }|}| | }|dv rä|d7 }|  d|¡rÀ|d7 }qª| ||… }| t|||ƒ¡ qLnò|dv rN|d |k rN| |d  dkrN| |d  dv rNt| |d ƒ\}}}| t||||ƒ¡ qLnˆ|  d|¡r|| t	||dƒ¡ |d7 }qLnZt
| |ƒrÖt| |ƒ\}}|  d|¡s¸| t|||ƒ¡ qL|d7 }t|ƒdkr¦|}|  d|¡rì|d7 }qÒ||ks| | dvr¦t| |ƒ\}}}|d
ur„d t|ƒ¡}|d
urp|d }|dkrV|d
d… }n|dksdJ ‚|d
d	… }| t||||ƒ¡ |d
urL| t||g|¢R Ž ¡ qLg }| t||||ƒ¡ |
 ||	f¡ d}	|}qLt | |¡}|r¢| ¡ }| ||… }t|ƒ}t| ¡ ƒst|ƒnd
}||k r\t
| |ƒr\t| |ƒ\}}| t||||||ƒ¡ nD|  d|¡rŠ|d7 }| t|||||ƒ¡ n| t|||||ƒ¡ qL|dkr |d7 }||k rìt
| |ƒrìt| |ƒ\}}| t|||ƒ¡ n| t	||dƒ¡ qL|dkrš|d7 }||k r†| | dv sXt| | ƒdksX| | d kr†|  d!|¡s†t
| |ƒ}t| |ƒ\}}| t ||||ƒ¡ n| t	||dƒ¡ qL|d"krÚg }| t!|||ƒ¡ |
 ||	f¡ d#}	|}|d7 }qL|d$krg }| t"|||ƒ¡ |
 ||	f¡ d%}	|}|d7 }qL|dkrZg }| t#|||ƒ¡ |
 ||	f¡ d}	|}|d7 }qL||	krz|
 $¡ \}}	|d7 }qL|d&v r¦| t|||d'| ƒ¡ |d7 }qL|dv r&t%| |ƒ\}}}|d
urd( t&|ƒ¡}|d
urî|d
d	… }| t'||||ƒ¡ |d
urf| t||g|¢R Ž ¡ qL|  d)|¡r¤|  (d*|d ¡}|d	krv|sh| t)||| |d d
… ƒ¡ qh|sš| t)||| |d |… ƒ¡ |d7 }qL|  d+|¡rÎ| t	||d+ƒ¡ |d,7 }qL|  d-|¡rø| t	||d-ƒ¡ |d7 }qL|d.v rL|d7 }|  d/|¡r8|d7 }| t	|||d/ ƒ¡ n| t	|||ƒ¡ qL| t	|||ƒ¡ |d7 }qL|S )0aw  Parse a list of component values.

    :type css: :obj:`str`
    :param css: A CSS string.
    :type skip_comments: :obj:`bool`
    :param skip_comments:
        Ignore CSS comments.
        The return values (and recursively its blocks and functions)
        will not contain any :class:`~tinycss2.ast.Comment` object.
    :returns: A list of :term:`component values`.

    ú õ   ï¿½z
Ú
úúr   r   éÿÿÿÿNú 
	©ú r   ú	ZUué   ú+z0123456789abcdefABCDEF?z-->é   ú(Úurl©ú"ú'zurl({})úeof-in-stringéþÿÿÿú
eof-in-urlú)ú%ú@ú#z@0123456789abcdefghijklmnopqrstuvwxyz-_ABCDEFGHIJKLMNOPQRSTUVWXYZé   ú\ú\
Ú{Ú}ú[ú]z}])z
Unmatched z"{}"z/*z*/z<!--é   z||z~|^$*ú=)*ÚreplaceÚlenÚrfindÚcountÚ
startswithÚappendr   Ú_consume_unicode_ranger   r   Ú_is_ident_startÚ_consume_identr
   r   Ú_consume_urlÚformatr   r   r   r   Ú
_NUMBER_REÚmatchÚendÚfloatÚanyÚgroupsÚintr   r   r   r   Úordr	   r   r   r   ÚpopÚ_consume_quoted_stringr   r   Úfindr   )ÚcssZskip_commentsÚlengthZtoken_start_posÚposÚlineZlast_newlineÚrootÚtokensZend_charÚstackÚnewlineÚcolumnÚcÚvalueÚstartrF   Zurl_posÚerrorÚreprZ	error_keyÚ	argumentsrE   Úrepr_Z	int_valueÚunitZis_identifierÚcontent© ra   úW/var/www/viveiro_mudafortebrasil/venv/lib/python3.9/site-packages/tinycss2/tokenizer.pyÚparse_component_value_list   sJ   þþþ

*ÿ


ÿ



ÿý
û
û




















rc   c                 C   s   | | }|dv pt |ƒdkS )z>Return true if the given character is a name-start code point.Z5abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_r0   )rK   )rO   rQ   rX   ra   ra   rb   Ú_is_name_startÈ   s    
þrd   c                 C   s|   t | |ƒrdS | | dkr^|d7 }|t| ƒk rDt | |ƒp\| | dkp\|  d|¡o\|  d|¡ S | | dkrx|  d|¡ S dS )zCReturn True if the given position is the start of a CSS identifier.Tú-r   r1   r2   F)rd   r:   r=   )rO   rQ   ra   ra   rb   r@   Ñ   s    
"ür@   c                 C   sª   g }t | ƒ}|}||k rŠ| | }|dv s4t|ƒdkr>|d7 }q|dkrŠ|  d|¡sŠ| | ||… ¡ t| |d ƒ\}}| |¡ |}qqŠq| | ||… ¡ d |¡|fS )ztReturn (unescaped_value, new_pos).

    Assumes pos starts at a valid identifier. See :func:`_is_ident_start`.

    z@abcdefghijklmnopqrstuvwxyz-_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZr0   r   r1   r2   Ú )r:   rK   r=   r>   Ú_consume_escapeÚjoin)rO   rQ   ÚchunksrP   Ú	start_posrX   ra   ra   rb   rA   â   s"    
ÿ

rA   c                 C   s  d}| | }|dv sJ ‚|d7 }g }t | ƒ}|}||k rà| | }||krf| | ||… ¡ |d7 }qöq0|dkrÄ| | ||… ¡ |d7 }||k r¾| | dkr¦|d7 }nt| |ƒ\}}| |¡ |}q0|dkrÖd|dfS |d7 }q0d}| | ||… ¡ d |¡||fS )	z"Return (unescaped_value, new_pos).Nr&   r   r1   r   )z
bad-stringzBad string token)r)   zEOF in stringrf   )r:   r>   rg   rh   )rO   rQ   r[   Úquoteri   rP   rj   rX   ra   ra   rb   rM   ý   s8    



rM   c                 C   sv   t  | |¡}|rNt| d¡dƒ}d|  k r6tjkrBn nt|ƒnd| ¡ fS |t| ƒk rj| | |d fS d|fS dS )ztReturn (unescaped_char, new_pos).

    Assumes a valid escape: pos is just after '\' and not followed by '\n'.

    r   é   r   r   N)	Ú_HEX_ESCAPE_RErE   rJ   ÚgroupÚsysÚ
maxunicodeÚchrrF   r:   )rO   rQ   Z	hex_matchÚ	codepointra   ra   rb   rg   "  s    $þrg   c                 C   s8  d}t | ƒ}|  d|¡r"|d7 }q||kr4d|dfS | | }|dv rXt| |ƒ\}}}n(|dkrnd|d |fS g }|}||kr | | ||… ¡ d |¡|dfS | | }|dkrÚ| | ||… ¡ |d7 }d |¡||fS |dv r| | ||… ¡ d |¡}|d7 }q€qv|d	krZ|  d
|¡sZ| | ||… ¡ t| |d ƒ\}}| |¡ |}qv|dv rvd}|d7 }q€qv|d7 }qv|durä|  d|¡r¤|d7 }qŠ||k rÌ| | dkrä||d |fS n|du rÚd}|||fS ||k r.|  d|¡r|d7 }n$| | dkr"|d7 }q.n|d7 }qäd|dfS )zgReturn (unescaped_url, new_pos)

    The given pos is assumed to be just after the '(' of 'url('.

    Nr   r   rf   )r+   z
EOF in URLr&   r,   r   r1   r2   z "'( z\)r!   )zbad-urlzbad URL token)r:   r=   rM   r>   rh   rg   )rO   rQ   r[   rP   rX   rY   ri   rj   ra   ra   rb   rB   5  sn    




ÿ






rB   c                 C   s  t | ƒ}|}t|d |ƒ}||k r8| | dv r8|d7 }q| ||… }|}||k rf| | dkrf|d7 }qH|| }|rŒ|d|  }|d|  }nr|d |k rú| | dkrú| |d  dv rú|d7 }|}t|d |ƒ}||k rì| | dv rì|d7 }qÎ| ||… }n|}t|dƒt|dƒ|fS )	zdReturn (range, new_pos)

    The given pos is assume to be just after the '+' of 'U+' or 'u+'.

    é   Z0123456789abcdefABCDEFr   ú?ÚFÚ0re   rl   )r:   ÚminrJ   )rO   rQ   rP   rj   Zmax_posrZ   Zquestion_marksrF   ra   ra   rb   r?   ‚  s0    

ÿ
r?   )F)$Úrero   Úwebencodingsr   Úastr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   Ú
serializerr   r   ÚcompilerD   rm   rc   rd   r@   rA   rM   rg   rB   r?   ra   ra   ra   rb   Ú<module>   s   L


 8	%M