3

V'ícó|ã
@sêdZddlZddlZddlZddlmZmZddlmZddl	m
Z
mZmZm
Z
mZddlmZmZmZmZmZmZddlmZdd	d
ddd
dddddddg
ZejdƒZd?d@dAdBdCgZed d!„ƒZGd"d#„d#eƒZGd$d„ded%Z Gd&d„de ƒZ!Gd'd
„d
e"ƒZ#Gd(d)„d)ƒZ$e$ƒZ%Gd*d+„d+e&ƒZ'Gd,d-„d-ƒZ(d.d„Z)Gd/d0„d0ƒZ*e*ƒZ+d1d„Z,Gd2d„dƒZ-Gd3d„deƒZ.Gd4d5„d5eƒZ/Gd6d	„d	e e/d%Z0Gd7d„dƒZ1Gd8d
„d
e0ƒZ2d9d:„Z3Gd;d<„d<e/ƒZ4Gd=d>„d>e0e4d%Z5dS)Dz´
    pygments.lexer
    ~~~~~~~~~~~~~~

    Base lexer classes.

    :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
éN)Ú
apply_filtersÚFilter)Úget_filter_by_name)ÚErrorÚTextÚOtherÚ
WhitespaceÚ
_TokenType)Úget_bool_optÚget_int_optÚget_list_optÚmake_analysatorÚFutureÚguess_decode)Ú	regex_optÚLexerÚ
RegexLexerÚExtendedRegexLexerÚDelegatingLexerÚLexerContextÚincludeÚinheritÚbygroupsÚusingÚthisÚdefaultÚwordsÚline_rez.*?
óúutf-8óÿþúutf-32óþÿúutf-32beóÿþúutf-16óþÿúutf-16becCsdS)Ng©)Úxr(r(ú2/tmp/pip-build-gk9425m9/Pygments/pygments/lexer.pyÚ<lambda>"sr+c@seZdZdZdd„ZdS)Ú	LexerMetaz‚
    This metaclass automagically converts ``analyse_text`` methods into
    static methods which always return float values.
    cCs(d|krt|dƒ|d<tj||||ƒS)NÚanalyse_text)r
ÚtypeÚ__new__)ZmcsÚnameÚbasesÚdr(r(r*r/+szLexerMeta.__new__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r/r(r(r(r*r,%sr,c@s^eZdZdZdZdZgZgZgZgZ	dZ
dd„Zdd„Zdd	„Z
d
d„Zdd
d„Zdd„ZdS)raÈ
    Lexer for a specific language.

    Basic options recognized:
    ``stripnl``
        Strip leading and trailing newlines from the input (default: True).
    ``stripall``
        Strip all leading and trailing whitespace from the input
        (default: False).
    ``ensurenl``
        Make sure that the input ends with a newline (default: True).  This
        is required for some lexers that consume input linewise.

        .. versionadded:: 1.3

    ``tabsize``
        If given and greater than 0, expand tabs in the input (default: 0).
    ``encoding``
        If given, must be an encoding name. This encoding will be used to
        convert the input string to Unicode, if it is not already a Unicode
        string (default: ``'guess'``, which uses a simple UTF-8 / Locale /
        Latin1 detection.  Can also be ``'chardet'`` to use the chardet
        library, if it is installed.
    ``inencoding``
        Overrides the ``encoding`` if given.
    NrcKsˆ||_t|ddƒ|_t|ddƒ|_t|ddƒ|_t|ddƒ|_|jdd	ƒ|_|jd
ƒpZ|j|_g|_	xt
|dfƒD]}|j|ƒqrWdS)NÚstripnlTÚstripallFÚensurenlÚtabsizerÚencodingÚguessZ
inencodingÚfilters)Úoptionsr
r7r8r9rr:Úgetr;r=rÚ
add_filter)Úselfr>Úfilter_r(r(r*Ú__init__bszLexer.__init__cCs(|jrd|jj|jfSd|jjSdS)Nz<pygments.lexers.%s with %r>z<pygments.lexers.%s>)r>Ú	__class__r3)rAr(r(r*Ú__repr__ns
zLexer.__repr__cKs&t|tƒst|f|Ž}|jj|ƒdS)z8
        Add a new stream filter to this lexer.
        N)Ú
