U
    pd                     @   sD  d Z dZddlmZmZ G dd deZG dd deZeedZd	d
 Z	e	dZ
e
dd= e	dZe	dZeeeeiZeeeeiZeeeeiZeeeeiZeeee iZ!ee"ee#iZ$e%e%e&e&e'e'e(e(e)e*e+e,e-e-e.e.iZ/e%e0e&e1e'e2e(e3e)e4e+e5e-e6e.e7iZ8dZ9dZ:dZ;dZ<dZ=dZ>dZ?dZ@dZAdZBdZCdZDeEdkr@dd ZFeGddZHeHId eHIde  eFeHe
d  eFeHed! eFeHed! eHId"e9  eHId#e:  eHId$e;  eHId%e<  eHId&e=  eHId'e>  eHId(e?  eHId)e@  eHId*eA  eHId+eB  eHId,eC  eHId-eD  W 5 Q R X eJd. dS )/zInternal support module for srei3    )	MAXREPEAT	MAXGROUPSc                       s&   e Zd ZdZdZd fdd	Z  ZS )errorai  Exception raised for invalid regular expressions.

    Attributes:

        msg: The unformatted error message
        pattern: The regular expression pattern
        pos: The index in the pattern where compilation failed (may be None)
        lineno: The line corresponding to pos (may be None)
        colno: The column corresponding to pos (may be None)
    reNc                    s   || _ || _|| _|d k	r|d k	rd||f }t|tr>d}nd}||d|d | _|||d| | _||krd|| j| jf }nd  | _| _t	 
| d S )Nz%s at position %d
   
r      z%s (line %d, column %d))msgpatternpos
isinstancestrcountlinenorfindcolnosuper__init__)selfr	   r
   r   newline	__class__ #/usr/lib/python3.8/sre_constants.pyr   %   s    
zerror.__init__)NN)__name__
__module____qualname____doc__r   __classcell__r   r   r   r   r      s   r   c                       s$   e Zd Z fddZdd Z  ZS )_NamedIntConstantc                    s   t t| | |}||_|S N)r   r   __new__name)clsvaluer"   r   r   r   r   r!   9   s    z_NamedIntConstant.__new__c                 C   s   | j S r    r"   )r   r   r   r   __repr__>   s    z_NamedIntConstant.__repr__)r   r   r   r!   r&   r   r   r   r   r   r   8   s   r   r   c                 C   s8   |    } dd t| D }t dd |D  |S )Nc                 S   s   g | ]\}}t ||qS r   )r   ).0ir"   r   r   r   
<listcomp>E   s     z_makecodes.<locals>.<listcomp>c                 S   s   i | ]}|j |qS r   r%   )r'   itemr   r   r   
<dictcomp>F   s      z_makecodes.<locals>.<dictcomp>)stripsplit	enumerateglobalsupdate)namesitemsr   r   r   
_makecodesC   s    r3   az  
    FAILURE SUCCESS

    ANY ANY_ALL
    ASSERT ASSERT_NOT
    AT
    BRANCH
    CALL
    CATEGORY
    CHARSET BIGCHARSET
    GROUPREF GROUPREF_EXISTS
    IN
    INFO
    JUMP
    LITERAL
    MARK
    MAX_UNTIL
    MIN_UNTIL
    NOT_LITERAL
    NEGATE
    RANGE
    REPEAT
    REPEAT_ONE
    SUBPATTERN
    MIN_REPEAT_ONE

    GROUPREF_IGNORE
    IN_IGNORE
    LITERAL_IGNORE
    NOT_LITERAL_IGNORE

    GROUPREF_LOC_IGNORE
    IN_LOC_IGNORE
    LITERAL_LOC_IGNORE
    NOT_LITERAL_LOC_IGNORE

    GROUPREF_UNI_IGNORE
    IN_UNI_IGNORE
    LITERAL_UNI_IGNORE
    NOT_LITERAL_UNI_IGNORE
    RANGE_UNI_IGNORE

    MIN_REPEAT MAX_REPEAT
Nz
    AT_BEGINNING AT_BEGINNING_LINE AT_BEGINNING_STRING
    AT_BOUNDARY AT_NON_BOUNDARY
    AT_END AT_END_LINE AT_END_STRING

    AT_LOC_BOUNDARY AT_LOC_NON_BOUNDARY

    AT_UNI_BOUNDARY AT_UNI_NON_BOUNDARY
