� K�gN�����dZddlZddlZddlZddlmZddlmZmZddl Z ddl m Z ddl m Z ddlmZmZmZmZmZmZmZmZdd lmZmZmZmZmZmZmZmZdd l m!Z!m"Z"m#Z#m$Z$m%Z%dd l&m'Z'dd l(m)Z)dd l*m+Z+m,Z,ddl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3ddlm4Z4m5Z5ddl6m7Z7m8Z8m9Z9m:Z:m;Z;ddl<m=Z=m>Z?ddl@mAZAmBZBmCZCmDZDmEZEeCd���ZFdgZGdZHdZIe2d��ZJidd�dd�dd�dd �d!d"�d#d$�d%d&�d'd(�d)d*�d+d,�d-d.�d/d0�d1d2�d3d4�d5d6�d7d8�d9d:�id;d<�d=d>�d?d@�dAdB�dCdD�dEdF�dGdH�dIdJ�dKdL�dMdN�dOdP�dQdR�dSdT�dUdV�dWdX�dYdZ�d[d\��d]d^d_��ZKid`da�dbdc�ddde�dfdg�dhdi�djdk�dldm�dnd�dod�dpdq�drds�dtdu�dLdK�dvdw�dxdy�dzd{�d|d}�d~eIzdd�d�d�d�d�d�d�d�d�d�d�d�� �ZLid�d�g�d�d�d�g�d�gd���d�d�g�d�dvd�g�d�d�d�g�d�d�d�g�d�dxd�g�d�d�g�d�gd���d�d�d�g�d�d�g�d�d�d�g�d�gd���d�gd���d�gd���d�dzg�id�dxg�d�dxdzg�d�d�d�g�d�d�g�d�d�g�d�d�g�d�d�d�g�d�d�d�g�d�d�d�g�d�d�d�g�d�d�g�d�d�g�d�gdâ�d�d�d�g�d�d�g�d�d�g�d�d�d�g��d�gd�d�gd�d�gd�d|gdМ�ZMd�ZNd�ZOGdӄd�eA��ZPeFGdՄd�eD����ZQGdׄd�eB��ZRGdلd�eA��ZSGdۄd�eD��ZTGd݄d�eD��ZUGd߄d�eD��ZVd�ZWd�ZXd�ZYeFGd�d�eD����ZZd�e$fd�Z[Gd�d�eE��Z\Gd�d�eD��Z]d�Z^Gd�d��Z_ed�d��Z`Gd�d��Zaead�eG��Zbd�Zcd��ZdeFGd��d�eD����Zed��Zfd��Zgd�d�gfd�d�gfd�gd��f�dg�d�f�d�dgf�d�dgf�dg�d�f�dg�d �f�d �d gf�d �d gf�d�dgf�d�dgf�d�dgfg Zh�d�Zi�d&�d�Zj�d�Zk�d�Zl�d&�demd�emd�eee;emff�d�Zn�d'�d�Zo�d�Zp�d�ZqG�d��d��ZrG�d��d ��Zs�d!�Ztgf�d"�Zu�d#�Zv�d$emd�emf�d%�ZwdS((zCParses and compiles Lark grammars into an internal representation. �N)� namedtuple)�copy�deepcopy)� literal_eval)�suppress)�List�Tuple�Union�Callable�Dict�Optional�Sequence� Generator�)�bfs�logger� classify_bool�is_id_continue� is_id_start�bfs_all_unique� small_factors� OrderedSet)�Token� TerminalDef� PatternStr� PatternRE�Pattern)�ParseTreeBuilder)�ParsingFrontend)� LexerConf� ParserConf)� RuleOptions�Rule�Terminal� NonTerminal�Symbol�TOKEN_DEFAULT_PRIORITY)�classify� dedup_list)� GrammarError�UnexpectedCharacters�UnexpectedToken� ParseError�UnexpectedInput)�Tree� SlottedTree)� Transformer�Visitor�v_args�Transformer_InPlace�Transformer_NonRecursiveT)�inline�grammarsz.lark�imslux� __empty__�.�DOT�,�COMMA�:�COLON�;� SEMICOLON�+�PLUS�-�MINUS�*�STAR�/�SLASH�\� BACKSLASH�|�VBAR�?�QMARK�!�BANG�@�AT�#�HASH�$�DOLLAR�%�PERCENT�^� CIRCUMFLEX�&� AMPERSAND�_� UNDERSCORE�<�LESSTHAN�>�MORETHAN�=�EQUAL�"�DBLQUOTE�'�QUOTE�`� BACKQUOTE�~�TILDE�(�LPAR�)�RPAR�{�LBRACE�}�RBRACE�[�LSQB�]�RSQB� �NEWLINEz �CRLF�TAB�SPACE)� � �_LPARz\(�_RPARz\)�_LBRAz\[�_RBRAz\]�_LBRACEz\{�_RBRACEz\}�OPz[+*]|[?](?![a-z_])�_COLON�_COMMA�_ORz\|�_DOTz\.(?!\.)�_DOTDOTz\.\.�RULE_MODIFIERSz(!|![?]?|[?]!?)(?=[_a-z])�RULEz_?[a-z][_a-z0-9]*�TERMINALz_?[A-Z][_A-Z0-9]*�STRINGz"(\\"|\\\\|[^"\n])*?"i?z/(?!/)(\\/|\\\\|[^/])*?/[%s]*z (\r?\n)+\s*z (\r?\n)+\s*\|z[ \t]+z\s*//[^\n]*|\s*#[^\n]*z\\[ ]*\nz->z%ignorez %overridez%declarez%extendz%importz[+-]?\d+) �REGEXP�_NL�_NL_OR�WS�COMMENTrK�_TO�_IGNORE� _OVERRIDE�_DECLARE�_EXTEND�_IMPORT�NUMBER�start�_list�_itemz _list _item)�rule�term�ignore�import�declare�override�extendr�r�zBrule_modifiers RULE template_params priority _COLON expansions _NL�rule_modifiers��priorityz _DOT NUMBER�template_paramsz _LBRACE _template_params _RBRACE�_template_paramsz_template_params _COMMA RULE� expansions� _expansions)�aliasz_expansions _OR aliasz_expansions _NL_OR aliasz?aliaszexpansion _TO nonterminal� expansion� _expansionz_expansion exprz?expr)�atomzatom OPzatom TILDE NUMBERz atom TILDE NUMBER _DOTDOT NUMBERz?atom)z_LPAR expansions _RPAR�maybe�valuer�)�terminal� nonterminal�literal�range�template_usager�r�z?namez?symbolr�z_LBRA expansions _RBRAr�zSTRING _DOTDOT STRINGr�z*nonterminal _LBRACE _template_args _RBRACE�_template_argsz_template_args _COMMA valuer�zTERMINAL _COLON expansions _NLz*TERMINAL _DOT NUMBER _COLON expansions _NLr�z_OVERRIDE rulez_OVERRIDE termr�z _EXTEND rulez _EXTEND termr�z_IGNORE expansions _NLr�z_DECLARE _declare_args _NLr�)z_IMPORT _import_path _NLz._IMPORT _import_path _LPAR name_list _RPAR _NLz!_IMPORT _import_path _TO name _NL� _import_path� import_lib� import_rel� _import_argsz_DOT _import_args�namez_import_args _DOT name� _name_listz_name_list _COMMA name�symbolz_declare_args symbolr�)� name_listr�� _declare_argsr���2c��eZdZdefd�Zdedefd�Zdeee efde e ddffd�Z de fd �Z de fd �Z dS) � FindRuleSize�keep_all_tokensc��||_dS�N�r�)�selfr�s �a/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/lark/load_grammar.py�__init__zFindRuleSize.__init__�s��.������sym�returnc���t|t��r|j�d�� St|t��r|jp|j S|turdSJ|���)Nr^F)� isinstancer%r�� startswithr$r�� filter_out�_EMPTY)r�r�s r��_will_not_get_removedz"FindRuleSize._will_not_get_removed�sm�� �c�;� '� '� 0��x�*�*�3�/�/�/� /� �c�8� $� $� >��'�=�s�~�+=� =� �&�=�=��5��c���ur��argsNc#�K�|D]N}t|t��r|V��t|t��r|�|��rdndV��MJ�dS)Nrr)r��intr&r�)r�r��as r�� _args_as_intzFindRuleSize._args_as_int�sy����� � �A��!�S�!�!� �������A�v�&�&� ��5�5�a�8�8�?�a�a�a�?�?�?�?��u�  � r�c�F�t|�|����Sr�)�sumr��r�r�s r�r�zFindRuleSize.expansion�����4�$�$�T�*�*�+�+�+r�c�F�t|�|����Sr�)�maxr�r�s r�r�zFindRuleSize.expansions�r�r�)�__name__� __module__� __qualname__�boolr�r&r�rr r�rr�r�r��r�r�r�r��s�������/��/�/�/�/����D�������e�C��K�&8�!9��i��T�SW��>X�����,��,�,�,�,�,�#�,�,�,�,�,�,r�r�c�r�eZdZd�Zdefd�Zd�Zdedefd�Zd�Z d �Z d ed e d e fd �Z d ede fd�Zd efd�ZdS)� EBNF_to_BNFc�L�g|_i|_d|_d|_d|_dS)N�anonr)� new_rules� rules_cache�prefix�i� rule_options�r�s r�r�zEBNF_to_BNF.__init__�s-���������� ���� ����r��innerc�J�d|j||jfz}|xjdz c_|S)Nz __%s_%s_%dr)r�r�)r�r��new_names r�� _name_rulezEBNF_to_BNF._name_rule�s+���4�;��t�v�">�>�� ���!� ����r�c�|�t|��}|j�|||jf��||j|<|Sr�)r%r��appendr�r�)r��keyr�r��ts r�� _add_rulezEBNF_to_BNF._add_rule�sA�� �� � �� ����t�Z��1B�C�D�D�D� !������r��type_�exprc �� |j|S#t$ro|�|��}t|��}t dt d|g��t d||g��g��}|�|||��cYSwxYw)Nr�r�)r��KeyErrorr�r%�STr�)r�r�r�r�r��trees r��_add_recurse_rulezEBNF_to_BNF._add_recurse_rule�s��� 8��#�D�)� )��� 8� 8� 8����u�-�-�H��H�%�%�A��l��;���'�'��;��D� �*�*�%���D��>�>�$��$�7�7� 7� 7� 7� 8���s� �A6B�Bc ��||||f} |j|S#t$r^|�d||fz��}tdtd|g|z|g|zz��g��}|�|||��cYSwxYw)aNGenerate a rule that repeats target ``a`` times, and repeats atom ``b`` times. When called recursively (into target), it repeats atom for x(n) times, where: x(0) = 1 x(n) = a(n) * x(n-1) + b Example rule when a=3, b=4: new_rule: target target target atom atom atom atom zrepeat_a%d_b%dr�r�)r�r�r�r�r�)r�r��b�targetr�r�r�r�s r��_add_repeat_rulezEBNF_to_BNF._add_repeat_rules����!�V�T�"�� 7��#�C�(� (��� 7� 7� 7����'7�1�a�&�'@�A�A�H��l�R� �f�X��\�T�F�Q�J�5N�%O�%O�$P�Q�Q�D��>�>�#�x��6�6� 6� 6� 6� 7���s� �A%A=�<A=c �F������|��df} |j|S#t$r||�d�|fz��}td��fd�t ���D�����fd�t |��D��z��}|�|||��cYSwxYw)a_Creates a rule that matches atom 0 to (a*n+b)-1 times. When target matches n times atom, and target_opt 0 to n-1 times target_opt, First we generate target * i followed by target_opt, for i from 0 to a-1 These match 0 to n*a - 1 times atom Then we generate target * a followed by atom * i, for i from 0 to b-1 These match n*a to n*a + b-1 times atom The created rule will not have any shift/reduce conflicts so that it can be used with lalr Example rule when a=3, b=4: new_rule: target_opt | target target_opt | target target target_opt | target target target | target target target atom | target target target atom atom | target target target atom atom atom �optzrepeat_a%d_b%d_optr�c�@��g|]}td�g|z�gz����S�r��r�)�.0r�r� target_opts ��r�� <listcomp>z4EBNF_to_BNF._add_repeat_opt_rule.<locals>.<listcomp>4s=���%�%�%�?@��;���� �j�\� 9�:�:�%�%�%r�c�F��g|]}td�g�z�g|zz����Srr )r r�r�r�rs ���r�r z4EBNF_to_BNF._add_repeat_opt_rule.<locals>.<listcomp>6sA������;<��;���� �d�V�A�X� 5�6�6���r�)r�r�r�r�r�r�) r�r�rrr r�r�r�r�s ` ``` r��_add_repeat_opt_rulez EBNF_to_BNF._add_repeat_opt_rules�������2�!�V�T�5�)�� 7��#�C�(� (��� 7� 7� 7����';�q�!�f�'D�E�E�H��l�%�%�%�%�%�DI�!�H�H�%�%�%�������@E�a������%���D� �>�>�#�x��6�6� 6� 6� 6� 7���s� �BB �B r��mn�mxc �^��|tkr-td�fd�t||dz��D����S�}t|t��D]\}}|�|||���}�||kr|S||z dz}t|t��}�} tdg��} |dd�D]6\}}|�||| | ���} |�||| ���} �7|d\}}|�||| | ���} tdtd|g| gz��g��S)z\Generates a rule tree that repeats ``rule`` exactly between ``mn`` to ``mx`` times. r�c�8��g|]}td�g|z����Srr )r �nr�s �r�r z1EBNF_to_BNF._generate_repeats.<locals>.<listcomp>@s)���$\�$\�$\�Q�R� �d�V�a�Z�%@�%@�$\�$\�$\r�rr�N�����)�REPEAT_BREAK_THRESHOLDr�r�r�SMALL_FACTOR_THRESHOLDrr) r�r�rr� mn_targetr�r�diff� diff_factors� diff_target�diff_opt_targets ` r��_generate_repeatszEBNF_to_BNF._generate_repeats;sp��� �&� &� &��l�$\�$\�$\�$\�%�PR�TV�YZ�TZ�J[�J[�$\�$\�$\�]�]� ]�� �!�"�&<�=�=� E� E�D�A�q��-�-�a��I�t�D�D�I�I� ��8�8�� ��B�w��{��$�T�+A�B�B� �� ��[�"�-�-�� ��"��%� I� I�D�A�q�"�7�7��1�k�?�\`�a�a�O��/�/��1�k�4�H�H�K�K��B����1��3�3�A�q�+��X\�]�]���,��K�)���?P�1P�!Q�!Q� R�S�S�Sr��opc�@�|jdkr"tdg��}td||g��S|jdkr|�d|��S|jdkr6|�d|��}td|tdg��g��S|jdkr{t|��d krt |d ��x}}n9t t|��\}}||ks|d krt d |||fz���|�|||��SJ|���) NrNr�r�rB�plusrF�starrlrr�'Bad Range for %s (%d..%d isn't allowed))r�r�r�lenr��mapr*r)r�r�rr��emptyr�rrs r�r�zEBNF_to_BNF.exprZs)�� �8�s�?�?��{�B�'�'�E��l�T�5�M�2�2� 2� �X��_�_� �)�)�&�$�7�7� 7� �X��_�_� �-�-�f�d�;�;�H��l�X�r�+�r�/B�/B�$C�D�D� D� �X��_�_��4�y�y�A�~�~��d�1�g�,�,�&��R�R��S�$�����B���7�7�b�1�f�f�&�'P�TX�Z\�^`�Sa�'a�b�b�b��)�)�$��B�7�7� 7��b���ur�c���|jo |jj}t|���|��}t dt g|z��}t d||g��S)Nr�r�)r�r�r�� transformr�r�)r�r�r�� rule_sizer$s r�r�zEBNF_to_BNF.maybewsZ���+�Q��0A�0Q�� ��1�1�;�;�D�A�A� ��;���9� 4�5�5���,��u� �.�.�.r�N)r�r�r�r��strr�r�r/rrrr�rrr�r�r�r�r�r�r��s�������!�!�!������� ��� 8�s� 8�$� 8� 8� 8� 8�7�7�7�(#7�#7�#7�JT�d�T��T��T�T�T�T�>���5�����:/�$�/�/�/�/�/�/r�r�c�H�eZdZedefd���Zdefd�Zd�Zdefd�ZdS)�SimplifyRule_Visitorr�c�t�|�|j��r |�|j���dSdSr�)�expand_kids_by_data�data�r�s r��_flattenzSimplifyRule_Visitor._flatten�sK���&�&�t�y�1�1� � ��&�&�t�y�1�1� � � � � r�c�6���������t�j��D]k\�}t|t��rQ|jdkrFd�_���fd�t |j��D���_�����dS�ldS)Nr�c ����g|]D���td��fd�t�j��D��������ES)r�c�*��g|]\}}�|kr�n|��Sr�r�)r �j�otherr��options ��r�r z=SimplifyRule_Visitor.expansion.<locals>.<listcomp>.<listcomp>�sB���=g�=g�=g�AI��E�HI�A�v�v�V�V�SX�=g�=g�=gr�)�visitr�� enumerate�children)r r5r�r�r�s @���r�r z2SimplifyRule_Visitor.expansion.<locals>.<listcomp>�s�����!K�!K�!K�%+�"&���B�{�=g�=g�=g�=g�=g�MV�W[�Wd�Me�Me�=g�=g�=g�-h�-h�"i�"i�!K�!K�!Kr�)r/r7r8r�r/r-r))r�r��childr�s`` @r�r�zSimplifyRule_Visitor.expansion�s������ � � �d����!�$�-�0�0� � �H�A�u��%��&�&� �5�:��+E�+E�(�� �!K�!K�!K�!K�!K�!K�/9�%�.�/I�/I�!K�!K�!K�� �� � �d�#�#�#����� � r�c���|j\}}|jdkrLg}|jdjD]'}|�td||g�����(d|_||_dSdS)Nr�rr�)r8r-r�r�)r�r�r�� alias_name�aliasesr9s r�r�zSimplifyRule_Visitor.alias�sy���=���j� �9� � $� $��G���q�)�2� A� A�����r�'�E�:�+>�?�?�@�@�@�@�$�D�I�#�D�M�M�M� %� $r�c���|�|��tt|j����t|j��krt |j��|_dSdSr�)r/r"�setr8r))r�r�s r�r�zSimplifyRule_Visitor.expansions�sX�� � � �d���� �s�4�=�!�!� "� "�c�$�-�&8�&8� 8� 8�&�t�}�5�5�D�M�M�M� 9� 8r�N) r�r�r�� staticmethodr/r/r�r�r�r�r�r�r*r*~s~��������t�����\���d�����,$�$�$�6�t�6�6�6�6�6�6r�r*c� �eZdZd�Zd�Zd�ZdS)�RuleTreeToTextc��|Sr�r�)r��xs r�r�zRuleTreeToText.expansions�s���r�c� �|dfSr�r�)r��symbolss r�r�zRuleTreeToText.expansion�s ����}�r�c�D�|\\}}}|�J||d|f���||jfS)NrD�r�)r�rCr��_aliasr�s r�r�zRuleTreeToText.alias�s6��%&�"���F�U��~�~��y�#�v�>�~�~�~��%�*�$�$r�N)r�r�r�r�r�r�r�r�r�rArA�sA������������%�%�%�%�%r�rAc�.�eZdZdZd�Zed���ZdS)�PrepareAnonTerminalszfCreate a unique list of anonymous terminals. Attempt to give meaningful names to them when we add themc�~�||_d�|jD��|_d�|D��|_d|_d|_dS)Nc��h|] }|j�� Sr�rG�r �tds r�� <setcomp>z0PrepareAnonTerminals.__init__.<locals>.<setcomp>�s��:�:�:�R���:�:�:r�c��i|] }|j|�� Sr�)�patternrMs r�� <dictcomp>z1PrepareAnonTerminals.__init__.<locals>.<dictcomp>�s��@�@�@��R�Z��@�@�@r�r)� terminals�term_set� term_reverser�r�)r�rSs r�r�zPrepareAnonTerminals.__init__�sK��"���:�:�4�>�:�:�:�� �@�@�i�@�@�@������ ����r�c���|j}||jvr2|j|j|jjkrt d|z���d}t |t ��r� |j|j}n�#t$r� t|}ne#t$rX|rSt|��rDt|d��r/|� ��|j vr|� ��}YnwxYw||j vrd}Yn?wxYwt |t��r||jvr|j|j}n J|���|�d|jz}|xjdz c_||j vrY||jvsJ�|j �|��t#||��}||j|<|j�|��|jr|jjrdnt |t ��}t-||���S)Nz+Conflicting flags for the same terminal: %srFz __ANON_%dr�r�)r�rU�flagsrQr*r�rr�r��_TERMINAL_NAMESrr�upperrTrr��addrrSr�r�r�r$)r��pr�� term_name�termdefr�s r�rQzPrepareAnonTerminals.pattern�s)����� ��!� !� !�a�g��1B�1�1E�1M�1S�&S�&S��M�PQ�Q�R�R� R�� � �a�� $� $� � %� �-�a�0�5� � ��� %� %� %�2� /�� 6�I�I���2�2�2��2���!6�!6�2�;�u�Q�x�;P�;P�2�UZ�U`�U`�Ub�Ub�jn�jw�Uw�Uw�$)�K�K�M�M� ���2������ �-�-� $�I��� %������9� %� %� ��D�%�%�%� �-�a�0�5� �� �!�O�O�5� � �#�d�f�,�I� �F�F�a�K�F�F� �D�M� )� )��D�-�-�-�-�-� �M� � �i� (� (� (�!�)�Q�/�/�G�#*�D� �a� � �N� !� !�'� *� *� *�"�/�t�D�4E�4U�t�U�U�[e�fg�is�[t�[t� �� �j�9�9�9�9s7�A.�. C:�9 B�C:�AC)�&C:�(C)�)C:�9C:N)r�r�r��__doc__r�� inline_argsrQr�r�r�rJrJ�sD������p�p�!�!�!��):�):��[�):�):�):r�rJc�$�eZdZdZd�Zd�Zd�ZdS)�_ReplaceSymbolszHelper for ApplyTemplatesc��i|_dSr�)�namesr�s r�r�z_ReplaceSymbols.__init__�s ���� � � r�c���t|��dkrGt|dt��r,|dj|jvr|j|djS|�d|d��S)Nrrr�)r"r�r&r�rd� __default__)r��cs r�r�z_ReplaceSymbols.value�s`�� �q�6�6�Q�;�;�:�a��d�F�3�3�;��!�� �T�Z�8O�8O��:�a��d�i�(� (������D�1�1�1r�c��|dj}||jvr.|�d|j|g|dd�zd��S|�d|d��S)Nrr�r)r�rdrf)r�rgr�s r�r�z_ReplaceSymbols.template_usage�sd����t�y�� �4�:� � ��#�#�$4�t�z�$�7G�6H�1�Q�R�R�5�6P�RV�W�W� W���� 0�!�T�:�:�:r�N)r�r�r�r_r�r�r�r�r�r�rbrb�sG������#�#����2�2�2� ;�;�;�;�;r�rbc��eZdZdZd�Zd�ZdS)�ApplyTemplateszIApply the templates, creating new rules that represent the used templatesc�`�||_t��|_t��|_dSr�)� rule_defsrb�replacerr>�created_templates)r�rls r�r�zApplyTemplates.__init__s(��"���'�)�)�� �!$������r�c�^� �|dj� |dd�}� �dd�d�|D�����d�}||jvr�|j�|��� fd�|jD��\\}}}}t |��t |��ks J|���t |��}tt||����|j _ |j � |��|j� |g|t |��f��t|��S)Nrrrrr<c3�$K�|] }|jV�� dSr�rG)r r�s r�� <genexpr>z0ApplyTemplates.template_usage.<locals>.<genexpr> s$����0F�0F�A���0F�0F�0F�0F�0F�0Fr�rtc3�4�K�|]}|d�k�|V��dS)rNr�)r r�r�s �r�rqz0ApplyTemplates.template_usage.<locals>.<genexpr>s,�����+V�+V�!��1��QU���A�����+V�+Vr�)r��joinrnr[rlr"r�dict�ziprmrdr&r�r%) r�rgr�� result_name�_n�paramsr��options� result_treer�s @r�r�zApplyTemplates.template_usage s-�����t�y������u��"&�$�$����0F�0F��0F�0F�0F�(F�(F�(F�(F�G� � �d�4� 4� 4� � "� &� &�{� 3� 3� 3�+V�+V�+V�+V�t�~�+V�+V�+V� )� '�R���w��v�;�;�#�d�)�)�+�+�+�T�+�+�+�"�4�.�.�K�"&�s�6�4�'8�'8�"9�"9�D�M� � �M� #� #�K� 0� 0� 0� �N� !� !�;��K��'�AR�AR�"S� T� T� T��;�'�'�'r�N)r�r�r�r_r�r�r�r�r�rjrjs8������S�S�'�'�'� (� (� (� (� (r�rjc�:��t�fd�|D����S)Nc3�B�K�|]}��|��V��dSr�)�rfind)r rg�ss �r�rqz_rfind.<locals>.<genexpr>s-�����+�+�a�q�w�w�q�z�z�+�+�+�+�+�+r�)r�)r~�choicess` r��_rfindr�s&��� �+�+�+�+�7�+�+�+� +� +�+r�c��d}t|��}|D]X}||z }|dkrK t|��}n #t$rtd|z���wxYw|dkr|dz }n |dvr|dz }||z }�Y|�dd���dd ��}d |z} t |��}n"#t $r}t||���d}~wwxYw|S) Nr�rJz/Literal ended unexpectedly (bad escaping): `%r`�\\�Uuxnftrz\"rfrhz\'z u'''%s''')�iter�next� StopIterationr*�replacer� SyntaxError)r~�wr�r�n2�to_eval�es r�� eval_escapingr�s"�� �A� �Q���A� � � �� �Q��� ��9�9� Z��!�W�W���� � Z� Z� Z�"�#T�WX�#X�Y�Y�Y� Z�����T�z�z��V� ����9�$�$��T� �� ��G�A�� � � �%����%�%�c�5�1�1�A��A�o�G�!� �� !� !���� �!�!�!��1�a� � � �����!���� �Hs!�2�A�B-�- C �7C�C c���t|t��sJ�|j}t|d��dz}|dksJ�||d�}t d�|D����s J|���|jdkrd|vrt d���|jdkrd|vrd |vrt d ���|d|�}|d|d kr |dd vsJ�|dd �}t|��}|d krt d|z���|jdkr-|�dd��}t|||j���S|jdkrt|||j���SJd���)Nz/"rrc3�(K�|] }|tvV��dSr�)� _RE_FLAGS)r �fs r�rqz&_literal_to_pattern.<locals>.<genexpr><s&����-�-�!�q�I�~�-�-�-�-�-�-r�r�rzz*You cannot put newlines in string literalsr�rCzLYou can only use newlines in regular expressions with the `x` (verbose) flagrz"/r�z$Empty terminals are not allowed (%s)r�rJ)�rawFz:Invariant failed: literal.type not in ["STRING", "REGEXP"]) r�rr�r��all�typer*r�r�rr)r��v� flag_startrXrCr~s r��_literal_to_patternr�6s��� �g�u� %� %�%�%� %�� �A���4����"�J� ��>�>�>�>� �j�k�k�N�E� �-�-�u�-�-�-� -� -�4�4�u�4�4� -��|�x���D�A�I�I��G�H�H�H��|�x���D�A�I�I�#�U�2B�2B��9�:�:� :� �+�:�+��A� �Q�4�1�R�5�=�=�Q�q�T�T�\�\�\� )� �!�B�$��A��a���A��B�w�w��A�G�K�L�L�L��|�x��� �I�I�f�d� #� #���!�U�� �6�6�6�6� ��� !� !���E�w�}�5�5�5�5�R�R�R�R�ur�c��eZdZd�Zd�ZdS)�PrepareLiteralsc�>�tdt|��g��S)NrQ)r�r�)r�r�s r�r�zPrepareLiterals.literalYs���)�1�'�:�:�;�<�<�<r�c�L�|j|jcxkrdksnJ�|jdd�}|jdd�}tt|����tt|����cxkrdksnJ�d|�d|�d�}t dt |��g��S)Nr�rrrvrDrxrQ)r�r�r"r�r�r)r�r��end�regexps r�r�zPrepareLiterals.range\s����z�S�X�1�1�1�1��1�1�1�1�1�1�� �A�b�D�!���i��"��o���=��'�'�(�(�C� �c�0B�0B�,C�,C�H�H�H�H�q�H�H�H�H�H�H�H�#�e�e�S�S�S�)���)�i��/�/�0�1�1�1r�N)r�r�r�r�r�r�r�r�r�r�Ws2������=�=�=�2�2�2�2�2r�r�r�c�"�t|d��S)Nr�)r)r�� flags_sets r��_make_joined_patternr�es�� �V�R� � � r�c�j�eZdZd�Zdeedefd�Zdeedefd�Zdefd�Zd�Z d �Z d �Z d S) �TerminalTreeToPatternc��|\}|Sr�r�)r��psr\s r�rQzTerminalTreeToPattern.patternis�� ����r��itemsr�c���|std��St|��dkr|dSd�d�|D����}t|d�|D����S)Nr�rrc3�>K�|]}|���V��dSr��� to_regexp�r r�s r�rqz2TerminalTreeToPattern.expansion.<locals>.<genexpr>ts*����7�7�A�!�+�+�-�-�7�7�7�7�7�7r�c��h|] }|j�� Sr��rXr�s r�rOz2TerminalTreeToPattern.expansion.<locals>.<setcomp>us��-E�-E�-E�!�a�g�-E�-E�-Er�)rr"rsr�)r�r�rQs r�r�zTerminalTreeToPattern.expansionmsm��� "��b�>�>� !� �u�:�:��?�?���8�O��'�'�7�7��7�7�7�7�7��#�G�-E�-E�u�-E�-E�-E�F�F�Fr��expsc���t|��dkr|dS|�d����dd�d�|D����z}t|d�|D����S) Nrrc�J�|j |j t|j�� fSr�)� max_width� min_widthr"r��rCs r��<lambda>z2TerminalTreeToPattern.expansions.<locals>.<lambda>}s��!�+��� �|�c�!�'�l�l�]� K�r�)r�z(?:%s)rLc3�>K�|]}|���V��dSr�r�r�s r�rqz3TerminalTreeToPattern.expansions.<locals>.<genexpr>s*����&C�&C��q�{�{�}�}�&C�&C�&C�&C�&C�&Cr�c��h|] }|j�� Sr�r�r�s r�rOz3TerminalTreeToPattern.expansions.<locals>.<setcomp>�s��-D�-D�-D�!�a�g�-D�-D�-Dr�)r"�sortrsr�)r�r�rQs r�r�z TerminalTreeToPattern.expansionswsx�� �t�9�9��>�>���7�N� � � �K�K� �L�L�L��c�h�h�&C�&C�d�&C�&C�&C�C�C�D��#�G�-D�-D�t�-D�-D�-D�E�E�Er�c��|dd�\}}|dkrot|��dkrdt|d��z}nXtt|dd���\}}||krtd|||fz���d||fz}nt|��dksJ�t d|����d|��|j��S) N�rl�z{%d}r!z{%d,%d}z(?:rp)r"r�r#r*rr�rX)r�r�r�rrrs r�r�zTerminalTreeToPattern.expr�s�����!��H� ��r� ��9�9��4�y�y�A�~�~��c�$�q�'�l�l�*����S�$�q�r�r�(�+�+���B���7�7�&�'P�TY�[]�_a�Sb�'b�c�c�c��"�b��)����t�9�9��>�>�>�>��y�u���'8�'8�'8�'8�"�"�=�u�{�K�K�Kr�c�4�|�|dgz��S)NrN)r�)r�r�s r�r�zTerminalTreeToPattern.maybe�s���y�y�����&�&�&r�c� �td���)NzBAliasing not allowed in terminals (You used -> in the wrong place))r*)r�r�s r�r�zTerminalTreeToPattern.alias�s���_�`�`�`r�c��|dS�Nrr��r�r�s r�r�zTerminalTreeToPattern.value�s ����t� r�N) r�r�r�rQrrr�r�r�r�r�r�r�r�r�r�r�hs����������G�t�G�}�G��G�G�G�G� F�t�G�}� F�� F� F� F� F� L�G� L� L� L� L�'�'�'�a�a�a�����r�r�c��eZdZd�ZdS)�ValidateSymbolsc�J�|\}t|ttf��sJ�|Sr�)r�r/r&r�s r�r�zValidateSymbols.value�s(�� ����!�d�F�^�,�,�,�,�,��r�N)r�r�r�r�r�r�r�r�r��s#����������r�r�c�F�td���|��S)z#Deepcopy tree `t` without recursionF)r5r&�r�s r��nr_deepcopy_treer��s�� #�E� *� *� 4� 4�Q� 7� 7�7r�c �X�eZdZUeeeeeeffed<eeeeedfee fed<eeed<deeeeedfee fdeeeeeeffdeeddfd�Z deee ee eeffd�Z dS) �Grammar� term_defs.rlr�r�Nc�0�||_||_||_dSr�)r�rlr�)r�rlr�r�s r�r�zGrammar.__init__�s��"���"����� � � r�c �V ���#�$�%�d��jD��}d��jD��}|D]_\}\}}|�� t|�d����}t |��dkr|djst d|z����`t��t��z�#�#fd�|D��} t| ��} t��t��z| z�#�#t|��z�#t��} g} d} | t |��kr�|| \}}}}| dz } t |��dkr�9|r|j rtd� ��nd}|| _|| _|| _�#�|��}| �|��}| �|||f��| t |��k��| | jz } t | ��t d �| D����ks Jd ���t)��}t+��}g}| D�]T}|\}}}|�|��|�|��}t/|��D�]\} \}}|r+|�d ��rt d |�d|�d����t3d�|D����}t5|��r1t7|��p t��}||_d�|D��}n|}|D]G}t;|t<��sJ�|jr'|r%|j rt;|t@��sJ�d|_!�HtEtG|��|| ||��}|�|������Vt tI|����t |��kr�tK|d���}|�&��D]}}t |��dkrh|dj'r/t dd�(d�|D����z���t d�|D����t |��ksJ��~ttS|����} t |��} d�|D���$�$d�|D��z�$tU|�$fd���\}}!|!D]}"tWj,d|"���t |��| krn�o�dkrEd�|D���%tU| ���%fd���\} }!|!rtWj,dd �|!D����| |�j-fS)!Nc�@�g|]\}\}}|t|��|ff��Sr��r�)r rr�r\s r�r z#Grammar.compile.<locals>.<listcomp>�s3��S�S�S�y�q�&�1�a�a�*�1�-�-�q�1�2�S�S�Sr�c�>�g|]\}}}}||t|��|f��Sr�r�)r rr\r��os r�r z#Grammar.compile.<locals>.<listcomp>�s2��U�U�U� ��1�a��a��,�Q�/�/��3�U�U�Ur�r�rrzTerminals cannot be empty (%s)c�h��g|].\}\}}|� t|��|��|����/Sr�)rr&)r r�� term_treer�� transformers �r�r z#Grammar.compile.<locals>.<listcomp>�sW���P�P�P�4��4� �8�Y�P�[��{�'<�'<�Y�'G�'G��R�R�P�P�Pr�Tr�c��h|]\}}}|�� Sr�r�)r r��_t�_os r�rOz"Grammar.compile.<locals>.<setcomp>�s��!A�!A�!A�<�4��R�$�!A�!A�!Ar�zWhoops, name collisionr^zRule za is marked for expansion (it starts with an underscore) and isn't allowed to have aliases (alias=rpc3�,K�|]}|tkV��dSr��r��r rCs r�rqz"Grammar.compile.<locals>.<genexpr>�s&����%C�%C�A�a��i�%C�%C�%C�%C�%C�%Cr�c�(�g|]}|tk� |��Sr�r�r�s r�r z#Grammar.compile.<locals>.<listcomp>�s�� C� C� C�q��F������r�Fc��|Sr�r�r�s r�r�z!Grammar.compile.<locals>.<lambda> s��A�r�zXRules defined twice: %s (Might happen due to colliding expansion of optionals: [] or ?)r�c3� K�|] }d|zV�� dS)z * %sNr�r�s r�rqz"Grammar.compile.<locals>.<genexpr>s&����4R�4R��Z�!�^�4R�4R�4R�4R�4R�4Rr�c�6�h|]}|j|j|jf��Sr�)r��orderry)r �rs r�rOz"Grammar.compile.<locals>.<setcomp>s%��L�L�L�!���!�'�1�9� =�L�L�Lr�c�f�h|].}|jD]$}t|t��r ||jk�"|��%�/Sr�)r�r�r%�origin)r r�r~s r�rOz"Grammar.compile.<locals>.<setcomp>sT��/�/�/��%&�[�/�/� !�)�!�[�9�9�/�!"�Q�X� � ��!.� � � r�c�,�h|]}t|����Sr�)r%�r r~s r�rOz"Grammar.compile.<locals>.<setcomp>s��9�9�9�a�;�q�>�>�9�9�9r�c���|j�vSr�)r�)r�� used_ruless �r�r�z!Grammar.compile.<locals>.<lambda>s���Q�X�Yc�Mc�r�zUnused rule: %srFc�Z�h|](}|jD]}t|t���|j���)Sr�)r�r�r$r�)r r�r�s r�rOz"Grammar.compile.<locals>.<setcomp>&sO��=�=�=�Q�*+�+�=�=�%&�$.�q�(�$;�$;�=�!�&�=�=�=�=r�c�D��|j�vp|j�jvp|j�vSr�)r�r�)r�r��terminals_to_keep� used_termss ���r�r�z!Grammar.compile.<locals>.<lambda>)s?���1�6�Z�CW�DP�[\�[a�ei�ep�[p�DP�tu�tz�P�uP�r�zUnused terminals: %sc��g|] }|j�� Sr�rG�r r�s r�r z#Grammar.compile.<locals>.<listcomp>+s��5M�5M�5M��a�f�5M�5M�5Mr�).r�rl�list� find_datar"r8r*r�r�rJr�rjr�r�r"r�r�r&r�r�rAr*r6r7r��tuple�anyr� empty_indicesr�r&�is_termr$r�r#r%r>r(�valuesr�rsrrr�debugr�)&r�r�r�r�rlr�r�r�r�rS�anon_tokens_transf� ebnf_to_bnf�rulesr�rx� rule_treeryr�r��res�rule_tree_to_text� simplify_rule�compiled_rules� rule_contentr�r�r�� exp_optionsr�r�� duplicates�dupsrg�unusedr�r�r�r�s&` ` @@@r��compilezGrammar.compile�s{�������T�S�D�N�S�S�S� �U�U�d�n�U�U�U� �,5� L� L� '�D�'�9�h�� ���i�1�1�+�>�>�?�?�J��:���!�#�#�J�q�M�,B�#�"�#C�d�#J�K�K�K��%�'�'�*?�*A�*A�A� �P�P�P�P�8A�P�P�P� �2�)�<�<��%�'�'�/�*;�*;�;�>P�P� � �~�i�0�0�0� �"�m�m� ��� ���#�i�.�.� � �/8��|� ,�D�&�)�W� ��F�A��6�{�{�a����@G�m�G�Lc�m�;�t�<�<�<�<�im�L�'3�K� $�!%�K� �.:� � +��(�(��3�3�D�#�-�-�d�3�3�C� �L�L�$��W�-� .� .� .��#�i�.�.� � � ��&�&���5�z�z�S�!A�!A�5�!A�!A�!A�B�B�B�B�B�D\�B�B�B�+�,�,��,�.�.� �%'��!� ,� ,�L�".� �D�$�� � � �� %� %� %�*�4�4�T�:�:�J�)2�:�)>�)>� ,� ,�%��%�I�u��e�T�_�_�S�1�1�e�&�,�X\�X\�X\�^c�^c�^c�(d�e�e�e� %�%C�%C��%C�%C�%C� C� C� ��}�%�%�*�"&�w�-�-�"@�;�=�=�K�0=�K�-� C� C�I� C� C� C�I�I�")�K�$�/�/�C�%�c�6�2�2�2�2�2��{�/�{�/�{�7R�/�)�#�x�8�8�8�8�8�).�����K��-�-�y�!�U�K�P�P���%�%�d�+�+�+�+�% ,�* �s�>�"�"� #� #�s�>�':�':� :� :�!�.�+�+�>�>�J�"�)�)�+�+� [� [���t�9�9�q�=�=��A�w�(�T�*�,H�-/�W�W�4R�4R�T�4R�4R�4R�-R�-R�,S�T�T�T��L�L�t�L�L�L�M�M�QT�UY�QZ�QZ�Z�Z�Z�Z��"�*�^�"<�"<�=�=�N� ��N�#�#�A�/�/�^�/�/�/�J� �9�9�5�9�9�9� 9�J�%2�>�Cc�Cc�Cc�Cc�%d�%d� "�N�F�� 3� 3��� �.��2�2�2�2��>�"�"�a�'�'�� � �� #� #�=�=�.�=�=�=�J�!.�i�:P�:P�:P�:P�:P�:P�!Q�!Q� �I�v�� O�� �3�5M�5M�f�5M�5M�5M�N�N�N��.�$�+�5�5r�)r�r�r�rr r(r/r��__annotations__r"r�rr#r�r�r�r�r�r��sJ��������E�#�u�T�3�Y�/�/�0�1�1�1�1��E�#�u�S�#�X���k�A�B�C�C�C�C� ��I�����$�u�S�%��S��/�4��-T�'U�"V��cg�hm�nq�sx�y}�@C�zC�tD�oD�iE�dF��PT�UX�PY��^b����� {6�5��k�9J�D�QU�J�X\�]`�Xa�9a�3b�{6�{6�{6�{6�{6�{6r�r��PackageResourcez pkg_name pathc��eZdZUdZeed<eeed<d dedeeddfd�Zd�Zd e dee fd ede e effd �Z dS) �FromPackageLoadera� Provides a simple way of creating custom import loaders that load from packages via ``pkgutil.get_data`` instead of using `open`. This allows them to be compatible even from within zip files. Relative imports are handled, so you can just freely use them. pkg_name: The name of the package. You can probably provide `__name__` most of the time search_paths: All the path that will be search on absolute imports. �pkg_name� search_paths�r�r�Nc�"�||_||_dSr�)rr)r�rrs r�r�zFromPackageLoader.__init__As�� �� �(����r�c�P�t|��j�d|j�d|j�d�S)Nrn�, rp)r�r�rrr�s r��__repr__zFromPackageLoader.__repr__Es-��#�D�z�z�2�2�2�D�M�M�M�4�CT�CT�CT�U�Ur�� base_path� grammar_pathc��|�|j}n;t|t��r|j|jkrt ���|jg}d}|D]�}t j�||��} tj |j|��}t|j|��|r|� ��ndfcS#t$r }|}Yd}~�}d}~wwxYwt d��|�)Nr�z"Cannot find grammar in given paths) rr�rr�IOError�path�osrs�pkgutil�get_data�decode) r�r r �to_try�errr� full_path�textr�s r��__call__zFromPackageLoader.__call__Hs�� � ��&�F�F��i��9�9� �Y�=O�SW�S`�=`�=`��i�i���n�%�F���� b� b�D��� � �T�<�8�8�I� b�(/�(8��� �(R�(R�� '�t�}�i�@�@�TX�C`�4�;�;�=�=�=�^`�a�a�a�a�� � � � ������������ ���� �:�;�;��Ds�-B6�6 C �C�C )r) r�r�r�r_r(r�rr�r r rr rr�r�r�rr3s�����������M�M�M��3�-����)�)��)�H�S�M�)�T�)�)�)�)�V�V�V�E�%��c�?�(B�"C�E�SV�E�[`�ap�ru�au�[v�E�E�E�E�E�Er�r�larkc �� d}|���D]�\}}|��|�d��D]�}|j\}t|t��rt d|�d|�d����t|t ��rE ||j}n%#t$rt d|jz���wxYw|�J�||jd<d}��t|t��sJ�����|sn��|���D]R\}}|rK|jD]C}d �|� ��D��} t|��| vrt d |z����D�SdS) NTFr�z'Rules aren't allowed inside terminals (z in rpz!Terminal used but not defined: %src�,�g|]}t|����Sr�)�idr�s r�r z+resolve_term_references.<locals>.<listcomp>�s��<�<�<��r�!�u�u�<�<�<r�zNRecursion in terminal '%s' (recursion is only allowed in rules, not terminals)) r�r�r8r�r%r*r$r�r�r/� iter_subtreesr) � term_dict�changedr�� token_tree�exp�item� term_valuer�r9�idss r��resolve_term_referencesr$ds������ )��� 1� 1� 2� 2� �D�*��!��!�+�+�G�4�4� 2� 2��� ����d�K�0�0� 2�&�,�]a�]a�]a�cg�cg�cg�'h�i�i�i���h�/�/� 2�\�%.�t�y�%9� � ��#�\�\�\�*�+N�QU�QZ�+Z�[�[�[�\����%�1�1�1�&0�C�L��O�"�G�G�%�d�D�1�1�1�1�1�1� 2�� � �)�, �o�o�'�'�@�@� ��d� � @��� @� @��<�<�e�&9�&9�&;�&;�<�<�<���d�8�8�s�?�?�&�'w�z~�'~����#�� @�@s � B�"B1c��t|t��sJ�|���r$t||�d�����nt |��S�Nr^rW)r�r(�isupperr$r�r%�r~s r��symbol_from_strcaser)�sP�� �a�� � ��� �89� � � � � W�8�A�!�,�,�s�"3�"3� 4� 4� 4� 4��UV���Wr�c��eZdZd�Zd�ZdS)�PrepareGrammarc�d�tt|��|�d�����Sr&)r$r(r��r�r�s r�r�zPrepareGrammar.terminal�s'����D� � �d�o�o�c�.B�.B�C�C�C�Cr�c�*�t|j��Sr�)r%r�r-s r�r�zPrepareGrammar.nonterminal�s���4�:�&�&�&r�N)r�r�r�r�r�r�r�r�r+r+�s5������D�D�D�'�'�'�'�'r�r+c�Z�|jdksJ�d�|�d��D��S)Nr�c�N�h|]"}|�d���D] }|j�� �#S)c�,�t|t��Sr�)r�r&r�s r�r�z._find_used_symbols.<locals>.<setcomp>.<lambda>�s��Z��6�-B�-B�r�)� scan_valuesr�)r rCr�s r�rOz%_find_used_symbols.<locals>.<setcomp>�sW�� E� E� E�q��]�]�#B�#B�C�C� E� E�� �F� E� E� E� Er�r�)r-r�r.s r��_find_used_symbolsr3�sG�� �9� � $� $� $� $� E� E�D�N�N�;�7�7� E� E� E�Er�c��� tjS#t$r�d�t���D��}d�t ���D��}d�|D��}t |t�����}ddl }t||gd���}t||dg��}d|_ d|_ t||d��t_tjcYSwxYw) Nc�N�g|]"\}}t|t|������#Sr�)rr)r r�r�s r�r z_get_parser.<locals>.<listcomp>�s.��^�^�^�[�T�5�[��y��'7�'7�8�8�^�^�^r�c ��g|]>\}}|�d��|t|�d�����f��?S)rN)�expand1)�lstripr"r�)r r�rCs r�r z_get_parser.<locals>.<listcomp>�sV��.�.�.��D�!��+�+�c�"�"�A�{�4�?�?�3�;O�;O�'P�'P�'P�Q�.�.�.r�c ��g|]W\}}}t|��D]A\}}tt|��d�|���D��|d|����B�XS)c�,�g|]}t|����Sr�)r)r�s r�r z*_get_parser.<locals>.<listcomp>.<listcomp>�s!��&Q�&Q�&Q�!�':�1�'=�'=�&Q�&Q�&Qr�N)r7r#r%�split)r r��xsr�r�rCs r�r z_get_parser.<locals>.<listcomp>�s���B�B�B��Q��A�9�R�=�=�B�B�+/�1�a��k�!�n�n�&Q�&Q�q�w�w�y�y�&Q�&Q�&Q�ST�VZ�\]�^�^�B�B�B�Br�r)r�r�rKr��basic�lalr)� _get_parser�cache�AttributeError� TERMINALSr��RULESrr��create_callback�rer r!� lexer_type� parser_typer)rSr��callbackrE� lexer_conf� parser_confs r�r?r?�s��!�� � �� �!�!�!�^�^�I�O�O�L]�L]�^�^�^� �.�.�$�{�{�}�}�.�.�.��B�B�!&�B�B�B��$�E�2�.�.�>�>�@�@��� � � ��y�"�.L�.L�.L�M�M� � ���7�)�<�<� � '� ��"(� ��+�J� �T�J�J� ��� � � � �!���s� �C!C2�1C2zIncorrect type of valueza: 1 zUnclosed parenthesisza: ( zUnmatched closing parenthesis)za: ) za: [) za: (] z5Expecting rule or terminal definition (missing colon))za zA za-> zA-> za A z#Illegal name for rules or terminalszAa: zAlias expects lowercase namez a: -> "a" zUnexpected colon)za:: za: b: za: B: za: "a": zMisplaced operator)za: b??za: b(?)za:+ za:? za:* za:|* z;Expecting option ("|") or a new rule or terminal definitionza:a () z"Terminal names cannot contain dotszA.B z%Expecting rule or terminal definitionz"a" z%import expects a namez %import "a" z%ignore expects a valuez%ignore %import c�^�|�|td���}|r|Sd|jvrdSdS)NT)� use_acceptsr�zExpecting a value)�match_examples�GRAMMAR_ERRORS�expected)�parser��errors r��_translate_parser_exceptionrR�sD��� � ���D� �I�I�� � '��L� ��� #� #�&�&�$� #r�c ��� t���|dz|��}n�#t$r:}|�|��}t d|j|j||fz���d}~wt$rb}|�|��}tt��j|��}|r$t |�d|j�d|j�d|������d}~wwxYwt��� |��S)Nrzz1Unexpected input at line %d column %d in %s: %sz , at line z column z ) r?rPr+� get_contextr*�line�columnr,rRr+r&)rr�r�r�r��contextrQs r��_parse_grammarrX�s�� ��}�}�"�"�4�$�;��6�6���� �>�>�>��-�-��%�%���P��F�A�H�d�G�<�=�>�>� >����� �����-�-��%�%��+�K�M�M�,?��C�C�� � f��5�5�5�!�&�&�&�RS�RZ�RZ�RZ�\c�\c�d�e�e� e� ����� ���� � � � %� %�d� +� +�+s!�%(� C�5A'�' C�4AC�Cc� �t|t��ratt��j|��}|r|Sd�|jp|j��}dt|j ���d|�d�St|��S)NrzUnexpected token z. Expected one of: {rt) r�r,rRr?rPrs�acceptsrOr(�token)rQ�error2rOs r�� _error_reprr]�s����%��)�)��,�[�]�]�-@�%�H�H�� � ��M��9�9�U�]�<�e�n�=�=���?B�5�;�?O�?O�?O�?O�QY�QY�QY�Z�Z��5�z�z�r�c�`�d�}td|fg|��D]\}}||��r||fcS�dS)Nc3��K�|\}}|���D]B}t|d��} |�|��}||fz|fV��3#t$rY�?wxYwdS)Nr�)rr� feed_tokenr-)�noderr\�choicer��new_ps r��expandz*_search_interactive_parser.<locals>.expand�s��������a��i�i�k�k� .� .�F��f�b�!�!�A� .�� � �Q�����f�Y�&��-�-�-�-�-��� � � ��� ����  .� .s�A� A�Ar�)r)�interactive_parser� predicaterdrr\s r��_search_interactive_parserrg�se�� .� .� .�"�B�(:�#;�"<�f�E�E�����a� �9�Q�<�<� ���7�N�N�N� ��r�rc����g��fd�}t���|dz||���}t�d���}d�|���D����D]}d|d_��S)Nc�P����|t|��f��t|j���d���\}}|D]*}|j�t |d�����+|j�t dd����dS)Nc�.�d|���vS)Nr�)r)r\s r�r�z7find_grammar_errors.<locals>.on_error.<locals>.<lambda>�s��bg�kl�kt�kt�kv�kv�bv�r�r�r�rzT)r�r]rgre� as_immutabler`r)r�� token_pathr^� token_type�errorss �r��on_errorz%find_grammar_errors.<locals>.on_error�s����� � �q�+�a�.�.�)�*�*�*�3�1�3G�3T�3T�3V�3V�Xv�Xv�w�w� � �A�$� C� C�J� � � +� +�E�*�b�,A�,A� B� B� B� B� ��'�'��e�T�(:�(:�;�;�;��tr�rz)roc��|djSr�)rU)r�s r�r�z%find_grammar_errors.<locals>.<lambda>�s ���!�� �r�c��g|] }|d�� S)rr�)r �els r�r z'find_grammar_errors.<locals>.<listcomp>�s�� 6� 6� 6��b��e� 6� 6� 6r�r)r?rPr(r�re)rr�ro�_tree�errors_by_liner�rns @r��find_grammar_errorsru�s���� �F������ �M�M� � ��t� �U�X� � F� F�E��f�&9�&9�:�:�N� 6� 6�n�3�3�5�5� 6� 6� 6�F� �'�'��"&��!���� �Mr�c��������fd�}|S)Nc���|�vr �|}n$|ddkrd��d|dd���}n��d|��}�� �|��}|S)Nrr^�__rr�)r~r<� base_mangler�s ���r��manglez_get_mangle.<locals>.manglesh��� ��<�<��� �A�A���t�s�{�{�{�!'����1�2�2���/��� &�����*�� � "�� �A���A��r�r�)r�r<ryrzs``` r�� _get_mangler{s/����� � � � � � � � �Mr�c���|�|St|��}|���D]N}t|j��D]7\}}t |t ��r|�|��|j|<�8�O|Sr�)rrr7r8r�r&�renamed)r rzr�r�rgs r��_mangle_definition_treer~s��� �~�� � �3�-�-�C� � � � � �2�2���a�j�)�)� 2� 2�D�A�q��!�V�$�$� 2� !� � �&� 1� 1�� �1� �� 2� �Jr�c �(�|jr8|j\}d|v}|r$|�d��rtd���d|v}nd}d}|jr|j\}t|��} nd} |�d�|jD��}|||t ||| |r|nd���fS)NrNr^z4Inlined rules (_rule) cannot use the ?rule modifier.rPFc��g|] }|j�� Sr�)r�r�s r�r z$_make_rule_tuple.<locals>.<listcomp>0s��3�3�3�a�!�'�3�3�3r�)r��template_source)r8r�r*r�r") �modifiers_treer�rx� priority_treer��mr7r�r\r�s r��_make_rule_tupler�s������ � $�����(�� � W�t���s�+�+� W��U�V�V� V���(���������� � #����q�6�6����� ��3�3�6�?�3�3�3�� ���[��'�T\�JP�BZ�$�$�VZ�&]�&]�&]� ]�]r�c��eZdZdd�ZdS)� Definitionr�Nc�X�||_||_t|��|_||_dSr�)r�r�r�rxry)r�r�r�rxrys r�r�zDefinition.__init__7s(���� ��� ��F�m�m�� ��� � � r��r�N)r�r�r�r�r�r�r�r�r�6s(�����������r�r�c ���eZdZUeed<eeeefed<e eefed<e ee fed<eeed<d!dede eeeefde e eefddfd �Z d �Z d �Zd"dd �d�Zd"d�Zd�Zd�Zd�Zd#dedede eegefddfd�Zd�Zd$deedfde ede eefde eegefddf d�Zd%d�Zdefd �ZdS)&�GrammarBuilder�global_keep_all_tokens� import_paths� used_files� _definitions� _ignore_namesFNr�c�T�||_|pg|_|pi|_i|_g|_dSr�)r�r�r�r�r�)r�r�r�r�s r�r�zGrammarBuilder.__init__Fs9��&<��#�(�.�B���$�*����35���(*����r�c���i}t|d���D]N\}}|dkrdnt|��}||d|z<d|x|d|z<}|���|d|z<�Ot|jdi|�����) Nr�r�r�r�)r�r�r��Typer�)r7r(�titler*�format) r�r��msgrdr�r�r��postfix�lowercase_types r��_grammar_errorzGrammarBuilder._grammar_errorNs����� ��a�0�0�0� <� <�G�A�t���F�F�b�b��A���G�%)�D��'�!� "�6J�7�6S� S�D��'�!� "�^�%3�%9�%9�%;�%;�D��'�!� "� "��:�3�:�-�-��-�-�.�.�.r�c��|r:|�d}nxt|t��stdt|�������nC|�t ��}n$t|t��std���|jrd|_|S)Nrz@Terminal require a single int as 'options' (e.g. priority), got z1Rules require a RuleOptions instance as 'options'T)r�r�r*r�r"r�r�)r�r�rys r��_check_optionszGrammarBuilder._check_optionsWs��� � /���������-�-� |�"�l�ko�pw�kx�kx�kx�#z�{�{�{� |���%�-�-������5�5� X�"�#V�W�W�W��*� /�*.��'��r�r�)r�c �2�||jvr|s|�|d|��n|r|�|d|��|�d��r|�|d|��t||||�||����|j|<dS)Nz&{Type} '{name}' defined more than oncez+Cannot override a nonexisting {type} {name}rxzDNames starting with double-underscore are reserved (Error at {name}))r�r�r�r�r�)r�r�r�r rxryr�s r��_definezGrammarBuilder._definegs��� �4�$� $� $�� ]��#�#�G�-U�W[�\�\�\�� � ^� � � ��)V�X\� ]� ]� ]� �?�?�4� � � w� � � ��)o�qu� v� v� v�",�W�c�6�4�CV�CV�W^�`g�Ch�Ch�"i�"i���$���r�c���||jvr|�|d|��|j|}||jkr|�|d|��t|��|jkr|�|d|��|j�|�|d|��|j}t |t��r |jdksJ�|j � d|��dS)Nz6Can't extend {type} {name} as it wasn't defined beforezHCannot extend {type} {name} - one is a terminal, while the other is not.z6Cannot extend {type} with different parameters: {name}z,Can't extend {type} {name} - it is abstract.r�r) r�r�r�r�rxr�r�r/r-r8�insert)r�r�r�r rxry�d�bases r��_extendzGrammarBuilder._extendss��� �t�(� (� (� � � ��)a�cg� h� h� h� � �d� #�� �a�i� � � � � ��)s�uy� z� z� z� ��=�=�A�H� $� $� � � ��)a�cg� h� h� h� �6�>� � � ��)W�Y]� ^� ^� ^��v���$��%�%�C�$�)�|�*C�*C�*C�C� � ���Q��$�$�$�$�$r�c�~�t|t��r|j�|��dSt|t��sJ�|}|jdkr�t |j��dkr|j\}|jdkrkt |j��dkrS|j\}|jdkr?|j\}t|t��r!|j�|j ��dSdt |j��z}|j�|��td|t���|j |<dS)Nr�rr�r�z __IGNORE_%dT)ry) r�r(r�r�r/r-r"r8r$r�r�r'r�)r�� exp_or_namer��t2r!r�s r��_ignorezGrammarBuilder._ignore�s4�� �k�3� '� '� Z� � � %� %�k� 2� 2� 2� 2� 2��k�4�0�0� 0� 0�0��A��v��%�%�#�a�j�/�/�Q�*>�*>��j����7�K�'�'�C�� �,<�,<��,A�,A��K�F�D��y�G�+�+� $� ���%�d�H�5�5�#� �.�5�5�d�i�@�@�@�"�F� �#�d�&8�"9�"9�9�D� � � %� %�d� +� +� +�&0��q�BX�&Y�&Y�&Y�D� �d� #� #� #r�c��t|j��dkr |j\}}n |j\}d}t|t��r9t |j��}|j}t t ||����}nVt |jdd���}|s|j\}td|z���|jd}|j|p|ji}|j dkrd} n�|dkrH tj � tjdj��} n#t $rd} YnwxYw|} | ryt| t"��r>t#| jtj �| j ��d��} nTtj �| ��d} n.tj � tj j��} || |fS)Nrrz&Nothing was imported from grammar `%s`r��<string>�__main__r)r"r8r�r/r�rtrur*r�r-rr�abspath�sys�modules�__file__rArrr;�curdir) r��stmt� grammar_name� path_node�arg1� dotted_pathrdr<r�r � base_files r��_unpack_importzGrammarBuilder._unpack_import�s��� �t�}� � �� !� !�"�m�O�I�t�t���J�I��D� �d�D� !� !� 9�� � 2�3�3�K��M�E��3�u�e�,�,�-�-�G�G�� � 2�3�B�3� 7�8�8�K�� T�!�*���"�#K�d�#R�S�S�S��%�b�)�D��z�D�L�D�#7�8�G� �>�\� )� )��I�I��z�)�)�%� "����� �J�0G�0P� Q� Q�I�I��%�%�%�%� $�I�I�I�%����)� �� <��i��9�9�<� /� �0B�B�G�M�M�R[�R`�Da�Da�bc�Dd� e� e�I�I� "�� � �i� 8� 8�� ;�I�I��G�O�O�B�G�N�;�;� ��I�w�.�.s�(4D� D,�+D,c�|��|jdkrt|j�\}}}}d}n\|jdj}d}t |j��dkrt |jd��nt }|jd}d}��&t�fd �|D����}�|��}t|���}|||||fS) Nr�Frr�r�rrTc3�.�K�|]}�|��V��dSr�r�)r r\rzs �r�rqz4GrammarBuilder._unpack_definition.<locals>.<genexpr>�s+�����5�5��6�6�!�9�9�5�5�5�5�5�5r�) r-r�r8r�r"r�r'r�r~)r�r�rzr�rxr �optsr�s ` r��_unpack_definitionz!GrammarBuilder._unpack_definition�s���� �9�� � �&6�� �&F� #�D�&�#�t��G�G��=��#�)�D��F�,/�� �,>�,>�!�,C�,C�3�t�}�Q�'�(�(�(�I_�D��-��#�C��G� � ��5�5�5�5�f�5�5�5�5�5�F��6�$�<�<�D�%�c�6�2�2���W�c�6�4�/�/r��<?>� grammar_textr�rzc��t||��}i}|jD]�}|jdkry|�||��\}}} ||\} } || ks Jdd�|��z���| �| ���o#t $r || f||<Y��wxYw��|���D] \}\}} |�||| |���!|jD�]B}|jdvr|j |� ||����+|jdkr+|j\} |j |� | |��ddi��a|jdkr(|j\} |j |� | |�����|jdkr|�|j |j���|jd krq|jD]g} t| t��s J| ���t| t��}|�| j}n|| j��}|� ||d���h��-|jdkr��:J|���d �|j���D��}t%|��dS) Nr�zInconsistent base_path for %s.r:)r�r�r�Tr�r�r�Fc�2�i|]\}}|j� ||j��Sr�)r�r�)r r�r�s r�rRz/GrammarBuilder.load_grammar.<locals>.<dictcomp>s7�� � � ���a��y� �d�A�F� � � r�)rXr8r-r�rs�updater�r�� do_importr�r�r�r�r�r&r$r�r�r$)r�r�r�rzr��importsr�r�r r<�import_base_path�import_aliasesr�r�r�r�r�s r�� load_grammarzGrammarBuilder.load_grammar�s����l�L�9�9��OQ���M� >� >�D��y�H�$�$�26�2E�2E�d�L�2Y�2Y�/� �Y��>�7>�{�7K�4�$�n�$�(8�8�8�8�:Z�]`�]e�]e�fq�]r�]r�:r�8�8�8�"�)�)�'�2�2�2�2���>�>�>�+4�g�+=�G�K�(�(�(�>���� %�29����� D� D� -�K�-�)�W� �N�N�;� �7�F� C� C� C� C��M� #� #�D��y�,�,�,��� �d�5�5�d�F�C�C�D�D�D���j�(�(��]����� �d�5�5�a��@�@�P�4�P�P�P�P���h�&�&��]����� �d�5�5�a��@�@�A�A�A���h�&�&��>� �D�L�$�-�0�0����i�'�'�"�m�6�6�F�%�f�f�5�5�=�=�v�=�=�5�(���:�:�G��~�%�{���%�v�f�k�2�2���L�L��w��5�5�5�5�6���h�&�&��"�d�"�"�u� � ��,�2�2�4�4� � � � � � �*�*�*�*�*s�AB � B�Bc�����fd�}tt||������fd��j���D���_dS)Nc��� �j|}n#t$rgcYSwxYw|jrgSt|j��t |j��z Sr�)r�r�r�r3r�r>rx)r�r�r�s �r��rule_dependenciesz8GrammarBuilder._remove_unused.<locals>.rule_dependencies sg��� ��%�f�-����� � � �� � � � �����y� �� �%�a�f�-�-��A�H� � �=� =s � � � c�$��i|] \}}|�v� ||�� Sr�r�)r �kr��_useds �r�rRz1GrammarBuilder._remove_unused.<locals>.<dictcomp>s%���V�V�V�d�a��1�PU�:�:�Q��:�:�:r�)r>rr�r�)r��usedr�r�s` @r��_remove_unusedzGrammarBuilder._remove_unused sh���� >� >� >� >� >��C��/�0�0�1�1��V�V�V�V�d�.?�.E�.E�.G�.G�V�V�V����r�r�.r r<ryc ���|sJ�td�|��||��}tjj|�tz}|j|�|gngzt gz}|D�]s} t|��r|||��\} } n]tj�||��} t| d���5} | � ��} ddd��n #1swxYwYt| ��} |j � | | ��| krtd���| |j | <t|j|j|j ��} | �| | |��| �t%||����| jD]!}||jvrt)d|�d|�d�����"|jjd i| j��dS#t,$rY��qwxYwt|d���Jd |�d ����) Nrx�utf8��encodingz)Grammar file was changed during importingzCannot import 'z' from 'z': Symbol already defined.FzCouldn't import grammar zP, but a corresponding file was found at a place where lark doesn't search for itr�)r{rsrr�EXTr�� stdlib_loader�callable�open�read� sha256_digestr��get� RuntimeErrorr�r�r�r�r#r�r*r�r )r�r�r r<ryrzr r�source� joined_pathrr��h�gbr�s r�r�zGrammarBuilder.do_imports������{��T�Y�Y�{�3�3�W�k�J�J���w�|�[�1�C�7� ��"�Y�5J�y�k�k�PR�S�Wd�Ve�e��� X� X�F� ��F�#�#�(�(.��y�,�(G�(G�%�K���"$�'�,�,�v�|�"D�"D�K��k�F�;�;�;�(�q� �v�v�x�x��(�(�(�(�(�(�(�(�(�(�(����(�(�(�(� "�$�'�'���?�&�&�{�A�6�6�!�;�;�&�'R�S�S�S�/0��� �,�#�D�$?��AR�TX�Tc�d�d������k�6�:�:�:��!�!�#�f�g�"6�"6�7�7�7��O�{�{�D��t�0�0�0�*�l�fj�fj�fj�lx�lx�lx�+y�z�z�z�1�)��!�(�;�;�2�?�;�;�;�����!� � � ��� ����& ��� /� /� /� /� X� X�KV�KV�KV�X� X� X�5s7�"AG�2C� G�C �G�C �G� G�Gc �&�|j���D�]�\}}|j}|j}t |��D]F\}}||jvrt d|�d|�d����||d|�vrt d|�d|�d�����G|��m|�d��D]�}|jdj}|jdd�} ||vr�||jvr|� |j d|z|��t| ��t|j|j��krRt|j|j��t| ��} } |� |j d | �d | �d �||����t|��D],}||jvr!||vr|� |j d ||���-���t|j���|j��s9t d t|j��t|j��z z���dS)Nz'Template Parameter conflicts with rule z (in template rpzDuplicate Template Parameter r�rrz5Template '%s' used but not defined (in {type} {name})z=Wrong number of template arguments used for {name} (expected z, got z) (in {type2} {name2})z9{Type} '{name}' used but not defined (in {type2} {name2})z8Terminals %s were marked to ignore but were not defined!)r�r�rxr�r7r*r�r8r�r�r�r"r3r>� issupersetr�) r�r�r�rxr r�r\�tempr�r�rO�actuals r��validatezGrammarBuilder.validate>s����(�.�.�0�0� {� {�G�D�!��X�F��&�C�!�&�)�)� g� g���1���)�)�)�&�,�gh�gh�gh�jn�jn�jn�'o�p�p�p���r��r� �?�?�&�,�]^�]^�]^�`d�`d�`d�'e�f�f�f�#��{��� � �&6�7�7� z� z���m�A�&�+���}�Q�R�R�(���f�$�$��$�"3�3�3��+�+�A�I�7n�qt�7t�vz�{�{�{��4�y�y�C��(9�#�(>�(E�$F�$F�F�F�+.�t�/@��/E�/L�+M�+M�s�SW�y�y�&���+�+�A�I�I�\d�\d�\d�fl�fl�fl�8n�or�tx�z�z�z��*�#�.�.� {� {���d�/�/�/�C�v�4E�4E��'�'�� �3n�ps�uy�z�z�z�� {��4�$�%�%�0�0��1C�D�D� P��Y�]`�ae�as�]t�]t�wz�{�|M�xN�xN�^N� O�P�P� P� P� Pr�c�d�|���g}g}|j���D]i\}}|j|j|j}}}|jr/t|��dksJ�|�|||ff���P|�||||f���jt|||j ��Sr�) r�r�r�rxr�ryr�r"r�r�r�)r�rlr�r�r�rxr rys r��buildzGrammarBuilder.build^s��� � � ����� �� ��(�.�.�0�0� ?� ?�G�D�!�%&�X�q�v�q�y�'�S�V��y� ?��6�{�{�a�'�'�'�'�� � �$��g��!7�8�8�8�8�� � �$���W�!=�>�>�>�>��y�)�T�-?�@�@�@r�)FNNr�)r�Nr�)r�N)r�r�r�r�r�rr r(r r r�r r�r�r�r�r�r�r�r�r�r�r r�r�r�r�r�r�r�r�r�=s�������� � � � ��u�S�(�]�+�,�,�,�,��S�#�X������s�J��'�'�'�'���9����+�+�t�+��RV�W\�]`�bj�]j�Wk�Rl�Im�+�AI�JN�OR�TW�OW�JX�AY�+�cg�+�+�+�+�/�/�/� � � � j�u� j� j� j� j� j�%�%�%�%�(Z�Z�Z�*%/�%/�%/�N0�0�0�(2+�2+��2+�C�2+�x�X`�be�af�hk�ak�Xl�Om�2+�w{�2+�2+�2+�2+�j W� W� W�!X�!X�U�3��8�_�!X��#��!X�Y]�^a�cf�^f�Yg�!X�v~�@H�JM�IN�PS�IS�@T�wU�!X�_c�!X�!X�!X�!X�HP�P�P�P�@ A�w� A� A� A� A� A� Ar�r�c�N�|���D�]\}}d}t|t��r]tj�|��r>t |d���5}|���}ddd��n #1swxYwYnbt|t��rMtt��5tj |�� d��}ddd��n #1swxYwY|���t|��}||krtjd|z��dS��dS)Nr�r�zutf-8z"File %r changed, rebuilding ParserFT)r�r�r(rr�existsr�r�rrr rrrr�r�info)� file_hashesr�oldrr��currents r��verify_used_filesr�ms��� �&�&�(�(��� ��c��� �d�C� � � ?�R�W�^�^�D�%9�%9� ?��d�V�,�,�,� ���v�v�x�x�� � � � � � � � � � � ���� � � � �� ��o� .� .� ?��'�"�"� ?� ?��'��.�5�5�g�>�>�� ?� ?� ?� ?� ?� ?� ?� ?� ?� ?� ?���� ?� ?� ?� ?� �<� ���%�%�� �'�>�>� �K�<�t�C� D� D� D��5�5� � �4s$�"B�B � B �8"C&�&C* �-C* c��td|��}|�|d��t|j�����S)zXReturns a list of paths to the lark grammars imported by the given grammar (recursively)Fr�)r�r�r�r��keys)�grammarr��builders r��list_grammar_importsr�sD���U�L�1�1�G� ����*�-�-�-� ��"�'�'�)�)� *� *�*r�c��t||��}|�||��|���|jfSr�)r�r�r�r�)r�r�r�r�r�s r�r�r��s>���3�\�B�B�G� ����&�)�)�)� �=�=�?�?�G�.� .�.r�r~c� �tjdkr;tj|�d��d������Stj|�d�������S)z�Get the sha256 digest of a string Supports the `usedforsecurity` argument for Python 3.9+ to allow running on a FIPS-enabled system. )r�� r�F)�usedforsecurity)r�� version_info�hashlib�sha256�encode� hexdigestr(s r�r�r��sg��  ��6�!�!��~�a�h�h�v�.�.��F�F�F�P�P�R�R�R��~�a�h�h�v�.�.�/�/�9�9�;�;�;r�r�r�)xr_r��os.pathrr�� collectionsrrrr�astr� contextlibr�typingrr r r r r rr�utilsrrrrrrrr�lexerrrrrr�parse_tree_builderr�parser_frontendsr�commonr r!r�r"r#r$r%r&r'r(r)� exceptionsr*r+r,r-r.r�r/r0r��visitorsr1r2r3r4r5r`� IMPORT_PATHSr�r�r�rYrBrCrrr�r�r*rArJrbrjr�r�r�r�r�r�r�r�r�rrr�r$r)r+r3r?rNrRrXr]rgr(rur{r~r�r�r�r�r�r�r�r�r�r��<module>rsz ������������ � � � �"�"�"�"�"�"�������������������������T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�u�u�u�u�u�u�u�u�u�u�u�u�u�u�u�u�u�u�u�u�E�E�E�E�E�E�E�E�E�E�E�E�E�E�0�0�0�0�0�0�-�-�-�-�-�-�)�)�)�)�)�)�)�)�]�]�]�]�]�]�]�]�]�]�]�]�]�]�]�]�'�'�'�'�'�'�'�'�h�h�h�h�h�h�h�h�h�h�h�h�h�h�)�)�)�)�)�)�)�)�a�a�a�a�a�a�a�a�a�a�a�a�a�a��f�D�!�!�!� ��|� � �� � � �� � � ��%��%�%��'�%��'�%��+� %� �&� %� �'� %��&�%��'�%� �;�%��&�%��'�%��&�%��$�%��&�%��(�%� �)�!%�"�,�#%�%�$�+�%%�&�,�'%�(�*�)%�*�*�+%�,�'�-%�.�*�/%�0 �7�1%�2�+�3%�4�'�5%�6�&�7%�8�&�9%�:�(�;%�<�(�=%�>�&�?%�@�&�A%�B �9�C%�D �V�E%�%�F � �I%�%�%��P � �U� � �U� � �U� � �U�  � �u�  � �u�  � � � � �c� � �c� � �5� � �K� ��w� � �S� ��1� � � � � �#�! �" �(�# �$/��:� �� �(�� �������= � � � �BK � �g�Y�K � �w� �&�K � �Z�Z�Z�K �  � Q� R� K � �'��� K �����K ��:���K ���7�9�K ��=�/�K ��0�0�0�K �& �.� �<�'K �(�,��)K �,�2�(�)�-K �0 ����1K �< ����=K �D � � � �EK �P�� �QK �K �R�F�8�SK �V �f�j� !�WK �X� �M�*�YK �\ �&� '�]K �^ �%� &�_K �b�C�D�cK �d�w�4�6�eK �j � -� 9� ;�kK �n�!�!�#�oK �r �~���sK �v �'�(�wK �x�,�-�yK �z �4�4�4�{K �B�\�<�0�CK �D�>�"�EK �F�&�'�GK �H�V�5�6�IK �K �L���3�4�� 6�7��(�#�UK �K �K ��`�� ��,�,�,�,�,�;�,�,�,�: �X/�X/�X/�X/�X/�%�X/�X/� ��X/�v*6�*6�*6�*6�*6�7�*6�*6�*6�Z %� %� %� %� %�[� %� %� %�4:�4:�4:�4:�4:�.�4:�4:�4:�n;�;�;�;�;�)�;�;�;�$(�(�(�(�(�(�(�(�(�.,�,�,� � � �4S�S�S�B � 2� 2� 2� 2� 2�)� 2� 2� �� 2�!�y�!�!�!�!�0�0�0�0�0�4�0�0�0�f�����)����8�8�8� F6�F6�F6�F6�F6�F6�F6�F6�R�*�.��@�@��*E�*E�*E�*E�*E�*E�*E�*E�Z"�!�&�,�7�7� �@�@�@�DX�X�X� �'�'�'�'�'�(�'�'� ��'�E�E�E� !�!�!�* #�X�J�/� �(��,� (�*J�*J�*J�K� @�Bk�Bk�Bk�l� .�� �:� '�-��9� �I�I�I�J� �Y�Y�Y�Z� F�� �V� -��y�9� 0�7�)�<� !�O�#4�5� "�%8�$9�:��� '�'�'�,�,�,�,�"������ ��c��#��$�u�_�VY�EY�?Z�:[�����, � � � � � � �]�]�]�0��������mA�mA�mA�mA�mA�mA�mA�mA�` ���$02�+�+�+�+� /�/�/� <�S� <�S� <� <� <� <� <� <r�
Memory