isinstancerrr=Úappend)rArBr>r(r(r*r@us
zLexer.add_filtercCsdS)a~
        Has to return a float between ``0`` and ``1`` that indicates
        if a lexer wants to highlight this text. Used by ``guess_lexer``.
        If this method returns ``0`` it won't highlight it in any case, if
        it returns ``1`` highlighting with this lexer is guaranteed.

        The `LexerMeta` metaclass automatically wraps this function so
        that it works like a static method (no ``self`` or ``cls``
        parameter) and the return value is automatically converted to
        `float`. If the return value is an object that is boolean `False`
        it's the same as if the return values was ``0.0``.
        Nr()Útextr(r(r*r-}szLexer.analyse_textFcs¼tˆtƒsˆjdkr$tˆƒ\‰}n܈jdkrØyddl}Wn,tk
rf}ztdƒ|‚WYdd}~XnXd}x4tD],\}}ˆj|ƒrrˆt|ƒd…j	|dƒ}PqrW|dkrÒ|j
ˆdd…ƒ}	ˆj	|	jdƒpÌd	dƒ}|‰n(ˆj	ˆjƒ‰ˆjd
ƒrˆtd
ƒd…‰nˆjd
ƒrˆtd
ƒd…‰ˆjddƒ‰ˆjd
dƒ‰ˆj
rHˆjƒ‰nˆjrZˆjdƒ‰ˆjdkrrˆjˆjƒ‰ˆjrˆjdƒrˆd7‰‡‡fdd„}
|
ƒ}|s¸t|ˆjˆƒ}|S)a=
        Return an iterable of (tokentype, value) pairs generated from
        `text`. If `unfiltered` is set to `True`, the filtering mechanism
        is bypassed even if filters are defined.

        Also preprocess the text, i.e. expand tabs and strip it if
        wanted and applies registered filters.
        r<ÚchardetrNzkTo enable chardet encoding guessing, please install the chardet library from http://chardet.feedparser.org/Úreplaceir;zutf-8uz
Ú
ú
c3s(x"ˆjˆƒD]\}}}||fVqWdS)N)Úget_tokens_unprocessed)Ú_ÚtÚv)rArHr(r*Ústreamer¾sz"Lexer.get_tokens.<locals>.streamer)rFÚstrr;rrIÚImportErrorÚ
_encoding_mapÚ
startswithÚlenÚdecodeÚdetectr?rJr8Ústripr7r:Ú
expandtabsr9Úendswithrr=)rArHZ
unfilteredrNrIÚeÚdecodedÚbomr;ÚencrQÚstreamr()rArHr*Ú
get_tokens‹sN	




zLexer.get_tokenscCst‚dS)zú
        Return an iterable of (index, tokentype, value) pairs where "index"
        is the starting position of the token within the input text.

        In subclasses, implement this method as a generator to
        maximize effectiveness.
        N)ÚNotImplementedError)rArHr(r(r*rMÆszLexer.get_tokens_unprocessed)F)r3r4r5r6r0ÚurlÚaliasesÚ	filenamesZalias_filenamesÚ	mimetypesÚpriorityrCrEr@r-rarMr(r(r(r*r1s
;)Ú	metaclassc@s$eZdZdZefdd„Zdd„ZdS)ra 
    This lexer takes two lexer as arguments. A root lexer and
    a language lexer. First everything is scanned using the language
    lexer, afterwards all ``Other`` tokens are lexed using the root
    lexer.

    The lexers from the ``template`` lexer package use this base lexer.
    cKs0|f|Ž|_|f|Ž|_||_tj|f|ŽdS)N)Ú