a  
    CATEGORY_DIGIT CATEGORY_NOT_DIGIT
    CATEGORY_SPACE CATEGORY_NOT_SPACE
    CATEGORY_WORD CATEGORY_NOT_WORD
    CATEGORY_LINEBREAK CATEGORY_NOT_LINEBREAK

    CATEGORY_LOC_WORD CATEGORY_LOC_NOT_WORD

    CATEGORY_UNI_DIGIT CATEGORY_UNI_NOT_DIGIT
    CATEGORY_UNI_SPACE CATEGORY_UNI_NOT_SPACE
    CATEGORY_UNI_WORD CATEGORY_UNI_NOT_WORD
    CATEGORY_UNI_LINEBREAK CATEGORY_UNI_NOT_LINEBREAK
r                   @         __main__c                 C   s*   t |}|D ]}| d|||f  qd S )Nz#define %s_%s %d
)sortedwrite)fdprefixr2   r*   r   r   r   dump   s    rC   zsre_constants.hwao  /*
 * Secret Labs' Regular Expression Engine
 *
 * regular expression matching engine
 *
 * NOTE: This file is generated by sre_constants.py.  If you need
 * to change anything in here, edit sre_constants.py and run it.
 *
 * Copyright (c) 1997-2001 by Secret Labs AB.  All rights reserved.
 *
 * See the _sre.c file for information on usage and redistribution.
 */

z#define SRE_MAGIC %d
ZSRE_OPZSREz#define SRE_FLAG_TEMPLATE %d
z#define SRE_FLAG_IGNORECASE %d
z#define SRE_FLAG_LOCALE %d
z#define SRE_FLAG_MULTILINE %d
z#define SRE_FLAG_DOTALL %d
z#define SRE_FLAG_UNICODE %d
z#define SRE_FLAG_VERBOSE %d
z#define SRE_FLAG_DEBUG %d
z#define SRE_FLAG_ASCII %d
z#define SRE_INFO_PREFIX %d
z#define SRE_INFO_LITERAL %d
z#define SRE_INFO_CHARSET %d
Zdone)Kr   MAGIC_srer   r   	Exceptionr   intr   r3   OPCODESATCODESCHCODESLITERALLITERAL_IGNORENOT_LITERALNOT_LITERAL_IGNORE	OP_IGNORELITERAL_LOC_IGNORENOT_LITERAL_LOC_IGNOREOP_LOCALE_IGNORELITERAL_UNI_IGNORENOT_LITERAL_UNI_IGNOREOP_UNICODE_IGNOREAT_BEGINNINGZAT_BEGINNING_LINEAT_ENDZAT_END_LINEAT_MULTILINEZAT_BOUNDARYZAT_LOC_BOUNDARYZAT_NON_BOUNDARYZAT_LOC_NON_BOUNDARY	AT_LOCALEZAT_UNI_BOUNDARYZAT_UNI_NON_BOUNDARY
AT_UNICODEZCATEGORY_DIGITZCATEGORY_NOT_DIGITZCATEGORY_SPACEZCATEGORY_NOT_SPACEZCATEGORY_WORDZCATEGORY_LOC_WORDZCATEGORY_NOT_WORDZCATEGORY_LOC_NOT_WORDZCATEGORY_LINEBREAKZCATEGORY_NOT_LINEBREAK	CH_LOCALEZCATEGORY_UNI_DIGITZCATEGORY_UNI_NOT_DIGITZCATEGORY_UNI_SPACEZCATEGORY_UNI_NOT_SPACEZCATEGORY_UNI_WORDZCATEGORY_UNI_NOT_WORDZCATEGORY_UNI_LINEBREAKZCATEGORY_UNI_NOT_LINEBREAK
CH_UNICODESRE_FLAG_TEMPLATESRE_FLAG_IGNORECASESRE_FLAG_LOCALESRE_FLAG_MULTILINESRE_FLAG_DOTALLSRE_FLAG_UNICODESRE_FLAG_VERBOSESRE_FLAG_DEBUGSRE_FLAG_ASCIISRE_INFO_PREFIXSRE_INFO_LITERALSRE_INFO_CHARSETr   rC   openr@   r?   printr   r   r   r   <module>   s   !	
,
                            

