o
    fy	                     @   sh   d Z ddlZzddlmZ W n ey   dZY nw dgZedejej	B ej
B Zdd Zep1eZdS )zJSON token scanner
    N)make_scannerr   z)(-?(?:0|[1-9]\d*))(\.\d+)?([eE][-+]?\d+)?c                    sv   | j 	| j| j
tj| j| j| j| j| j	| j
| j 	
fdd  fdd}|S )Nc                    s  z| | }W n t y   t|d w |dkr
| |d S |dkr0	| |d f S |dkr=| |d f S |dkrQ| ||d  dkrQd |d fS |dkre| ||d  d	kred
|d fS |dkry| ||d  dkryd|d fS | |}|d ur| \}}}|s|r||pd |pd }n|}|| fS |dkr| ||d  dkrd|d fS |dkr| ||d  dkrЈd|d fS |dkr| ||d  dkrd|d fS t|)N"   {[n   nullttrueTf   falseF N   NaNI   Infinity-	   z	-Infinity)
IndexErrorStopIterationgroupsend)stringidxnextcharmintegerfracexpres
_scan_oncematch_numbermemoobject_hookobject_pairs_hookparse_arrayparse_constantparse_float	parse_intparse_objectparse_stringstrict #/usr/lib/python3.10/json/scanner.pyr%      sB   

z#py_make_scanner.<locals>._scan_oncec                    s    z
 | |W    S    w )N)clear)r   r   )r%   r'   r1   r2   	scan_onceA   s   
z"py_make_scanner.<locals>.scan_once)r.   r*   r/   	NUMBER_REmatchr0   r,   r-   r+   r(   r)   r'   )contextr4   r1   r$   r2   py_make_scanner   s   "%r8   )__doc__re_jsonr   c_make_scannerImportError__all__compileVERBOSE	MULTILINEDOTALLr5   r8   r1   r1   r1   r2   <module>   s    :