root_lexerÚlanguage_lexerÚneedlerrC)rAZ_root_lexerZ_language_lexerZ_needler>r(r(r*rCÛszDelegatingLexer.__init__cCsŽd}g}g}xX|jj|ƒD]H\}}}||jkrR|rH|jt|ƒ|fƒg}||7}q|j|||fƒqW|r||jt|ƒ|fƒt||jj|ƒƒS)NÚ)rjrMrkrGrVÚ
do_insertionsri)rArHZbufferedÚ
insertionsZ
lng_bufferÚirOrPr(r(r*rMás

z&DelegatingLexer.get_tokens_unprocessedN)r3r4r5r6rrCrMr(r(r(r*rÑsc@seZdZdZdS)rzI
    Indicates that a state should include rules from another state.
    N)r3r4r5r6r(r(r(r*røsc@seZdZdZdd„ZdS)Ú_inheritzC
    Indicates the a state should inherit from its superclass.
    cCsdS)Nrr()rAr(r(r*rEsz_inherit.__repr__N)r3r4r5r6rEr(r(r(r*rpÿsrpc@s eZdZdZdd„Zdd„ZdS)Úcombinedz:
    Indicates a state combined from multiple states.
    cGstj||ƒS)N)Útupler/)ÚclsÚargsr(r(r*r/szcombined.__new__cGsdS)Nr()rArtr(r(r*rCszcombined.__init__N)r3r4r5r6r/rCr(r(r(r*rq	srqc@sFeZdZdZdd„Zddd„Zddd„Zdd	d
„Zdd„Zd
d„Z	dS)Ú_PseudoMatchz:
    A pseudo match object constructed from a string.
    cCs||_||_dS)N)Ú_textÚ_start)rAÚstartrHr(r(r*rCsz_PseudoMatch.__init__NcCs|jS)N)rw)rAÚargr(r(r*rxsz_PseudoMatch.startcCs|jt|jƒS)N)rwrVrv)rAryr(r(r*Úend"sz_PseudoMatch.endcCs|rtdƒ‚|jS)Nz
No such group)Ú
IndexErrorrv)rAryr(r(r*Úgroup%sz_PseudoMatch.groupcCs|jfS)N)rv)rAr(r(r*Úgroups*sz_PseudoMatch.groupscCsiS)Nr()rAr(r(r*Ú	groupdict-sz_PseudoMatch.groupdict)N)N)N)
r3r4r5r6rCrxrzr|r}r~r(r(r(r*rus


rucsd‡fdd„	}|S)zL
    Callback that yields multiple actions for each group in the match.
    Nc3sÄx°tˆƒD]¤\}}|dkrq
q
t|ƒtkrT|j|dƒ}|r®|j|dƒ||fVq
|j|dƒ}|dk	r
|r~|j|dƒ|_x.||t|j|dƒ|ƒ|ƒD]}|rœ|VqœWq
W|rÀ|jƒ|_dS)Né)Ú	enumerater.r	r|rxÚposrurz)ÚlexerÚmatchÚctxroÚactionÚdataÚitem)rtr(r*Úcallback5s"zbygroups.<locals>.callback)Nr()rtrˆr()rtr*r1sc@seZdZdZdS)Ú_ThiszX
    Special singleton used for indicating the caller class.
    Used by ``using``.
    N)r3r4r5r6r(r(r(r*r‰Ksr‰csji‰dˆkr:ˆjdƒ}t|ttfƒr.|ˆd<nd|fˆd<ˆtkrTd‡‡fdd„	}nd	‡‡‡fdd„	}|S)
aÂ
    Callback that processes the match with a different lexer.

    The keyword arguments are forwarded to the lexer, except `state` which
    is handled separately.

    `state` specifies the state that the new lexer will start in, and can
    be an enumerable such as ('root', 'inline', 'string') or a simple
    string which is assumed to be on top of the root state.

    Note: For that to work, `_other` must not be an `ExtendedRegexLexer`.
    ÚstateÚstackÚrootNc3snˆrˆj|jƒ|jfˆŽ}n|}|jƒ}x0|j|jƒfˆŽD]\}}}||||fVq>W|rj|jƒ|_dS)N)Úupdater>rDrxrMr|rzr)r‚rƒr„ÚlxÚsrorOrP)Ú	gt_kwargsÚkwargsr(r*rˆjszusing.<locals>.callbackc3sbˆj|jƒˆfˆŽ}|jƒ}x0|j|jƒfˆŽD]\}}}||||fVq2W|r^|jƒ|_dS)N)rr>rxrMr|rzr)r‚rƒr„rŽrrorOrP)Ú_otherrr‘r(r*rˆys
)N)N)ÚpoprFÚlistrrr)r’r‘rrˆr()r’rr‘r*rTs



