o
    ýÑÐb\  ã                   @   s”   U d Z ddlZddlmZmZmZ dddddd	d
ddddœ
Zeeef ed< dee defdd„Zdedefdd„Z	ddd„Z
edkrHe
ƒ  dS dS )z<Safely evaluate Python string literals without using eval().é    N)ÚDictÚMatchÚTextúúúÚ
úú	úú'ú"ú\)
ÚaÚbÚfÚnÚrÚtÚvr   r   r   Úsimple_escapesÚmÚreturnc                 C   sÆ   |   dd¡\}}| d¡sJ ‚t |¡}|d ur|S | d¡rJ|dd … }t|ƒdk r1td| ƒ‚z
t|dƒ}W t|ƒS  tyI   td| ƒd ‚w z
t|dƒ}W t|ƒS  tyb   td	| ƒd ‚w )
Nr   é   r   Úxé   z!invalid hex string escape ('\%s')é   é   z#invalid octal string escape ('\%s'))ÚgroupÚ
startswithr   ÚgetÚlenÚ
ValueErrorÚintÚchr)r   ÚallÚtailÚescZhexesÚi© r)   úV/var/www/secure340b-portal/env/lib/python3.10/site-packages/blib2to3/pgen2/literals.pyÚescape   s*   

ùÿþÿr+   Úsc                 C   s¬   |   d¡s|   d¡sJ t| d d… ƒƒ‚| d }| d d… |d kr&|d }|  |¡s8J t| t|ƒ d … ƒƒ‚t| ƒdt|ƒ ksDJ ‚| t|ƒt|ƒ … } t dt| ¡S )Nr   r   r   r   é   r   z)\\(\'|\"|\\|[abfnrtv]|x.{0,2}|[0-7]{1,3}))r   ÚreprÚendswithr!   ÚreÚsubr+   )r,   Úqr)   r)   r*   Ú
evalString/   s   ($r3   c                  C   s@   t dƒD ]} t| ƒ}t|ƒ}t|ƒ}||krt| |||ƒ qd S )Né   )Úranger$   r.   r3   Úprint)r(   Úcr,   Úer)   r)   r*   Útest:   s   €ûr9   Ú__main__)r   N)Ú__doc__r0   Útypingr   r   r   r   Ú__annotations__r+   r3   r9   Ú__name__r)   r)   r)   r*   Ú<module>   s(   ö
	
ÿ