c@seZdZdZdd„ZdS)rzÑ
    Indicates a state or state action (e.g. #pop) to apply.
    For example default('#pop') is equivalent to ('', Token, '#pop')
    Note that state tuples may be used as well.

    .. versionadded:: 2.0
    cCs
||_dS)N)rŠ)rArŠr(r(r*rCŽszdefault.__init__N)r3r4r5r6rCr(r(r(r*r†sc@s"eZdZdZddd„Zdd„ZdS)	rz•
    Indicates a list of literal words that is transformed into an optimized
    regex that matches any of the words.

    .. versionadded:: 2.0
    rlcCs||_||_||_dS)N)rÚprefixÚsuffix)rArr•r–r(r(r*rC™szwords.__init__cCst|j|j|jdS)N)r•r–)rrr•r–)rAr(r(r*r?žsz	words.getN)rlrl)r3r4r5r6rCr?r(r(r(r*r’s
c@sJeZdZdZdd„Zdd„Zdd„Zdd	„Zddd„Zd
d„Z	dd„Z
d
S)ÚRegexLexerMetazw
    Metaclass for RegexLexer, creates the self._tokens attribute from
    self.tokens on the first instantiation.
    cCs t|tƒr|jƒ}tj||ƒjS)zBPreprocess the regular expression component of a token definition.)rFrr?ÚreÚcompilerƒ)rsÚregexÚrflagsrŠr(r(r*Ú_process_regex¨s
zRegexLexerMeta._process_regexcCs&t|ƒtks"t|ƒs"td|fƒ‚|S)z5Preprocess the token component of a token definition.z2token type must be simple type or callable, not %r)r.r	ÚcallableÚAssertionError)rsÚtokenr(r(r*Ú_process_token®szRegexLexerMeta._process_tokencCst|tƒrd|dkrd
S||kr$|fS|dkr0|S|dd…dkrRt|dd…ƒSdsbtd|ƒ‚n¶t|tƒrÎd	|j}|jd7_g}x4|D],}||ks¨td
|ƒ‚|j|j|||ƒƒqW|||<|fSt|tƒrx(|D] }||ksà|dksàtd|ƒ‚qàW|Sdstd|ƒ‚dS)z=Preprocess the state transition action of a token definition.ú#poprú#pushNéz#pop:Fzunknown new state %rz_tmp_%dzcircular state ref %rzunknown new state zunknown new state def %réÿÿÿÿ)r¡r¢)	rFrRÚintržrqÚ_tmpnameÚextendÚ_process_staterr)rsÚ	new_stateÚunprocessedÚ	processedZ	tmp_stateÚitokensZistater(r(r*Ú_process_new_state´s6






z!RegexLexerMeta._process_new_statecCs–t|ƒtkstd|ƒ‚|ddks0td|ƒ‚||kr@||Sg}||<|j}x<||D].}t|tƒrœ||ks‚td|ƒ‚|j|j||t|ƒƒƒq^t|tƒr¨q^t|t	ƒrÜ|j
|j||ƒ}|jt
jdƒjd|fƒq^t|ƒtksôtd|ƒ‚y|j|d||ƒ}Wn>tk
rH}	z td	|d|||	fƒ|	‚WYdd}	~	XnX|j|d
ƒ}
t|ƒdkrld}n|j
|d||ƒ}|j||
|fƒq^W|S)z%Preprocess a single state definition.zwrong state name %rrú#zinvalid state name %rzcircular state reference %rrlNzwrong rule def %rz+uncompilable regex %r in state %r of %r: %sré)r.rRržÚflagsrFrr§r¨rprr­rŠrGr˜r™rƒrrrœÚ	ExceptionÚ
ValueErrorr rV)rsrªr«rŠÚtokensr›Ztdefr©ÚrexÚerrrŸr(r(r*r¨×s>


(
zRegexLexerMeta._process_stateNcCs@i}|j|<|p|j|}xt|ƒD]}|j|||ƒq&W|S)z-Preprocess a dictionary of token definitions.)Ú_all_tokensr³r”r¨)rsr0Ú	tokendefsr«rŠr(r(r*Úprocess_tokendefs
zRegexLexerMeta.process_tokendefc

Csài}i}xÒ|jD]È}|jjdiƒ}x´|jƒD]¨\}}|j|ƒ}|dkr~|||<y|jtƒ}Wntk
rrw,YnX|||<q,|j|dƒ}|dkr”q,||||d…<y|jtƒ}	Wntk
rÆYq,X||	||<q,WqW|S)a
        Merge tokens from superclasses in MRO order, returning a single tokendef
        dictionary.

        Any state that is not defined by a subclass will be inherited
        automatically.  States that *are* defined by subclasses will, by
        default, override that state in the superclass.  If a subclass wishes to
        inherit definitions from a superclass, it can use the special value
        "inherit", which will cause the superclass' state definition to be
        included at that point in the state.
        r³Nr)Ú__mro__Ú__dict__r?ÚitemsÚindexrr²r“)
rsr³ÚinheritableÚcÚtoksrŠr»ZcuritemsZinherit_ndxZnew_inh_ndxr(r(r*Ú
get_tokendefss0
zRegexLexerMeta.get_tokendefscOsLd|jkr:i|_d|_t|dƒr(|jr(n|jd|jƒƒ|_tj	|f|ž|ŽS)z:Instantiate cls after preprocessing its token definitions.Ú_tokensrÚtoken_variantsrl)
rºr¶r¦ÚhasattrrÂr¸rÀrÁr.Ú__call__)rsrtÚkwdsr(r(r*rÄ<s
zRegexLexerMeta.__call__)N)r3r4r5r6rœr r­r¨r¸rÀrÄr(r(r(r*r—¢s#,
1r—c@s$eZdZdZejZiZddd„ZdS)rz±
    Base for simple stateful regular expression-based lexers.
    Simplifies the lexing process so that you need only
    provide a list of states and regular expressions.
    rŒccsÊd}|j}t|ƒ}||d
}x¤xœ|D]*\}}}	|||ƒ}
|
r*|dk	rzt|ƒtkrj|||
jƒfVn|||
ƒEdH|
jƒ}|	dk	rTt|	tƒræx°|	D]D}|dkr¾t|ƒdkrà|j	ƒqœ|dkrÖ|j
|dƒqœ|j
|ƒqœWnbt|	tƒrt|	ƒt|ƒkr|dd…=n
||	d…=n,|	dkr6|j
|dƒndsHt
d|	ƒ‚||d
}Pq*WyN||dkrŽd	g}|d	}|tdfV|d7}w"|t||fV|d7}Wq"tk
rÀPYq"Xq"WdS)z~
        Split ``text`` into (tokentype, text) pairs.

        ``stack`` is the initial stack (default: ``['root']``)
        rrNz#popz#pushFzwrong state def: %rrKrŒr¤r¤r¤r¤)rÁr”r.r	r|rzrFrrrVr“rGr¥Úabsržrrr{)rArHr‹rr·Z
statestackÚstatetokensÚrexmatchr…r©ÚmrŠr(r(r*rMmsT





z!RegexLexer.get_tokens_unprocessedN©rŒ)rÊ)	r3r4r5r6r˜Ú	MULTILINEr°r³rMr(r(r(r*rJsc@s"eZdZdZddd„Zdd„ZdS)rz9
    A helper object that holds lexer position data.
    NcCs*||_||_|pt|ƒ|_|p"dg|_dS)NrŒ)rHrrVrzr‹)rArHrr‹rzr(r(r*rC°szLexerContext.__init__cCsd|j|j|jfS)NzLexerContext(%r, %r, %r))rHrr‹)rAr(r(r*rE¶szLexerContext.__repr__)NN)r3r4r5r6rCrEr(r(r(r*r«s
c@seZdZdZddd„ZdS)rzE
    A RegexLexer that uses a context object to store its state.
    NccsD|j}|st|dƒ}|d}n|}||jd
}|j}xxþ|D]f\}}}|||j|jƒ}	|	rB|dk	r¸t|ƒtkr”|j||	jƒfV|	jƒ|_n$|||	|ƒEdH|s¸||jd}|dk	r¨t	|t
ƒr.xÊ|D]T}
|
dkrþt|jƒdkr(|jjƒqÔ|
dkr|jj
|jdƒqÔ|jj
|
ƒqÔWnlt	|tƒrjt|ƒt|jƒkr\|jdd…=n|j|d…=n0|dkrˆ|jj
|jd
ƒndsštd|ƒ‚||jd}PqBWyt|j|jkrÀP||jd	krþdg|_|d}|jtd	fV|jd7_w:|jt||jfV|jd7_Wq:tk
r:PYq:Xq:WdS)z
        Split ``text`` into (tokentype, text) pairs.
        If ``context`` is given, use this lexer context instead.
        rrŒrNz#popz#pushFzwrong state def: %rrKr¤r¤r¤r¤r¤)rÁrr‹rHrrzr.r	r|rFrrrVr“rGr¥rÆržrrr{)rArHÚcontextr·r„rÇrÈr…r©rÉrŠr(r(r*rMÀsb






z)ExtendedRegexLexer.get_tokens_unprocessed)NN)r3r4r5r6rMr(r(r(r*r»sccs¶t|ƒ}yt|ƒ\}}Wntk
r6|EdHdSXd}d}xü|D]ô\}}}|dkr\|}d}	x¨|ot|t|ƒ|kr||	||…}
|
r¤|||
fV|t|
ƒ7}x*|D]"\}}}
|||
fV|t|
ƒ7}qªW||}	yt|ƒ\}}Wqbtk
rd}PYqbXqbW|	t|ƒkrF||||	d…fV|t|ƒ|	7}qFWxr|r°|pNd}x,|D]$\}}}|||fV|t|ƒ7}qVWyt|ƒ\}}Wntk
rªd}PYnXq@WdS)ag
    Helper for lexers which must combine the results of several
    sublexers.

    ``insertions`` is a list of ``(index, itokens)`` pairs.
    Each ``itokens`` iterable should be inserted at position
    ``index`` into the token stream given by the ``tokens``
    argument.

    The result is a combined token stream.

    TODO: clean up the code here.
    NTrF)ÚiterÚnextÚ
StopIterationrV)rnr³r¼r¬ÚrealposZinsleftrorOrPZoldiZtmpvalZit_indexZit_tokenZit_valueÚpr(r(r*rmsN

rmc@seZdZdZdd„ZdS)ÚProfilingRegexLexerMetaz>Metaclass for ProfilingRegexLexer, collects regex timing info.csLt|tƒr t|j|j|jd‰n|‰tjˆ|ƒ‰tjf‡‡‡‡fdd„	}|S)N)r•r–cs`ˆjdjˆˆfddgƒ}tjƒ}ˆj|||ƒ}tjƒ}|dd7<|d||7<|S)Nrrgr¤)Ú
_prof_dataÚ
setdefaultÚtimerƒ)rHrÚendposÚinfoÚt0ÚresÚt1)rsÚcompiledr´rŠr(r*Ú
match_funcNsz:ProfilingRegexLexerMeta._process_regex.<locals>.match_func)	rFrrr•r–r˜r™ÚsysÚmaxsize)rsršr›rŠrÜr()rsrÛr´rŠr*rœFs

z&ProfilingRegexLexerMeta._process_regexN)r3r4r5r6rœr(r(r(r*rÒCsrÒc@s"eZdZdZgZdZddd„ZdS)	ÚProfilingRegexLexerzFDrop-in replacement for RegexLexer that does profiling of its regexes.érŒc#s҈jjjiƒtjˆ||ƒEdHˆjjjƒ}tdd„|jƒDƒ‡fdd„dd}tdd„|Dƒƒ}t	ƒt	dˆjj
t|ƒ|fƒt	d	d
ƒt	ddƒt	dd
ƒx|D]}t	d|ƒq®Wt	d	d
ƒdS)NcssN|]F\\}}\}}|t|ƒjdƒjddƒdd…|d|d||fVqdS)zu'z\\ú\NéAiè)ÚreprrYrJ)Ú.0rÚrÚnrOr(r(r*ú	<genexpr>dsz=ProfilingRegexLexer.get_tokens_unprocessed.<locals>.<genexpr>cs
|ˆjS)N)Ú_prof_sort_index)r))rAr(r*r+gsz<ProfilingRegexLexer.get_tokens_unprocessed.<locals>.<lambda>T)ÚkeyÚreversecss|]}|dVqdS)éNr()rär)r(r(r*rçisz2Profiling result for %s lexing %d chars in %.3f msú=énz$%-20s %-64s ncalls  tottime  percallrŠršú-z%-20s %-65s %5d %8.4f %8.4f)rŠrš)rDrÓrGrrMr“Úsortedr»ÚsumÚprintr3rV)rArHr‹Úrawdatar†Z	sum_totalr2r()rAr*rM_s"


z*ProfilingRegexLexer.get_tokens_unprocessedN©rŒ)ró)r3r4r5r6rÓrèrMr(r(r(r*rßYsrß)rr)r r!)r"r#)r$r%)r&r')6r6r˜rÝrÕZpygments.filterrrZpygments.filtersrZpygments.tokenrrrrr	Z
pygments.utilr
rrr
rrZpygments.regexoptrÚ__all__r™rrTÚstaticmethodZ_default_analyser.r,rrrRrrprrrrqrurr‰rrrrr—rrrrmrÒrßr(r(r(r*Ú<module>	sR 

!'
2)aH@