# The file was automatically generated by Lark v1.3.1
__version__ = "1.3.1"

#
#
#   Lark Stand-alone Generator Tool
# ----------------------------------
# Generates a stand-alone LALR(1) parser
#
# Git:    https://github.com/erezsh/lark
# Author: Erez Shinan (erezshin@gmail.com)
#
#
#    >>> LICENSE
#
#    This tool and its generated code use a separate license from Lark,
#    and are subject to the terms of the Mozilla Public License, v. 2.0.
#    If a copy of the MPL was not distributed with this
#    file, You can obtain one at https://mozilla.org/MPL/2.0/.
#
#    If you wish to purchase a commercial license for this tool and its
#    generated code, you may contact me via email or otherwise.
#
#    If MPL2 is incompatible with your free or open-source project,
#    contact me and we'll work it out.
#
#

from copy import deepcopy
from abc import ABC, abstractmethod
from types import ModuleType
from typing import (
    TypeVar, Generic, Type, Tuple, List, Dict, Iterator, Collection, Callable, Optional, FrozenSet, Any,
    Union, Iterable, IO, TYPE_CHECKING, overload, Sequence,
    Pattern as REPattern, ClassVar, Set, Mapping
)


class LarkError(Exception):
    pass


class ConfigurationError(LarkError, ValueError):
    pass


def assert_config(value, options: Collection, msg='Got %r, expected one of %s'):
    if value not in options:
        raise ConfigurationError(msg % (value, options))


class GrammarError(LarkError):
    pass


class ParseError(LarkError):
    pass


class LexError(LarkError):
    pass

T = TypeVar('T')

class UnexpectedInput(LarkError):
    #--
    line: int
    column: int
    pos_in_stream = None
    state: Any
    _terminals_by_name = None
    interactive_parser: 'InteractiveParser'

    def get_context(self, text: str, span: int=40) -> str:
        #--
        pos = self.pos_in_stream or 0
        start = max(pos - span, 0)
        end = pos + span
        if not isinstance(text, bytes):
            before = text[start:pos].rsplit('\n', 1)[-1]
            after = text[pos:end].split('\n', 1)[0]
            return before + after + '\n' + ' ' * len(before.expandtabs()) + '^\n'
        else:
            before = text[start:pos].rsplit(b'\n', 1)[-1]
            after = text[pos:end].split(b'\n', 1)[0]
            return (before + after + b'\n' + b' ' * len(before.expandtabs()) + b'^\n').decode("ascii", "backslashreplace")

    def match_examples(self, parse_fn: 'Callable[[str], Tree]',
                             examples: Union[Mapping[T, Iterable[str]], Iterable[Tuple[T, Iterable[str]]]],
                             token_type_match_fallback: bool=False,
                             use_accepts: bool=True
                         ) -> Optional[T]:
        #--
        assert self.state is not None, "Not supported for this exception"

        if isinstance(examples, Mapping):
            examples = examples.items()

        candidate = (None, False)
        for i, (label, example) in enumerate(examples):
            assert not isinstance(example, str), "Expecting a list"

            for j, malformed in enumerate(example):
                try:
                    parse_fn(malformed)
                except UnexpectedInput as ut:
                    if ut.state == self.state:
                        if (
                            use_accepts
                            and isinstance(self, UnexpectedToken)
                            and isinstance(ut, UnexpectedToken)
                            and ut.accepts != self.accepts
                        ):
                            logger.debug("Different accepts with same state[%d]: %s != %s at example [%s][%s]" %
                                         (self.state, self.accepts, ut.accepts, i, j))
                            continue
                        if (
                            isinstance(self, (UnexpectedToken, UnexpectedEOF))
                            and isinstance(ut, (UnexpectedToken, UnexpectedEOF))
                        ):
                            if ut.token == self.token:  ##

                                logger.debug("Exact Match at example [%s][%s]" % (i, j))
                                return label

                            if token_type_match_fallback:
                                ##

                                if (ut.token.type == self.token.type) and not candidate[-1]:
                                    logger.debug("Token Type Fallback at example [%s][%s]" % (i, j))
                                    candidate = label, True

                        if candidate[0] is None:
                            logger.debug("Same State match at example [%s][%s]" % (i, j))
                            candidate = label, False

        return candidate[0]

    def _format_expected(self, expected):
        if self._terminals_by_name:
            d = self._terminals_by_name
            expected = [d[t_name].user_repr() if t_name in d else t_name for t_name in expected]
        return "Expected one of: \n\t* %s\n" % '\n\t* '.join(expected)


class UnexpectedEOF(ParseError, UnexpectedInput):
    #--
    expected: 'List[Token]'

    def __init__(self, expected, state=None, terminals_by_name=None):
        super(UnexpectedEOF, self).__init__()

        self.expected = expected
        self.state = state
        from .lexer import Token
        self.token = Token("<EOF>", "")  ##

        self.pos_in_stream = -1
        self.line = -1
        self.column = -1
        self._terminals_by_name = terminals_by_name


    def __str__(self):
        message = "Unexpected end-of-input. "
        message += self._format_expected(self.expected)
        return message


class UnexpectedCharacters(LexError, UnexpectedInput):
    #--

    allowed: Set[str]
    considered_tokens: Set[Any]

    def __init__(self, seq, lex_pos, line, column, allowed=None, considered_tokens=None, state=None, token_history=None,
                 terminals_by_name=None, considered_rules=None):
        super(UnexpectedCharacters, self).__init__()

        ##

        self.line = line
        self.column = column
        self.pos_in_stream = lex_pos
        self.state = state
        self._terminals_by_name = terminals_by_name

        self.allowed = allowed
        self.considered_tokens = considered_tokens
        self.considered_rules = considered_rules
        self.token_history = token_history

        if isinstance(seq, bytes):
            self.char = seq[lex_pos:lex_pos + 1].decode("ascii", "backslashreplace")
        else:
            self.char = seq[lex_pos]
        self._context = self.get_context(seq)


    def __str__(self):
        message = "No terminal matches '%s' in the current parser context, at line %d col %d" % (self.char, self.line, self.column)
        message += '\n\n' + self._context
        if self.allowed:
            message += self._format_expected(self.allowed)
        if self.token_history:
            message += '\nPrevious tokens: %s\n' % ', '.join(repr(t) for t in self.token_history)
        return message


class UnexpectedToken(ParseError, UnexpectedInput):
    #--

    expected: Set[str]
    considered_rules: Set[str]

    def __init__(self, token, expected, considered_rules=None, state=None, interactive_parser=None, terminals_by_name=None, token_history=None):
        super(UnexpectedToken, self).__init__()

        ##

        self.line = getattr(token, 'line', '?')
        self.column = getattr(token, 'column', '?')
        self.pos_in_stream = getattr(token, 'start_pos', None)
        self.state = state

        self.token = token
        self.expected = expected  ##

        self._accepts = NO_VALUE
        self.considered_rules = considered_rules
        self.interactive_parser = interactive_parser
        self._terminals_by_name = terminals_by_name
        self.token_history = token_history


    @property
    def accepts(self) -> Set[str]:
        if self._accepts is NO_VALUE:
            self._accepts = self.interactive_parser and self.interactive_parser.accepts()
        return self._accepts

    def __str__(self):
        message = ("Unexpected token %r at line %s, column %s.\n%s"
                   % (self.token, self.line, self.column, self._format_expected(self.accepts or self.expected)))
        if self.token_history:
            message += "Previous tokens: %r\n" % self.token_history

        return message



class VisitError(LarkError):
    #--

    obj: 'Union[Tree, Token]'
    orig_exc: Exception

    def __init__(self, rule, obj, orig_exc):
        message = 'Error trying to process rule "%s":\n\n%s' % (rule, orig_exc)
        super(VisitError, self).__init__(message)

        self.rule = rule
        self.obj = obj
        self.orig_exc = orig_exc


class MissingVariableError(LarkError):
    pass


import sys, re
import logging
from dataclasses import dataclass
from typing import Generic, AnyStr

logger: logging.Logger = logging.getLogger("lark")
logger.addHandler(logging.StreamHandler())
##

##

logger.setLevel(logging.CRITICAL)


NO_VALUE = object()

T = TypeVar("T")


def classify(seq: Iterable, key: Optional[Callable] = None, value: Optional[Callable] = None) -> Dict:
    d: Dict[Any, Any] = {}
    for item in seq:
        k = key(item) if (key is not None) else item
        v = value(item) if (value is not None) else item
        try:
            d[k].append(v)
        except KeyError:
            d[k] = [v]
    return d


def _deserialize(data: Any, namespace: Dict[str, Any], memo: Dict) -> Any:
    if isinstance(data, dict):
        if '__type__' in data:  ##

            class_ = namespace[data['__type__']]
            return class_.deserialize(data, memo)
        elif '@' in data:
            return memo[data['@']]
        return {key:_deserialize(value, namespace, memo) for key, value in data.items()}
    elif isinstance(data, list):
        return [_deserialize(value, namespace, memo) for value in data]
    return data


_T = TypeVar("_T", bound="Serialize")

class Serialize:
    #--

    def memo_serialize(self, types_to_memoize: List) -> Any:
        memo = SerializeMemoizer(types_to_memoize)
        return self.serialize(memo), memo.serialize()

    def serialize(self, memo = None) -> Dict[str, Any]:
        if memo and memo.in_types(self):
            return {'@': memo.memoized.get(self)}

        fields = getattr(self, '__serialize_fields__')
        res = {f: _serialize(getattr(self, f), memo) for f in fields}
        res['__type__'] = type(self).__name__
        if hasattr(self, '_serialize'):
            self._serialize(res, memo)
        return res

    @classmethod
    def deserialize(cls: Type[_T], data: Dict[str, Any], memo: Dict[int, Any]) -> _T:
        namespace = getattr(cls, '__serialize_namespace__', [])
        namespace = {c.__name__:c for c in namespace}

        fields = getattr(cls, '__serialize_fields__')

        if '@' in data:
            return memo[data['@']]

        inst = cls.__new__(cls)
        for f in fields:
            try:
                setattr(inst, f, _deserialize(data[f], namespace, memo))
            except KeyError as e:
                raise KeyError("Cannot find key for class", cls, e)

        if hasattr(inst, '_deserialize'):
            inst._deserialize()

        return inst


class SerializeMemoizer(Serialize):
    #--

    __serialize_fields__ = 'memoized',

    def __init__(self, types_to_memoize: List) -> None:
        self.types_to_memoize = tuple(types_to_memoize)
        self.memoized = Enumerator()

    def in_types(self, value: Serialize) -> bool:
        return isinstance(value, self.types_to_memoize)

    def serialize(self) -> Dict[int, Any]:  ##

        return _serialize(self.memoized.reversed(), None)

    @classmethod
    def deserialize(cls, data: Dict[int, Any], namespace: Dict[str, Any], memo: Dict[Any, Any]) -> Dict[int, Any]:  ##

        return _deserialize(data, namespace, memo)


try:
    import regex
    _has_regex = True
except ImportError:
    _has_regex = False

if sys.version_info >= (3, 11):
    import re._parser as sre_parse
    import re._constants as sre_constants
else:
    import sre_parse
    import sre_constants

categ_pattern = re.compile(r'\\p{[A-Za-z_]+}')

def get_regexp_width(expr: str) -> Union[Tuple[int, int], List[int]]:
    if _has_regex:
        ##

        ##

        ##

        regexp_final = re.sub(categ_pattern, 'A', expr)
    else:
        if re.search(categ_pattern, expr):
            raise ImportError('`regex` module must be installed in order to use Unicode categories.', expr)
        regexp_final = expr
    try:
        ##

        return [int(x) for x in sre_parse.parse(regexp_final).getwidth()]
    except sre_constants.error:
        if not _has_regex:
            raise ValueError(expr)
        else:
            ##

            ##

            c = regex.compile(regexp_final)
            ##

            ##

            MAXWIDTH = getattr(sre_parse, "MAXWIDTH", sre_constants.MAXREPEAT)
            if c.match('') is None:
                ##

                return 1, int(MAXWIDTH)
            else:
                return 0, int(MAXWIDTH)


@dataclass(frozen=True)
class TextSlice(Generic[AnyStr]):
    #--
    text: AnyStr
    start: int
    end: int

    def __post_init__(self):
        if not isinstance(self.text, (str, bytes)):
            raise TypeError("text must be str or bytes")

        if self.start < 0:
            object.__setattr__(self, 'start', self.start + len(self.text))
            assert self.start >=0

        if self.end is None:
            object.__setattr__(self, 'end', len(self.text))
        elif self.end < 0:
            object.__setattr__(self, 'end', self.end + len(self.text))
            assert self.end <= len(self.text)

    @classmethod
    def cast_from(cls, text: 'TextOrSlice') -> 'TextSlice[AnyStr]':
        if isinstance(text, TextSlice):
            return text

        return cls(text, 0, len(text))

    def is_complete_text(self):
        return self.start == 0 and self.end == len(self.text)

    def __len__(self):
        return self.end - self.start

    def count(self, substr: AnyStr):
        return self.text.count(substr, self.start, self.end)

    def rindex(self, substr: AnyStr):
        return self.text.rindex(substr, self.start, self.end)


TextOrSlice = Union[AnyStr, 'TextSlice[AnyStr]']
LarkInput = Union[AnyStr, TextSlice[AnyStr], Any]



class Meta:

    empty: bool
    line: int
    column: int
    start_pos: int
    end_line: int
    end_column: int
    end_pos: int
    orig_expansion: 'List[TerminalDef]'
    match_tree: bool

    def __init__(self):
        self.empty = True


_Leaf_T = TypeVar("_Leaf_T")
Branch = Union[_Leaf_T, 'Tree[_Leaf_T]']


class Tree(Generic[_Leaf_T]):
    #--

    data: str
    children: 'List[Branch[_Leaf_T]]'

    def __init__(self, data: str, children: 'List[Branch[_Leaf_T]]', meta: Optional[Meta]=None) -> None:
        self.data = data
        self.children = children
        self._meta = meta

    @property
    def meta(self) -> Meta:
        if self._meta is None:
            self._meta = Meta()
        return self._meta

    def __repr__(self):
        return 'Tree(%r, %r)' % (self.data, self.children)

    __match_args__ = ("data", "children")

    def _pretty_label(self):
        return self.data

    def _pretty(self, level, indent_str):
        yield f'{indent_str*level}{self._pretty_label()}'
        if len(self.children) == 1 and not isinstance(self.children[0], Tree):
            yield f'\t{self.children[0]}\n'
        else:
            yield '\n'
            for n in self.children:
                if isinstance(n, Tree):
                    yield from n._pretty(level+1, indent_str)
                else:
                    yield f'{indent_str*(level+1)}{n}\n'

    def pretty(self, indent_str: str='  ') -> str:
        #--
        return ''.join(self._pretty(0, indent_str))

    def __rich__(self, parent:Optional['rich.tree.Tree']=None) -> 'rich.tree.Tree':
        #--
        return self._rich(parent)

    def _rich(self, parent):
        if parent:
            tree = parent.add(f'[bold]{self.data}[/bold]')
        else:
            import rich.tree
            tree = rich.tree.Tree(self.data)

        for c in self.children:
            if isinstance(c, Tree):
                c._rich(tree)
            else:
                tree.add(f'[green]{c}[/green]')

        return tree

    def __eq__(self, other):
        try:
            return self.data == other.data and self.children == other.children
        except AttributeError:
            return False

    def __ne__(self, other):
        return not (self == other)

    def __hash__(self) -> int:
        return hash((self.data, tuple(self.children)))

    def iter_subtrees(self) -> 'Iterator[Tree[_Leaf_T]]':
        #--
        queue = [self]
        subtrees = dict()
        for subtree in queue:
            subtrees[id(subtree)] = subtree
            queue += [c for c in reversed(subtree.children)
                      if isinstance(c, Tree) and id(c) not in subtrees]

        del queue
        return reversed(list(subtrees.values()))

    def iter_subtrees_topdown(self):
        #--
        stack = [self]
        stack_append = stack.append
        stack_pop = stack.pop
        while stack:
            node = stack_pop()
            if not isinstance(node, Tree):
                continue
            yield node
            for child in reversed(node.children):
                stack_append(child)

    def find_pred(self, pred: 'Callable[[Tree[_Leaf_T]], bool]') -> 'Iterator[Tree[_Leaf_T]]':
        #--
        return filter(pred, self.iter_subtrees())

    def find_data(self, data: str) -> 'Iterator[Tree[_Leaf_T]]':
        #--
        return self.find_pred(lambda t: t.data == data)


from functools import wraps, update_wrapper
from inspect import getmembers, getmro

_Return_T = TypeVar('_Return_T')
_Return_V = TypeVar('_Return_V')
_Leaf_T = TypeVar('_Leaf_T')
_Leaf_U = TypeVar('_Leaf_U')
_R = TypeVar('_R')
_FUNC = Callable[..., _Return_T]
_DECORATED = Union[_FUNC, type]

class _DiscardType:
    #--

    def __repr__(self):
        return "lark.visitors.Discard"

Discard = _DiscardType()

##


class _Decoratable:
    #--

    @classmethod
    def _apply_v_args(cls, visit_wrapper):
        mro = getmro(cls)
        assert mro[0] is cls
        libmembers = {name for _cls in mro[1:] for name, _ in getmembers(_cls)}
        for name, value in getmembers(cls):

            ##

            if name.startswith('_') or (name in libmembers and name not in cls.__dict__):
                continue
            if not callable(value):
                continue

            ##

            if isinstance(cls.__dict__[name], _VArgsWrapper):
                continue

            setattr(cls, name, _VArgsWrapper(cls.__dict__[name], visit_wrapper))
        return cls

    def __class_getitem__(cls, _):
        return cls


class Transformer(_Decoratable, ABC, Generic[_Leaf_T, _Return_T]):
    #--
    __visit_tokens__ = True   ##


    def __init__(self,  visit_tokens: bool=True) -> None:
        self.__visit_tokens__ = visit_tokens

    def _call_userfunc(self, tree, new_children=None):
        ##

        children = new_children if new_children is not None else tree.children
        try:
            f = getattr(self, tree.data)
        except AttributeError:
            return self.__default__(tree.data, children, tree.meta)
        else:
            try:
                wrapper = getattr(f, 'visit_wrapper', None)
                if wrapper is not None:
                    return f.visit_wrapper(f, tree.data, children, tree.meta)
                else:
                    return f(children)
            except GrammarError:
                raise
            except Exception as e:
                raise VisitError(tree.data, tree, e)

    def _call_userfunc_token(self, token):
        try:
            f = getattr(self, token.type)
        except AttributeError:
            return self.__default_token__(token)
        else:
            try:
                return f(token)
            except GrammarError:
                raise
            except Exception as e:
                raise VisitError(token.type, token, e)

    def _transform_children(self, children):
        for c in children:
            if isinstance(c, Tree):
                res = self._transform_tree(c)
            elif self.__visit_tokens__ and isinstance(c, Token):
                res = self._call_userfunc_token(c)
            else:
                res = c

            if res is not Discard:
                yield res

    def _transform_tree(self, tree):
        children = list(self._transform_children(tree.children))
        return self._call_userfunc(tree, children)

    def transform(self, tree: Tree[_Leaf_T]) -> _Return_T:
        #--
        res = list(self._transform_children([tree]))
        if not res:
            return None     ##

        assert len(res) == 1
        return res[0]

    def __mul__(
            self: 'Transformer[_Leaf_T, Tree[_Leaf_U]]',
            other: 'Union[Transformer[_Leaf_U, _Return_V], TransformerChain[_Leaf_U, _Return_V,]]'
    ) -> 'TransformerChain[_Leaf_T, _Return_V]':
        #--
        return TransformerChain(self, other)

    def __default__(self, data, children, meta):
        #--
        return Tree(data, children, meta)

    def __default_token__(self, token):
        #--
        return token


def merge_transformers(base_transformer=None, **transformers_to_merge):
    #--
    if base_transformer is None:
        base_transformer = Transformer()
    for prefix, transformer in transformers_to_merge.items():
        for method_name in dir(transformer):
            method = getattr(transformer, method_name)
            if not callable(method):
                continue
            if method_name.startswith("_") or method_name == "transform":
                continue
            prefixed_method = prefix + "__" + method_name
            if hasattr(base_transformer, prefixed_method):
                raise AttributeError("Cannot merge: method '%s' appears more than once" % prefixed_method)

            setattr(base_transformer, prefixed_method, method)

    return base_transformer


class InlineTransformer(Transformer):   ##

    def _call_userfunc(self, tree, new_children=None):
        ##

        children = new_children if new_children is not None else tree.children
        try:
            f = getattr(self, tree.data)
        except AttributeError:
            return self.__default__(tree.data, children, tree.meta)
        else:
            return f(*children)


class TransformerChain(Generic[_Leaf_T, _Return_T]):

    transformers: 'Tuple[Union[Transformer, TransformerChain], ...]'

    def __init__(self, *transformers: 'Union[Transformer, TransformerChain]') -> None:
        self.transformers = transformers

    def transform(self, tree: Tree[_Leaf_T]) -> _Return_T:
        for t in self.transformers:
            tree = t.transform(tree)
        return cast(_Return_T, tree)

    def __mul__(
            self: 'TransformerChain[_Leaf_T, Tree[_Leaf_U]]',
            other: 'Union[Transformer[_Leaf_U, _Return_V], TransformerChain[_Leaf_U, _Return_V]]'
    ) -> 'TransformerChain[_Leaf_T, _Return_V]':
        return TransformerChain(*self.transformers + (other,))


class Transformer_InPlace(Transformer[_Leaf_T, _Return_T]):
    #--
    def _transform_tree(self, tree):           ##

        return self._call_userfunc(tree)

    def transform(self, tree: Tree[_Leaf_T]) -> _Return_T:
        for subtree in tree.iter_subtrees():
            subtree.children = list(self._transform_children(subtree.children))

        return self._transform_tree(tree)


class Transformer_NonRecursive(Transformer[_Leaf_T, _Return_T]):
    #--

    def transform(self, tree: Tree[_Leaf_T]) -> _Return_T:
        ##

        rev_postfix = []
        q: List[Branch[_Leaf_T]] = [tree]
        while q:
            t = q.pop()
            rev_postfix.append(t)
            if isinstance(t, Tree):
                q += t.children

        ##

        stack: List = []
        for x in reversed(rev_postfix):
            if isinstance(x, Tree):
                size = len(x.children)
                if size:
                    args = stack[-size:]
                    del stack[-size:]
                else:
                    args = []

                res = self._call_userfunc(x, args)
                if res is not Discard:
                    stack.append(res)

            elif self.__visit_tokens__ and isinstance(x, Token):
                res = self._call_userfunc_token(x)
                if res is not Discard:
                    stack.append(res)
            else:
                stack.append(x)

        result, = stack  ##

        ##

        ##

        ##

        return cast(_Return_T, result)


class Transformer_InPlaceRecursive(Transformer[_Leaf_T, _Return_T]):
    #--
    def _transform_tree(self, tree):
        tree.children = list(self._transform_children(tree.children))
        return self._call_userfunc(tree)


##


class VisitorBase:
    def _call_userfunc(self, tree):
        return getattr(self, tree.data, self.__default__)(tree)

    def __default__(self, tree):
        #--
        return tree

    def __class_getitem__(cls, _):
        return cls


class Visitor(VisitorBase, ABC, Generic[_Leaf_T]):
    #--

    def visit(self, tree: Tree[_Leaf_T]) -> Tree[_Leaf_T]:
        #--
        for subtree in tree.iter_subtrees():
            self._call_userfunc(subtree)
        return tree

    def visit_topdown(self, tree: Tree[_Leaf_T]) -> Tree[_Leaf_T]:
        #--
        for subtree in tree.iter_subtrees_topdown():
            self._call_userfunc(subtree)
        return tree


class Visitor_Recursive(VisitorBase, Generic[_Leaf_T]):
    #--

    def visit(self, tree: Tree[_Leaf_T]) -> Tree[_Leaf_T]:
        #--
        for child in tree.children:
            if isinstance(child, Tree):
                self.visit(child)

        self._call_userfunc(tree)
        return tree

    def visit_topdown(self,tree: Tree[_Leaf_T]) -> Tree[_Leaf_T]:
        #--
        self._call_userfunc(tree)

        for child in tree.children:
            if isinstance(child, Tree):
                self.visit_topdown(child)

        return tree


class Interpreter(_Decoratable, ABC, Generic[_Leaf_T, _Return_T]):
    #--

    def visit(self, tree: Tree[_Leaf_T]) -> _Return_T:
        ##

        ##

        ##

        return self._visit_tree(tree)

    def _visit_tree(self, tree: Tree[_Leaf_T]):
        f = getattr(self, tree.data)
        wrapper = getattr(f, 'visit_wrapper', None)
        if wrapper is not None:
            return f.visit_wrapper(f, tree.data, tree.children, tree.meta)
        else:
            return f(tree)

    def visit_children(self, tree: Tree[_Leaf_T]) -> List:
        return [self._visit_tree(child) if isinstance(child, Tree) else child
                for child in tree.children]

    def __getattr__(self, name):
        return self.__default__

    def __default__(self, tree):
        return self.visit_children(tree)


_InterMethod = Callable[[Type[Interpreter], _Return_T], _R]

def visit_children_decor(func: _InterMethod) -> _InterMethod:
    #--
    @wraps(func)
    def inner(cls, tree):
        values = cls.visit_children(tree)
        return func(cls, values)
    return inner

##


def _apply_v_args(obj, visit_wrapper):
    try:
        _apply = obj._apply_v_args
    except AttributeError:
        return _VArgsWrapper(obj, visit_wrapper)
    else:
        return _apply(visit_wrapper)


class _VArgsWrapper:
    #--
    base_func: Callable

    def __init__(self, func: Callable, visit_wrapper: Callable[[Callable, str, list, Any], Any]):
        if isinstance(func, _VArgsWrapper):
            func = func.base_func
        self.base_func = func
        self.visit_wrapper = visit_wrapper
        update_wrapper(self, func)

    def __call__(self, *args, **kwargs):
        return self.base_func(*args, **kwargs)

    def __get__(self, instance, owner=None):
        try:
            ##

            ##

            g = type(self.base_func).__get__
        except AttributeError:
            return self
        else:
            return _VArgsWrapper(g(self.base_func, instance, owner), self.visit_wrapper)

    def __set_name__(self, owner, name):
        try:
            f = type(self.base_func).__set_name__
        except AttributeError:
            return
        else:
            f(self.base_func, owner, name)


def _vargs_inline(f, _data, children, _meta):
    return f(*children)
def _vargs_meta_inline(f, _data, children, meta):
    return f(meta, *children)
def _vargs_meta(f, _data, children, meta):
    return f(meta, children)
def _vargs_tree(f, data, children, meta):
    return f(Tree(data, children, meta))


def v_args(inline: bool = False, meta: bool = False, tree: bool = False, wrapper: Optional[Callable] = None) -> Callable[[_DECORATED], _DECORATED]:
    #--
    if tree and (meta or inline):
        raise ValueError("Visitor functions cannot combine 'tree' with 'meta' or 'inline'.")

    func = None
    if meta:
        if inline:
            func = _vargs_meta_inline
        else:
            func = _vargs_meta
    elif inline:
        func = _vargs_inline
    elif tree:
        func = _vargs_tree

    if wrapper is not None:
        if func is not None:
            raise ValueError("Cannot use 'wrapper' along with 'tree', 'meta' or 'inline'.")
        func = wrapper

    def _visitor_args_dec(obj):
        return _apply_v_args(obj, func)
    return _visitor_args_dec



TOKEN_DEFAULT_PRIORITY = 0


class Symbol(Serialize):
    __slots__ = ('name',)

    name: str
    is_term: ClassVar[bool] = NotImplemented

    def __init__(self, name: str) -> None:
        self.name = name

    def __eq__(self, other):
        if not isinstance(other, Symbol):
            return NotImplemented
        return self.is_term == other.is_term and self.name == other.name

    def __ne__(self, other):
        return not (self == other)

    def __hash__(self):
        return hash(self.name)

    def __repr__(self):
        return '%s(%r)' % (type(self).__name__, self.name)

    fullrepr = property(__repr__)

    def renamed(self, f):
        return type(self)(f(self.name))


class Terminal(Symbol):
    __serialize_fields__ = 'name', 'filter_out'

    is_term: ClassVar[bool] = True

    def __init__(self, name: str, filter_out: bool = False) -> None:
        self.name = name
        self.filter_out = filter_out

    @property
    def fullrepr(self):
        return '%s(%r, %r)' % (type(self).__name__, self.name, self.filter_out)

    def renamed(self, f):
        return type(self)(f(self.name), self.filter_out)


class NonTerminal(Symbol):
    __serialize_fields__ = 'name',

    is_term: ClassVar[bool] = False

    def serialize(self, memo=None) -> Dict[str, Any]:
        ##

        ##

        return {'name': str(self.name), '__type__': 'NonTerminal'}


class RuleOptions(Serialize):
    __serialize_fields__ = 'keep_all_tokens', 'expand1', 'priority', 'template_source', 'empty_indices'

    keep_all_tokens: bool
    expand1: bool
    priority: Optional[int]
    template_source: Optional[str]
    empty_indices: Tuple[bool, ...]

    def __init__(self, keep_all_tokens: bool=False, expand1: bool=False, priority: Optional[int]=None, template_source: Optional[str]=None, empty_indices: Tuple[bool, ...]=()) -> None:
        self.keep_all_tokens = keep_all_tokens
        self.expand1 = expand1
        self.priority = priority
        self.template_source = template_source
        self.empty_indices = empty_indices

    def __repr__(self):
        return 'RuleOptions(%r, %r, %r, %r)' % (
            self.keep_all_tokens,
            self.expand1,
            self.priority,
            self.template_source
        )


class Rule(Serialize):
    #--
    __slots__ = ('origin', 'expansion', 'alias', 'options', 'order', '_hash')

    __serialize_fields__ = 'origin', 'expansion', 'order', 'alias', 'options'
    __serialize_namespace__ = Terminal, NonTerminal, RuleOptions

    origin: NonTerminal
    expansion: Sequence[Symbol]
    order: int
    alias: Optional[str]
    options: RuleOptions
    _hash: int

    def __init__(self, origin: NonTerminal, expansion: Sequence[Symbol],
                 order: int=0, alias: Optional[str]=None, options: Optional[RuleOptions]=None):
        self.origin = origin
        self.expansion = expansion
        self.alias = alias
        self.order = order
        self.options = options or RuleOptions()
        self._hash = hash((self.origin, tuple(self.expansion)))

    def _deserialize(self):
        self._hash = hash((self.origin, tuple(self.expansion)))

    def __str__(self):
        return '<%s : %s>' % (self.origin.name, ' '.join(x.name for x in self.expansion))

    def __repr__(self):
        return 'Rule(%r, %r, %r, %r)' % (self.origin, self.expansion, self.alias, self.options)

    def __hash__(self):
        return self._hash

    def __eq__(self, other):
        if not isinstance(other, Rule):
            return False
        return self.origin == other.origin and self.expansion == other.expansion



from contextlib import suppress
from copy import copy

try:  ##

    has_interegular = bool(interegular)
except NameError:
    has_interegular = False

class Pattern(Serialize, ABC):
    #--

    value: str
    flags: Collection[str]
    raw: Optional[str]
    type: ClassVar[str]

    def __init__(self, value: str, flags: Collection[str] = (), raw: Optional[str] = None) -> None:
        self.value = value
        self.flags = frozenset(flags)
        self.raw = raw

    def __repr__(self):
        return repr(self.to_regexp())

    ##

    def __hash__(self):
        return hash((type(self), self.value, self.flags))

    def __eq__(self, other):
        return type(self) == type(other) and self.value == other.value and self.flags == other.flags

    @abstractmethod
    def to_regexp(self) -> str:
        raise NotImplementedError()

    @property
    @abstractmethod
    def min_width(self) -> int:
        raise NotImplementedError()

    @property
    @abstractmethod
    def max_width(self) -> int:
        raise NotImplementedError()

    def _get_flags(self, value):
        for f in self.flags:
            value = ('(?%s:%s)' % (f, value))
        return value


class PatternStr(Pattern):
    __serialize_fields__ = 'value', 'flags', 'raw'

    type: ClassVar[str] = "str"

    def to_regexp(self) -> str:
        return self._get_flags(re.escape(self.value))

    @property
    def min_width(self) -> int:
        return len(self.value)

    @property
    def max_width(self) -> int:
        return len(self.value)


class PatternRE(Pattern):
    __serialize_fields__ = 'value', 'flags', 'raw', '_width'

    type: ClassVar[str] = "re"

    def to_regexp(self) -> str:
        return self._get_flags(self.value)

    _width = None
    def _get_width(self):
        if self._width is None:
            self._width = get_regexp_width(self.to_regexp())
        return self._width

    @property
    def min_width(self) -> int:
        return self._get_width()[0]

    @property
    def max_width(self) -> int:
        return self._get_width()[1]


class TerminalDef(Serialize):
    #--
    __serialize_fields__ = 'name', 'pattern', 'priority'
    __serialize_namespace__ = PatternStr, PatternRE

    name: str
    pattern: Pattern
    priority: int

    def __init__(self, name: str, pattern: Pattern, priority: int = TOKEN_DEFAULT_PRIORITY) -> None:
        assert isinstance(pattern, Pattern), pattern
        self.name = name
        self.pattern = pattern
        self.priority = priority

    def __repr__(self):
        return '%s(%r, %r)' % (type(self).__name__, self.name, self.pattern)

    def user_repr(self) -> str:
        if self.name.startswith('__'):  ##

            return self.pattern.raw or self.name
        else:
            return self.name

_T = TypeVar('_T', bound="Token")

class Token(str):
    #--
    __slots__ = ('type', 'start_pos', 'value', 'line', 'column', 'end_line', 'end_column', 'end_pos')

    __match_args__ = ('type', 'value')

    type: str
    start_pos: Optional[int]
    value: Any
    line: Optional[int]
    column: Optional[int]
    end_line: Optional[int]
    end_column: Optional[int]
    end_pos: Optional[int]


    @overload
    def __new__(
            cls,
            type: str,
            value: Any,
            start_pos: Optional[int] = None,
            line: Optional[int] = None,
            column: Optional[int] = None,
            end_line: Optional[int] = None,
            end_column: Optional[int] = None,
            end_pos: Optional[int] = None
    ) -> 'Token':
        ...

    @overload
    def __new__(
            cls,
            type_: str,
            value: Any,
            start_pos: Optional[int] = None,
            line: Optional[int] = None,
            column: Optional[int] = None,
            end_line: Optional[int] = None,
            end_column: Optional[int] = None,
            end_pos: Optional[int] = None
    ) -> 'Token':        ...

    def __new__(cls, *args, **kwargs):
        if "type_" in kwargs:
            warnings.warn("`type_` is deprecated use `type` instead", DeprecationWarning)

            if "type" in kwargs:
                raise TypeError("Error: using both 'type' and the deprecated 'type_' as arguments.")
            kwargs["type"] = kwargs.pop("type_")

        return cls._future_new(*args, **kwargs)


    @classmethod
    def _future_new(cls, type, value, start_pos=None, line=None, column=None, end_line=None, end_column=None, end_pos=None):
        inst = super(Token, cls).__new__(cls, value)

        inst.type = type
        inst.start_pos = start_pos
        inst.value = value
        inst.line = line
        inst.column = column
        inst.end_line = end_line
        inst.end_column = end_column
        inst.end_pos = end_pos
        return inst

    @overload
    def update(self, type: Optional[str] = None, value: Optional[Any] = None) -> 'Token':
        ...

    @overload
    def update(self, type_: Optional[str] = None, value: Optional[Any] = None) -> 'Token':
        ...

    def update(self, *args, **kwargs):
        if "type_" in kwargs:
            warnings.warn("`type_` is deprecated use `type` instead", DeprecationWarning)

            if "type" in kwargs:
                raise TypeError("Error: using both 'type' and the deprecated 'type_' as arguments.")
            kwargs["type"] = kwargs.pop("type_")

        return self._future_update(*args, **kwargs)

    def _future_update(self, type: Optional[str] = None, value: Optional[Any] = None) -> 'Token':
        return Token.new_borrow_pos(
            type if type is not None else self.type,
            value if value is not None else self.value,
            self
        )

    @classmethod
    def new_borrow_pos(cls: Type[_T], type_: str, value: Any, borrow_t: 'Token') -> _T:
        return cls(type_, value, borrow_t.start_pos, borrow_t.line, borrow_t.column, borrow_t.end_line, borrow_t.end_column, borrow_t.end_pos)

    def __reduce__(self):
        return (self.__class__, (self.type, self.value, self.start_pos, self.line, self.column))

    def __repr__(self):
        return 'Token(%r, %r)' % (self.type, self.value)

    def __deepcopy__(self, memo):
        return Token(self.type, self.value, self.start_pos, self.line, self.column)

    def __eq__(self, other):
        if isinstance(other, Token) and self.type != other.type:
            return False

        return str.__eq__(self, other)

    __hash__ = str.__hash__


class LineCounter:
    #--

    __slots__ = 'char_pos', 'line', 'column', 'line_start_pos', 'newline_char'

    def __init__(self, newline_char):
        self.newline_char = newline_char
        self.char_pos = 0
        self.line = 1
        self.column = 1
        self.line_start_pos = 0

    def __eq__(self, other):
        if not isinstance(other, LineCounter):
            return NotImplemented

        return self.char_pos == other.char_pos and self.newline_char == other.newline_char

    def feed(self, token: TextOrSlice, test_newline=True):
        #--
        if test_newline:
            newlines = token.count(self.newline_char)
            if newlines:
                self.line += newlines
                self.line_start_pos = self.char_pos + token.rindex(self.newline_char) + 1

        self.char_pos += len(token)
        self.column = self.char_pos - self.line_start_pos + 1


class UnlessCallback:
    def __init__(self, scanner: 'Scanner'):
        self.scanner = scanner

    def __call__(self, t: Token):
        res = self.scanner.fullmatch(t.value)
        if res is not None:
            t.type = res
        return t


class CallChain:
    def __init__(self, callback1, callback2, cond):
        self.callback1 = callback1
        self.callback2 = callback2
        self.cond = cond

    def __call__(self, t):
        t2 = self.callback1(t)
        return self.callback2(t) if self.cond(t2) else t2


def _get_match(re_, regexp, s, flags):
    m = re_.match(regexp, s, flags)
    if m:
        return m.group(0)

def _create_unless(terminals, g_regex_flags, re_, use_bytes):
    tokens_by_type = classify(terminals, lambda t: type(t.pattern))
    assert len(tokens_by_type) <= 2, tokens_by_type.keys()
    embedded_strs = set()
    callback = {}
    for retok in tokens_by_type.get(PatternRE, []):
        unless = []
        for strtok in tokens_by_type.get(PatternStr, []):
            if strtok.priority != retok.priority:
                continue
            s = strtok.pattern.value
            if s == _get_match(re_, retok.pattern.to_regexp(), s, g_regex_flags):
                unless.append(strtok)
                if strtok.pattern.flags <= retok.pattern.flags:
                    embedded_strs.add(strtok)
        if unless:
            callback[retok.name] = UnlessCallback(Scanner(unless, g_regex_flags, re_, use_bytes=use_bytes))

    new_terminals = [t for t in terminals if t not in embedded_strs]
    return new_terminals, callback


class Scanner:
    def __init__(self, terminals, g_regex_flags, re_, use_bytes):
        self.terminals = terminals
        self.g_regex_flags = g_regex_flags
        self.re_ = re_
        self.use_bytes = use_bytes

        self.allowed_types = {t.name for t in self.terminals}

        self._mres = self._build_mres(terminals, len(terminals))

    def _build_mres(self, terminals, max_size):
        ##

        ##

        ##

        mres = []
        while terminals:
            pattern = u'|'.join(u'(?P<%s>%s)' % (t.name, t.pattern.to_regexp()) for t in terminals[:max_size])
            if self.use_bytes:
                pattern = pattern.encode('latin-1')
            try:
                mre = self.re_.compile(pattern, self.g_regex_flags)
            except AssertionError:  ##

                return self._build_mres(terminals, max_size // 2)

            mres.append(mre)
            terminals = terminals[max_size:]
        return mres

    def match(self, text: TextSlice, pos):
        for mre in self._mres:
            m = mre.match(text.text, pos, text.end)
            if m:
                return m.group(0), m.lastgroup


    def fullmatch(self, text: str) -> Optional[str]:
        for mre in self._mres:
            m = mre.fullmatch(text)
            if m:
                return m.lastgroup
        return None

def _regexp_has_newline(r: str):
    #--
    return '\n' in r or '\\n' in r or '\\s' in r or '[^' in r or ('(?s' in r and '.' in r)


class LexerState:
    #--

    __slots__ = 'text', 'line_ctr', 'last_token'

    text: TextSlice
    line_ctr: LineCounter
    last_token: Optional[Token]

    def __init__(self, text: TextSlice, line_ctr: Optional[LineCounter] = None, last_token: Optional[Token]=None):
        if isinstance(text, TextSlice):
            if line_ctr is None:
                line_ctr = LineCounter(b'\n' if isinstance(text.text, bytes) else '\n')

                if text.start > 0:
                    ##

                    line_ctr.feed(TextSlice(text.text, 0, text.start))

            if not (text.start <= line_ctr.char_pos <= text.end):
                raise ValueError("LineCounter.char_pos is out of bounds")

        self.text = text
        if line_ctr is None:
            line_ctr = LineCounter(b'\n' if isinstance(text, bytes) or (hasattr(text, 'text') and isinstance(text.text, bytes)) else '\n')
        self.line_ctr = line_ctr
        self.last_token = last_token


    def __eq__(self, other):
        if not isinstance(other, LexerState):
            return NotImplemented

        return self.text == other.text and self.line_ctr == other.line_ctr and self.last_token == other.last_token

    def __copy__(self):
        return type(self)(self.text, copy(self.line_ctr), self.last_token)


class LexerThread:
    #--

    def __init__(self, lexer: 'Lexer', lexer_state: Optional[LexerState]):
        self.lexer = lexer
        self.state = lexer_state

    @classmethod
    def from_text(cls, lexer: 'Lexer', text_or_slice: TextOrSlice) -> 'LexerThread':
        text = TextSlice.cast_from(text_or_slice)
        return cls(lexer, LexerState(text))

    @classmethod
    def from_custom_input(cls, lexer: 'Lexer', text: Any) -> 'LexerThread':
        return cls(lexer, LexerState(text))

    def lex(self, parser_state):
        if self.state is None:
            raise TypeError("Cannot lex: No text assigned to lexer state")
        return self.lexer.lex(self.state, parser_state)

    def __copy__(self):
        return type(self)(self.lexer, copy(self.state))

    _Token = Token


_Callback = Callable[[Token], Token]

class Lexer(ABC):
    #--
    @abstractmethod
    def lex(self, lexer_state: LexerState, parser_state: Any) -> Iterator[Token]:
        return NotImplemented

    def make_lexer_state(self, text: str):
        #--
        return LexerState(TextSlice.cast_from(text))


def _check_regex_collisions(terminal_to_regexp: Dict[TerminalDef, str], comparator, strict_mode, max_collisions_to_show=8):
    if not comparator:
        comparator = interegular.Comparator.from_regexes(terminal_to_regexp)

    ##

    ##

    max_time = 2 if strict_mode else 0.2

    ##

    if comparator.count_marked_pairs() >= max_collisions_to_show:
        return
    for group in classify(terminal_to_regexp, lambda t: t.priority).values():
        for a, b in comparator.check(group, skip_marked=True):
            assert a.priority == b.priority
            ##

            comparator.mark(a, b)

            ##

            message = f"Collision between Terminals {a.name} and {b.name}. "
            try:
                example = comparator.get_example_overlap(a, b, max_time).format_multiline()
            except ValueError:
                ##

                example = "No example could be found fast enough. However, the collision does still exists"
            if strict_mode:
                raise LexError(f"{message}\n{example}")
            logger.warning("%s The lexer will choose between them arbitrarily.\n%s", message, example)
            if comparator.count_marked_pairs() >= max_collisions_to_show:
                logger.warning("Found 8 regex collisions, will not check for more.")
                return


class AbstractBasicLexer(Lexer):
    terminals_by_name: Dict[str, TerminalDef]

    @abstractmethod
    def __init__(self, conf: 'LexerConf', comparator=None) -> None:
        ...

    @abstractmethod
    def next_token(self, lex_state: LexerState, parser_state: Any = None) -> Token:
        ...

    def lex(self, state: LexerState, parser_state: Any) -> Iterator[Token]:
        with suppress(EOFError):
            while True:
                yield self.next_token(state, parser_state)


class BasicLexer(AbstractBasicLexer):
    terminals: Collection[TerminalDef]
    ignore_types: FrozenSet[str]
    newline_types: FrozenSet[str]
    user_callbacks: Dict[str, _Callback]
    callback: Dict[str, _Callback]
    re: ModuleType

    def __init__(self, conf: 'LexerConf', comparator=None) -> None:
        terminals = list(conf.terminals)
        assert all(isinstance(t, TerminalDef) for t in terminals), terminals

        self.re = conf.re_module

        if not conf.skip_validation:
            ##

            terminal_to_regexp = {}
            for t in terminals:
                regexp = t.pattern.to_regexp()
                try:
                    self.re.compile(regexp, conf.g_regex_flags)
                except self.re.error:
                    raise LexError("Cannot compile token %s: %s" % (t.name, t.pattern))

                if t.pattern.min_width == 0:
                    raise LexError("Lexer does not allow zero-width terminals. (%s: %s)" % (t.name, t.pattern))
                if t.pattern.type == "re":
                    terminal_to_regexp[t] = regexp

            if not (set(conf.ignore) <= {t.name for t in terminals}):
                raise LexError("Ignore terminals are not defined: %s" % (set(conf.ignore) - {t.name for t in terminals}))

            if has_interegular:
                _check_regex_collisions(terminal_to_regexp, comparator, conf.strict)
            elif conf.strict:
                raise LexError("interegular must be installed for strict mode. Use `pip install 'lark[interegular]'`.")

        ##

        self.newline_types = frozenset(t.name for t in terminals if _regexp_has_newline(t.pattern.to_regexp()))
        self.ignore_types = frozenset(conf.ignore)

        terminals.sort(key=lambda x: (-x.priority, -x.pattern.max_width, -len(x.pattern.value), x.name))
        self.terminals = terminals
        self.user_callbacks = conf.callbacks
        self.g_regex_flags = conf.g_regex_flags
        self.use_bytes = conf.use_bytes
        self.terminals_by_name = conf.terminals_by_name

        self._scanner: Optional[Scanner] = None

    def _build_scanner(self) -> Scanner:
        terminals, self.callback = _create_unless(self.terminals, self.g_regex_flags, self.re, self.use_bytes)
        assert all(self.callback.values())

        for type_, f in self.user_callbacks.items():
            if type_ in self.callback:
                ##

                self.callback[type_] = CallChain(self.callback[type_], f, lambda t: t.type == type_)
            else:
                self.callback[type_] = f

        return Scanner(terminals, self.g_regex_flags, self.re, self.use_bytes)

    @property
    def scanner(self) -> Scanner:
        if self._scanner is None:
            self._scanner = self._build_scanner()
        return self._scanner

    def match(self, text, pos):
        return self.scanner.match(text, pos)

    def next_token(self, lex_state: LexerState, parser_state: Any = None) -> Token:
        line_ctr = lex_state.line_ctr
        while line_ctr.char_pos < lex_state.text.end:
            res = self.match(lex_state.text, line_ctr.char_pos)
            if not res:
                allowed = self.scanner.allowed_types - self.ignore_types
                if not allowed:
                    allowed = {"<END-OF-FILE>"}
                raise UnexpectedCharacters(lex_state.text.text, line_ctr.char_pos, line_ctr.line, line_ctr.column,
                                           allowed=allowed, token_history=lex_state.last_token and [lex_state.last_token],
                                           state=parser_state, terminals_by_name=self.terminals_by_name)

            value, type_ = res

            ignored = type_ in self.ignore_types
            t = None
            if not ignored or type_ in self.callback:
                t = Token(type_, value, line_ctr.char_pos, line_ctr.line, line_ctr.column)
            line_ctr.feed(value, type_ in self.newline_types)
            if t is not None:
                t.end_line = line_ctr.line
                t.end_column = line_ctr.column
                t.end_pos = line_ctr.char_pos
                if t.type in self.callback:
                    t = self.callback[t.type](t)
                if not ignored:
                    if not isinstance(t, Token):
                        raise LexError("Callbacks must return a token (returned %r)" % t)
                    lex_state.last_token = t
                    return t

        ##

        raise EOFError(self)


class ContextualLexer(Lexer):
    lexers: Dict[int, AbstractBasicLexer]
    root_lexer: AbstractBasicLexer

    BasicLexer: Type[AbstractBasicLexer] = BasicLexer

    def __init__(self, conf: 'LexerConf', states: Dict[int, Collection[str]], always_accept: Collection[str]=()) -> None:
        terminals = list(conf.terminals)
        terminals_by_name = conf.terminals_by_name

        trad_conf = copy(conf)
        trad_conf.terminals = terminals

        if has_interegular and not conf.skip_validation:
            comparator = interegular.Comparator.from_regexes({t: t.pattern.to_regexp() for t in terminals})
        else:
            comparator = None
        lexer_by_tokens: Dict[FrozenSet[str], AbstractBasicLexer] = {}
        self.lexers = {}
        for state, accepts in states.items():
            key = frozenset(accepts)
            try:
                lexer = lexer_by_tokens[key]
            except KeyError:
                accepts = set(accepts) | set(conf.ignore) | set(always_accept)
                lexer_conf = copy(trad_conf)
                lexer_conf.terminals = [terminals_by_name[n] for n in accepts if n in terminals_by_name]
                lexer = self.BasicLexer(lexer_conf, comparator)
                lexer_by_tokens[key] = lexer

            self.lexers[state] = lexer

        assert trad_conf.terminals is terminals
        trad_conf.skip_validation = True  ##

        self.root_lexer = self.BasicLexer(trad_conf, comparator)

    def lex(self, lexer_state: LexerState, parser_state: 'ParserState') -> Iterator[Token]:
        try:
            while True:
                lexer = self.lexers[parser_state.position]
                yield lexer.next_token(lexer_state, parser_state)
        except EOFError:
            pass
        except UnexpectedCharacters as e:
            ##

            ##

            try:
                last_token = lexer_state.last_token  ##

                token = self.root_lexer.next_token(lexer_state, parser_state)
                raise UnexpectedToken(token, e.allowed, state=parser_state, token_history=[last_token], terminals_by_name=self.root_lexer.terminals_by_name)
            except UnexpectedCharacters:
                raise e  ##




_ParserArgType: 'TypeAlias' = 'Literal["earley", "lalr", "cyk", "auto"]'
_LexerArgType: 'TypeAlias' = 'Union[Literal["auto", "basic", "contextual", "dynamic", "dynamic_complete"], Type[Lexer]]'
_LexerCallback = Callable[[Token], Token]
ParserCallbacks = Dict[str, Callable]

class LexerConf(Serialize):
    __serialize_fields__ = 'terminals', 'ignore', 'g_regex_flags', 'use_bytes', 'lexer_type'
    __serialize_namespace__ = TerminalDef,

    terminals: Collection[TerminalDef]
    re_module: ModuleType
    ignore: Collection[str]
    postlex: 'Optional[PostLex]'
    callbacks: Dict[str, _LexerCallback]
    g_regex_flags: int
    skip_validation: bool
    use_bytes: bool
    lexer_type: Optional[_LexerArgType]
    strict: bool

    def __init__(self, terminals: Collection[TerminalDef], re_module: ModuleType, ignore: Collection[str]=(), postlex: 'Optional[PostLex]'=None,
                 callbacks: Optional[Dict[str, _LexerCallback]]=None, g_regex_flags: int=0, skip_validation: bool=False, use_bytes: bool=False, strict: bool=False):
        self.terminals = terminals
        self.terminals_by_name = {t.name: t for t in self.terminals}
        assert len(self.terminals) == len(self.terminals_by_name)
        self.ignore = ignore
        self.postlex = postlex
        self.callbacks = callbacks or {}
        self.g_regex_flags = g_regex_flags
        self.re_module = re_module
        self.skip_validation = skip_validation
        self.use_bytes = use_bytes
        self.strict = strict
        self.lexer_type = None

    def _deserialize(self):
        self.terminals_by_name = {t.name: t for t in self.terminals}

    def __deepcopy__(self, memo=None):
        return type(self)(
            deepcopy(self.terminals, memo),
            self.re_module,
            deepcopy(self.ignore, memo),
            deepcopy(self.postlex, memo),
            deepcopy(self.callbacks, memo),
            deepcopy(self.g_regex_flags, memo),
            deepcopy(self.skip_validation, memo),
            deepcopy(self.use_bytes, memo),
        )

class ParserConf(Serialize):
    __serialize_fields__ = 'rules', 'start', 'parser_type'

    rules: List['Rule']
    callbacks: ParserCallbacks
    start: List[str]
    parser_type: _ParserArgType

    def __init__(self, rules: List['Rule'], callbacks: ParserCallbacks, start: List[str]):
        assert isinstance(start, list)
        self.rules = rules
        self.callbacks = callbacks
        self.start = start


from functools import partial, wraps
from itertools import product


class ExpandSingleChild:
    def __init__(self, node_builder):
        self.node_builder = node_builder

    def __call__(self, children):
        if len(children) == 1:
            return children[0]
        else:
            return self.node_builder(children)



class PropagatePositions:
    def __init__(self, node_builder, node_filter=None):
        self.node_builder = node_builder
        self.node_filter = node_filter

    def __call__(self, children):
        res = self.node_builder(children)

        if isinstance(res, Tree):
            ##

            ##

            ##

            ##


            res_meta = res.meta

            first_meta = self._pp_get_meta(children)
            if first_meta is not None:
                if not hasattr(res_meta, 'line'):
                    ##

                    res_meta.line = getattr(first_meta, 'container_line', first_meta.line)
                    res_meta.column = getattr(first_meta, 'container_column', first_meta.column)
                    res_meta.start_pos = getattr(first_meta, 'container_start_pos', first_meta.start_pos)
                    res_meta.empty = False

                res_meta.container_line = getattr(first_meta, 'container_line', first_meta.line)
                res_meta.container_column = getattr(first_meta, 'container_column', first_meta.column)
                res_meta.container_start_pos = getattr(first_meta, 'container_start_pos', first_meta.start_pos)

            last_meta = self._pp_get_meta(reversed(children))
            if last_meta is not None:
                if not hasattr(res_meta, 'end_line'):
                    res_meta.end_line = getattr(last_meta, 'container_end_line', last_meta.end_line)
                    res_meta.end_column = getattr(last_meta, 'container_end_column', last_meta.end_column)
                    res_meta.end_pos = getattr(last_meta, 'container_end_pos', last_meta.end_pos)
                    res_meta.empty = False

                res_meta.container_end_line = getattr(last_meta, 'container_end_line', last_meta.end_line)
                res_meta.container_end_column = getattr(last_meta, 'container_end_column', last_meta.end_column)
                res_meta.container_end_pos = getattr(last_meta, 'container_end_pos', last_meta.end_pos)

        return res

    def _pp_get_meta(self, children):
        for c in children:
            if self.node_filter is not None and not self.node_filter(c):
                continue
            if isinstance(c, Tree):
                if not c.meta.empty:
                    return c.meta
            elif isinstance(c, Token):
                return c
            elif hasattr(c, '__lark_meta__'):
                return c.__lark_meta__()

def make_propagate_positions(option):
    if callable(option):
        return partial(PropagatePositions, node_filter=option)
    elif option is True:
        return PropagatePositions
    elif option is False:
        return None

    raise ConfigurationError('Invalid option for propagate_positions: %r' % option)


class ChildFilter:
    def __init__(self, to_include, append_none, node_builder):
        self.node_builder = node_builder
        self.to_include = to_include
        self.append_none = append_none

    def __call__(self, children):
        filtered = []

        for i, to_expand, add_none in self.to_include:
            if add_none:
                filtered += [None] * add_none
            if to_expand:
                filtered += children[i].children
            else:
                filtered.append(children[i])

        if self.append_none:
            filtered += [None] * self.append_none

        return self.node_builder(filtered)


class ChildFilterLALR(ChildFilter):
    #--

    def __call__(self, children):
        filtered = []
        for i, to_expand, add_none in self.to_include:
            if add_none:
                filtered += [None] * add_none
            if to_expand:
                if filtered:
                    filtered += children[i].children
                else:   ##

                    filtered = children[i].children
            else:
                filtered.append(children[i])

        if self.append_none:
            filtered += [None] * self.append_none

        return self.node_builder(filtered)


class ChildFilterLALR_NoPlaceholders(ChildFilter):
    #--
    def __init__(self, to_include, node_builder):
        self.node_builder = node_builder
        self.to_include = to_include

    def __call__(self, children):
        filtered = []
        for i, to_expand in self.to_include:
            if to_expand:
                if filtered:
                    filtered += children[i].children
                else:   ##

                    filtered = children[i].children
            else:
                filtered.append(children[i])
        return self.node_builder(filtered)


def _should_expand(sym):
    return not sym.is_term and sym.name.startswith('_')


def maybe_create_child_filter(expansion, keep_all_tokens, ambiguous, _empty_indices: List[bool]):
    ##

    if _empty_indices:
        assert _empty_indices.count(False) == len(expansion)
        s = ''.join(str(int(b)) for b in _empty_indices)
        empty_indices = [len(ones) for ones in s.split('0')]
        assert len(empty_indices) == len(expansion)+1, (empty_indices, len(expansion))
    else:
        empty_indices = [0] * (len(expansion)+1)

    to_include = []
    nones_to_add = 0
    for i, sym in enumerate(expansion):
        nones_to_add += empty_indices[i]
        if keep_all_tokens or not (sym.is_term and sym.filter_out):
            to_include.append((i, _should_expand(sym), nones_to_add))
            nones_to_add = 0

    nones_to_add += empty_indices[len(expansion)]

    if _empty_indices or len(to_include) < len(expansion) or any(to_expand for i, to_expand,_ in to_include):
        if _empty_indices or ambiguous:
            return partial(ChildFilter if ambiguous else ChildFilterLALR, to_include, nones_to_add)
        else:
            ##

            return partial(ChildFilterLALR_NoPlaceholders, [(i, x) for i,x,_ in to_include])


class AmbiguousExpander:
    #--
    def __init__(self, to_expand, tree_class, node_builder):
        self.node_builder = node_builder
        self.tree_class = tree_class
        self.to_expand = to_expand

    def __call__(self, children):
        def _is_ambig_tree(t):
            return hasattr(t, 'data') and t.data == '_ambig'

        ##

        ##

        ##

        ##

        ambiguous = []
        for i, child in enumerate(children):
            if _is_ambig_tree(child):
                if i in self.to_expand:
                    ambiguous.append(i)

                child.expand_kids_by_data('_ambig')

        if not ambiguous:
            return self.node_builder(children)

        expand = [child.children if i in ambiguous else (child,) for i, child in enumerate(children)]
        return self.tree_class('_ambig', [self.node_builder(list(f)) for f in product(*expand)])


def maybe_create_ambiguous_expander(tree_class, expansion, keep_all_tokens):
    to_expand = [i for i, sym in enumerate(expansion)
                 if keep_all_tokens or ((not (sym.is_term and sym.filter_out)) and _should_expand(sym))]
    if to_expand:
        return partial(AmbiguousExpander, to_expand, tree_class)


class AmbiguousIntermediateExpander:
    #--

    def __init__(self, tree_class, node_builder):
        self.node_builder = node_builder
        self.tree_class = tree_class

    def __call__(self, children):
        def _is_iambig_tree(child):
            return hasattr(child, 'data') and child.data == '_iambig'

        def _collapse_iambig(children):
            #--

            ##

            ##

            if children and _is_iambig_tree(children[0]):
                iambig_node = children[0]
                result = []
                for grandchild in iambig_node.children:
                    collapsed = _collapse_iambig(grandchild.children)
                    if collapsed:
                        for child in collapsed:
                            child.children += children[1:]
                        result += collapsed
                    else:
                        new_tree = self.tree_class('_inter', grandchild.children + children[1:])
                        result.append(new_tree)
                return result

        collapsed = _collapse_iambig(children)
        if collapsed:
            processed_nodes = [self.node_builder(c.children) for c in collapsed]
            return self.tree_class('_ambig', processed_nodes)

        return self.node_builder(children)



def inplace_transformer(func):
    @wraps(func)
    def f(children):
        ##

        tree = Tree(func.__name__, children)
        return func(tree)
    return f


def apply_visit_wrapper(func, name, wrapper):
    if wrapper is _vargs_meta or wrapper is _vargs_meta_inline:
        raise NotImplementedError("Meta args not supported for internal transformer; use YourTransformer().transform(parser.parse()) instead")

    @wraps(func)
    def f(children):
        return wrapper(func, name, children, None)
    return f


class ParseTreeBuilder:
    def __init__(self, rules, tree_class, propagate_positions=False, ambiguous=False, maybe_placeholders=False):
        self.tree_class = tree_class
        self.propagate_positions = propagate_positions
        self.ambiguous = ambiguous
        self.maybe_placeholders = maybe_placeholders

        self.rule_builders = list(self._init_builders(rules))

    def _init_builders(self, rules):
        propagate_positions = make_propagate_positions(self.propagate_positions)

        for rule in rules:
            options = rule.options
            keep_all_tokens = options.keep_all_tokens
            expand_single_child = options.expand1

            wrapper_chain = list(filter(None, [
                (expand_single_child and not rule.alias) and ExpandSingleChild,
                maybe_create_child_filter(rule.expansion, keep_all_tokens, self.ambiguous, options.empty_indices if self.maybe_placeholders else None),
                propagate_positions,
                self.ambiguous and maybe_create_ambiguous_expander(self.tree_class, rule.expansion, keep_all_tokens),
                self.ambiguous and partial(AmbiguousIntermediateExpander, self.tree_class)
            ]))

            yield rule, wrapper_chain

    def create_callback(self, transformer=None):
        callbacks = {}

        default_handler = getattr(transformer, '__default__', None)
        if default_handler:
            def default_callback(data, children):
                return default_handler(data, children, None)
        else:
            default_callback = self.tree_class

        for rule, wrapper_chain in self.rule_builders:

            user_callback_name = rule.alias or rule.options.template_source or rule.origin.name
            try:
                f = getattr(transformer, user_callback_name)
                wrapper = getattr(f, 'visit_wrapper', None)
                if wrapper is not None:
                    f = apply_visit_wrapper(f, user_callback_name, wrapper)
                elif isinstance(transformer, Transformer_InPlace):
                    f = inplace_transformer(f)
            except AttributeError:
                f = partial(default_callback, user_callback_name)

            for w in wrapper_chain:
                f = w(f)

            if rule in callbacks:
                raise GrammarError("Rule '%s' already exists" % (rule,))

            callbacks[rule] = f

        return callbacks



class Action:
    def __init__(self, name):
        self.name = name
    def __str__(self):
        return self.name
    def __repr__(self):
        return str(self)

Shift = Action('Shift')
Reduce = Action('Reduce')

StateT = TypeVar("StateT")

class ParseTableBase(Generic[StateT]):
    states: Dict[StateT, Dict[str, Tuple]]
    start_states: Dict[str, StateT]
    end_states: Dict[str, StateT]

    def __init__(self, states, start_states, end_states):
        self.states = states
        self.start_states = start_states
        self.end_states = end_states

    def serialize(self, memo):
        tokens = Enumerator()

        states = {
            state: {tokens.get(token): ((1, arg.serialize(memo)) if action is Reduce else (0, arg))
                    for token, (action, arg) in actions.items()}
            for state, actions in self.states.items()
        }

        return {
            'tokens': tokens.reversed(),
            'states': states,
            'start_states': self.start_states,
            'end_states': self.end_states,
        }

    @classmethod
    def deserialize(cls, data, memo):
        tokens = data['tokens']
        states = {
            state: {tokens[token]: ((Reduce, Rule.deserialize(arg, memo)) if action==1 else (Shift, arg))
                    for token, (action, arg) in actions.items()}
            for state, actions in data['states'].items()
        }
        return cls(states, data['start_states'], data['end_states'])

class ParseTable(ParseTableBase['State']):
    #--
    pass


class IntParseTable(ParseTableBase[int]):
    #--

    @classmethod
    def from_ParseTable(cls, parse_table: ParseTable):
        enum = list(parse_table.states)
        state_to_idx: Dict['State', int] = {s:i for i,s in enumerate(enum)}
        int_states = {}

        for s, la in parse_table.states.items():
            la = {k:(v[0], state_to_idx[v[1]]) if v[0] is Shift else v
                  for k,v in la.items()}
            int_states[ state_to_idx[s] ] = la


        start_states = {start:state_to_idx[s] for start, s in parse_table.start_states.items()}
        end_states = {start:state_to_idx[s] for start, s in parse_table.end_states.items()}
        return cls(int_states, start_states, end_states)



class ParseConf(Generic[StateT]):
    __slots__ = 'parse_table', 'callbacks', 'start', 'start_state', 'end_state', 'states'

    parse_table: ParseTableBase[StateT]
    callbacks: ParserCallbacks
    start: str

    start_state: StateT
    end_state: StateT
    states: Dict[StateT, Dict[str, tuple]]

    def __init__(self, parse_table: ParseTableBase[StateT], callbacks: ParserCallbacks, start: str):
        self.parse_table = parse_table

        self.start_state = self.parse_table.start_states[start]
        self.end_state = self.parse_table.end_states[start]
        self.states = self.parse_table.states

        self.callbacks = callbacks
        self.start = start

class ParserState(Generic[StateT]):
    __slots__ = 'parse_conf', 'lexer', 'state_stack', 'value_stack'

    parse_conf: ParseConf[StateT]
    lexer: LexerThread
    state_stack: List[StateT]
    value_stack: list

    def __init__(self, parse_conf: ParseConf[StateT], lexer: LexerThread, state_stack=None, value_stack=None):
        self.parse_conf = parse_conf
        self.lexer = lexer
        self.state_stack = state_stack or [self.parse_conf.start_state]
        self.value_stack = value_stack or []

    @property
    def position(self) -> StateT:
        return self.state_stack[-1]

    ##

    def __eq__(self, other) -> bool:
        if not isinstance(other, ParserState):
            return NotImplemented
        return len(self.state_stack) == len(other.state_stack) and self.position == other.position

    def __copy__(self):
        return self.copy()

    def copy(self, deepcopy_values=True) -> 'ParserState[StateT]':
        return type(self)(
            self.parse_conf,
            self.lexer, ##

            copy(self.state_stack),
            deepcopy(self.value_stack) if deepcopy_values else copy(self.value_stack),
        )

    def feed_token(self, token: Token, is_end=False) -> Any:
        state_stack = self.state_stack
        value_stack = self.value_stack
        states = self.parse_conf.states
        end_state = self.parse_conf.end_state
        callbacks = self.parse_conf.callbacks

        while True:
            state = state_stack[-1]
            try:
                action, arg = states[state][token.type]
            except KeyError:
                expected = {s for s in states[state].keys() if s.isupper()}
                raise UnexpectedToken(token, expected, state=self, interactive_parser=None)

            assert arg != end_state

            if action is Shift:
                ##

                assert not is_end
                state_stack.append(arg)
                value_stack.append(token if token.type not in callbacks else callbacks[token.type](token))
                return
            else:
                ##

                rule = arg
                size = len(rule.expansion)
                if size:
                    s = value_stack[-size:]
                    del state_stack[-size:]
                    del value_stack[-size:]
                else:
                    s = []

                value = callbacks[rule](s) if callbacks else s

                _action, new_state = states[state_stack[-1]][rule.origin.name]
                assert _action is Shift
                state_stack.append(new_state)
                value_stack.append(value)

                if is_end and state_stack[-1] == end_state:
                    return value_stack[-1]


class LALR_Parser(Serialize):
    def __init__(self, parser_conf: ParserConf, debug: bool=False, strict: bool=False):
        analysis = LALR_Analyzer(parser_conf, debug=debug, strict=strict)
        analysis.compute_lalr()
        callbacks = parser_conf.callbacks

        self._parse_table = analysis.parse_table
        self.parser_conf = parser_conf
        self.parser = _Parser(analysis.parse_table, callbacks, debug)

    @classmethod
    def deserialize(cls, data, memo, callbacks, debug=False):
        inst = cls.__new__(cls)
        inst._parse_table = IntParseTable.deserialize(data, memo)
        inst.parser = _Parser(inst._parse_table, callbacks, debug)
        return inst

    def serialize(self, memo: Any = None) -> Dict[str, Any]:
        return self._parse_table.serialize(memo)

    def parse_interactive(self, lexer: LexerThread, start: str):
        return self.parser.parse(lexer, start, start_interactive=True)

    def parse(self, lexer, start, on_error=None):
        try:
            return self.parser.parse(lexer, start)
        except UnexpectedInput as e:
            if on_error is None:
                raise

            while True:
                if isinstance(e, UnexpectedCharacters):
                    s = e.interactive_parser.lexer_thread.state
                    p = s.line_ctr.char_pos

                if not on_error(e):
                    raise e

                if isinstance(e, UnexpectedCharacters):
                    ##

                    if p == s.line_ctr.char_pos:
                        s.line_ctr.feed(s.text.text[p:p+1])

                try:
                    return e.interactive_parser.resume_parse()
                except UnexpectedToken as e2:
                    if (isinstance(e, UnexpectedToken)
                        and e.token.type == e2.token.type == '$END'
                        and e.interactive_parser == e2.interactive_parser):
                        ##

                        raise e2
                    e = e2
                except UnexpectedCharacters as e2:
                    e = e2


class _Parser:
    parse_table: ParseTableBase
    callbacks: ParserCallbacks
    debug: bool

    def __init__(self, parse_table: ParseTableBase, callbacks: ParserCallbacks, debug: bool=False):
        self.parse_table = parse_table
        self.callbacks = callbacks
        self.debug = debug

    def parse(self, lexer: LexerThread, start: str, value_stack=None, state_stack=None, start_interactive=False):
        parse_conf = ParseConf(self.parse_table, self.callbacks, start)
        parser_state = ParserState(parse_conf, lexer, state_stack, value_stack)
        if start_interactive:
            return InteractiveParser(self, parser_state, parser_state.lexer)
        return self.parse_from_state(parser_state)


    def parse_from_state(self, state: ParserState, last_token: Optional[Token]=None):
        #--
        try:
            token = last_token
            for token in state.lexer.lex(state):
                assert token is not None
                state.feed_token(token)

            end_token = Token.new_borrow_pos('$END', '', token) if token else Token('$END', '', 0, 1, 1)
            return state.feed_token(end_token, True)
        except UnexpectedInput as e:
            try:
                e.interactive_parser = InteractiveParser(self, state, state.lexer)
            except NameError:
                pass
            raise e
        except Exception as e:
            if self.debug:
                print("")
                print("STATE STACK DUMP")
                print("----------------")
                for i, s in enumerate(state.state_stack):
                    print('%d)' % i , s)
                print("")

            raise


class InteractiveParser:
    #--
    def __init__(self, parser, parser_state: ParserState, lexer_thread: LexerThread):
        self.parser = parser
        self.parser_state = parser_state
        self.lexer_thread = lexer_thread
        self.result = None

    @property
    def lexer_state(self) -> LexerThread:
        warnings.warn("lexer_state will be removed in subsequent releases. Use lexer_thread instead.", DeprecationWarning)
        return self.lexer_thread

    def feed_token(self, token: Token):
        #--
        return self.parser_state.feed_token(token, token.type == '$END')

    def iter_parse(self) -> Iterator[Token]:
        #--
        for token in self.lexer_thread.lex(self.parser_state):
            yield token
            self.result = self.feed_token(token)

    def exhaust_lexer(self) -> List[Token]:
        #--
        return list(self.iter_parse())


    def feed_eof(self, last_token=None):
        #--
        eof = Token.new_borrow_pos('$END', '', last_token) if last_token is not None else self.lexer_thread._Token('$END', '', 0, 1, 1)
        return self.feed_token(eof)


    def __copy__(self):
        #--
        return self.copy()

    def copy(self, deepcopy_values=True):
        return type(self)(
            self.parser,
            self.parser_state.copy(deepcopy_values=deepcopy_values),
            copy(self.lexer_thread),
        )

    def __eq__(self, other):
        if not isinstance(other, InteractiveParser):
            return False

        return self.parser_state == other.parser_state and self.lexer_thread == other.lexer_thread

    def as_immutable(self):
        #--
        p = copy(self)
        return ImmutableInteractiveParser(p.parser, p.parser_state, p.lexer_thread)

    def pretty(self):
        #--
        out = ["Parser choices:"]
        for k, v in self.choices().items():
            out.append('\t- %s -> %r' % (k, v))
        out.append('stack size: %s' % len(self.parser_state.state_stack))
        return '\n'.join(out)

    def choices(self):
        #--
        return self.parser_state.parse_conf.parse_table.states[self.parser_state.position]

    def accepts(self):
        #--
        accepts = set()
        conf_no_callbacks = copy(self.parser_state.parse_conf)
        ##

        ##

        conf_no_callbacks.callbacks = {}
        for t in self.choices():
            if t.isupper(): ##

                new_cursor = self.copy(deepcopy_values=False)
                new_cursor.parser_state.parse_conf = conf_no_callbacks
                try:
                    new_cursor.feed_token(self.lexer_thread._Token(t, ''))
                except UnexpectedToken:
                    pass
                else:
                    accepts.add(t)
        return accepts

    def resume_parse(self):
        #--
        return self.parser.parse_from_state(self.parser_state, last_token=self.lexer_thread.state.last_token)



class ImmutableInteractiveParser(InteractiveParser):
    #--

    result = None

    def __hash__(self):
        return hash((self.parser_state, self.lexer_thread))

    def feed_token(self, token):
        c = copy(self)
        c.result = InteractiveParser.feed_token(c, token)
        return c

    def exhaust_lexer(self):
        #--
        cursor = self.as_mutable()
        cursor.exhaust_lexer()
        return cursor.as_immutable()

    def as_mutable(self):
        #--
        p = copy(self)
        return InteractiveParser(p.parser, p.parser_state, p.lexer_thread)



def _wrap_lexer(lexer_class):
    future_interface = getattr(lexer_class, '__future_interface__', 0)
    if future_interface == 2:
        return lexer_class
    elif future_interface == 1:
        class CustomLexerWrapper1(Lexer):
            def __init__(self, lexer_conf):
                self.lexer = lexer_class(lexer_conf)
            def lex(self, lexer_state, parser_state):
                if isinstance(lexer_state.text, TextSlice) and not lexer_state.text.is_complete_text():
                    raise TypeError("Interface=1 Custom Lexer don't support TextSlice")
                lexer_state.text = lexer_state.text
                return self.lexer.lex(lexer_state, parser_state)
        return CustomLexerWrapper1
    elif future_interface == 0:
        class CustomLexerWrapper0(Lexer):
            def __init__(self, lexer_conf):
                self.lexer = lexer_class(lexer_conf)

            def lex(self, lexer_state, parser_state):
                if isinstance(lexer_state.text, TextSlice):
                    if not lexer_state.text.is_complete_text():
                        raise TypeError("Interface=0 Custom Lexer don't support TextSlice")
                    return self.lexer.lex(lexer_state.text.text)
                return self.lexer.lex(lexer_state.text)
        return CustomLexerWrapper0
    else:
        raise ValueError(f"Unknown __future_interface__ value {future_interface}, integer 0-2 expected")


def _deserialize_parsing_frontend(data, memo, lexer_conf, callbacks, options):
    parser_conf = ParserConf.deserialize(data['parser_conf'], memo)
    cls = (options and options._plugins.get('LALR_Parser')) or LALR_Parser
    parser = cls.deserialize(data['parser'], memo, callbacks, options.debug)
    parser_conf.callbacks = callbacks
    return ParsingFrontend(lexer_conf, parser_conf, options, parser=parser)


_parser_creators: 'Dict[str, Callable[[LexerConf, Any, Any], Any]]' = {}


class ParsingFrontend(Serialize):
    __serialize_fields__ = 'lexer_conf', 'parser_conf', 'parser'

    lexer_conf: LexerConf
    parser_conf: ParserConf
    options: Any

    def __init__(self, lexer_conf: LexerConf, parser_conf: ParserConf, options, parser=None):
        self.parser_conf = parser_conf
        self.lexer_conf = lexer_conf
        self.options = options

        ##

        if parser:  ##

            self.parser = parser
        else:
            create_parser = _parser_creators.get(parser_conf.parser_type)
            assert create_parser is not None, "{} is not supported in standalone mode".format(
                    parser_conf.parser_type
                )
            self.parser = create_parser(lexer_conf, parser_conf, options)

        ##

        lexer_type = options.lexer if (options and options.lexer) else lexer_conf.lexer_type
        self.skip_lexer = False
        if lexer_type in ('dynamic', 'dynamic_complete'):
            assert lexer_conf.postlex is None
            self.skip_lexer = True
            return

        if isinstance(lexer_type, type):
            assert issubclass(lexer_type, Lexer) or hasattr(lexer_type, 'lex')
            self.lexer = _wrap_lexer(lexer_type)(lexer_conf)
        elif isinstance(lexer_type, str):
            create_lexer = {
                'basic': create_basic_lexer,
                'contextual': create_contextual_lexer,
            }[lexer_type]
            self.lexer = create_lexer(lexer_conf, self.parser, lexer_conf.postlex, options)
        else:
            raise TypeError("Bad value for lexer_type: {lexer_type}")

        if lexer_conf.postlex:
            self.lexer = PostLexConnector(self.lexer, lexer_conf.postlex)

    def _verify_start(self, start=None):
        if start is None:
            start_decls = self.parser_conf.start
            if len(start_decls) > 1:
                raise ConfigurationError("Lark initialized with more than 1 possible start rule. Must specify which start rule to parse", start_decls)
            start ,= start_decls
        elif start not in self.parser_conf.start:
            raise ConfigurationError("Unknown start rule %s. Must be one of %r" % (start, self.parser_conf.start))
        return start

    def _make_lexer_thread(self, text: Optional[LarkInput]) -> Union[LarkInput, LexerThread, None]:
        cls = (self.options and self.options._plugins.get('LexerThread')) or LexerThread
        if self.skip_lexer:
            return text
        if text is None:
            return cls(self.lexer, None)
        if isinstance(text, (str, bytes, TextSlice)):
            return cls.from_text(self.lexer, text)
        return cls.from_custom_input(self.lexer, text)

    def parse(self, text: Optional[LarkInput], start=None, on_error=None):
        if self.lexer_conf.lexer_type in ("dynamic", "dynamic_complete"):
            if isinstance(text, TextSlice) and not text.is_complete_text():
                raise TypeError(f"Lexer {self.lexer_conf.lexer_type} does not support text slices.")

        chosen_start = self._verify_start(start)
        kw = {} if on_error is None else {'on_error': on_error}
        stream = self._make_lexer_thread(text)
        return self.parser.parse(stream, chosen_start, **kw)

    def parse_interactive(self, text: Optional[TextOrSlice]=None, start=None):
        ##

        ##

        chosen_start = self._verify_start(start)
        if self.parser_conf.parser_type != 'lalr':
            raise ConfigurationError("parse_interactive() currently only works with parser='lalr' ")
        stream = self._make_lexer_thread(text)
        return self.parser.parse_interactive(stream, chosen_start)


def _validate_frontend_args(parser, lexer) -> None:
    assert_config(parser, ('lalr', 'earley', 'cyk'))
    if not isinstance(lexer, type):     ##

        expected = {
            'lalr': ('basic', 'contextual'),
            'earley': ('basic', 'dynamic', 'dynamic_complete'),
            'cyk': ('basic', ),
         }[parser]
        assert_config(lexer, expected, 'Parser %r does not support lexer %%r, expected one of %%s' % parser)


def _get_lexer_callbacks(transformer, terminals):
    result = {}
    for terminal in terminals:
        callback = getattr(transformer, terminal.name, None)
        if callback is not None:
            result[terminal.name] = callback
    return result

class PostLexConnector:
    def __init__(self, lexer, postlexer):
        self.lexer = lexer
        self.postlexer = postlexer

    def lex(self, lexer_state, parser_state):
        i = self.lexer.lex(lexer_state, parser_state)
        return self.postlexer.process(i)



def create_basic_lexer(lexer_conf, parser, postlex, options) -> BasicLexer:
    cls = (options and options._plugins.get('BasicLexer')) or BasicLexer
    return cls(lexer_conf)

def create_contextual_lexer(lexer_conf: LexerConf, parser, postlex, options) -> ContextualLexer:
    cls = (options and options._plugins.get('ContextualLexer')) or ContextualLexer
    parse_table: ParseTableBase[int] = parser._parse_table
    states: Dict[int, Collection[str]] = {idx:list(t.keys()) for idx, t in parse_table.states.items()}
    always_accept: Collection[str] = postlex.always_accept if postlex else ()
    return cls(lexer_conf, states, always_accept=always_accept)

def create_lalr_parser(lexer_conf: LexerConf, parser_conf: ParserConf, options=None) -> LALR_Parser:
    debug = options.debug if options else False
    strict = options.strict if options else False
    cls = (options and options._plugins.get('LALR_Parser')) or LALR_Parser
    return cls(parser_conf, debug=debug, strict=strict)

_parser_creators['lalr'] = create_lalr_parser




class PostLex(ABC):
    @abstractmethod
    def process(self, stream: Iterator[Token]) -> Iterator[Token]:
        return stream

    always_accept: Iterable[str] = ()

class LarkOptions(Serialize):
    #--

    start: List[str]
    debug: bool
    strict: bool
    transformer: 'Optional[Transformer]'
    propagate_positions: Union[bool, str]
    maybe_placeholders: bool
    cache: Union[bool, str]
    cache_grammar: bool
    regex: bool
    g_regex_flags: int
    keep_all_tokens: bool
    tree_class: Optional[Callable[[str, List], Any]]
    parser: _ParserArgType
    lexer: _LexerArgType
    ambiguity: 'Literal["auto", "resolve", "explicit", "forest"]'
    postlex: Optional[PostLex]
    priority: 'Optional[Literal["auto", "normal", "invert"]]'
    lexer_callbacks: Dict[str, Callable[[Token], Token]]
    use_bytes: bool
    ordered_sets: bool
    edit_terminals: Optional[Callable[[TerminalDef], TerminalDef]]
    import_paths: 'List[Union[str, Callable[[Union[None, str, PackageResource], str], Tuple[str, str]]]]'
    source_path: Optional[str]

    OPTIONS_DOC = r"""
    **===  General Options  ===**

    start
            The start symbol. Either a string, or a list of strings for multiple possible starts (Default: "start")
    debug
            Display debug information and extra warnings. Use only when debugging (Default: ``False``)
            When used with Earley, it generates a forest graph as "sppf.png", if 'dot' is installed.
    strict
            Throw an exception on any potential ambiguity, including shift/reduce conflicts, and regex collisions.
    transformer
            Applies the transformer to every parse tree (equivalent to applying it after the parse, but faster)
    propagate_positions
            Propagates positional attributes into the 'meta' attribute of all tree branches.
            Sets attributes: (line, column, end_line, end_column, start_pos, end_pos,
                              container_line, container_column, container_end_line, container_end_column)
            Accepts ``False``, ``True``, or a callable, which will filter which nodes to ignore when propagating.
    maybe_placeholders
            When ``True``, the ``[]`` operator returns ``None`` when not matched.
            When ``False``,  ``[]`` behaves like the ``?`` operator, and returns no value at all.
            (default= ``True``)
    cache
            Cache the results of the Lark grammar analysis, for x2 to x3 faster loading. LALR only for now.

            - When ``False``, does nothing (default)
            - When ``True``, caches to a temporary file in the local directory
            - When given a string, caches to the path pointed by the string
    cache_grammar
            For use with ``cache`` option. When ``True``, the unanalyzed grammar is also included in the cache.
            Useful for classes that require the ``Lark.grammar`` to be present (e.g. Reconstructor).
            (default= ``False``)
    regex
            When True, uses the ``regex`` module instead of the stdlib ``re``.
    g_regex_flags
            Flags that are applied to all terminals (both regex and strings)
    keep_all_tokens
            Prevent the tree builder from automagically removing "punctuation" tokens (Default: ``False``)
    tree_class
            Lark will produce trees comprised of instances of this class instead of the default ``lark.Tree``.

    **=== Algorithm Options ===**

    parser
            Decides which parser engine to use. Accepts "earley" or "lalr". (Default: "earley").
            (there is also a "cyk" option for legacy)
    lexer
            Decides whether or not to use a lexer stage

            - "auto" (default): Choose for me based on the parser
            - "basic": Use a basic lexer
            - "contextual": Stronger lexer (only works with parser="lalr")
            - "dynamic": Flexible and powerful (only with parser="earley")
            - "dynamic_complete": Same as dynamic, but tries *every* variation of tokenizing possible.
    ambiguity
            Decides how to handle ambiguity in the parse. Only relevant if parser="earley"

            - "resolve": The parser will automatically choose the simplest derivation
              (it chooses consistently: greedy for tokens, non-greedy for rules)
            - "explicit": The parser will return all derivations wrapped in "_ambig" tree nodes (i.e. a forest).
            - "forest": The parser will return the root of the shared packed parse forest.

    **=== Misc. / Domain Specific Options ===**

    postlex
            Lexer post-processing (Default: ``None``) Only works with the basic and contextual lexers.
    priority
            How priorities should be evaluated - "auto", ``None``, "normal", "invert" (Default: "auto")
    lexer_callbacks
            Dictionary of callbacks for the lexer. May alter tokens during lexing. Use with caution.
    use_bytes
            Accept an input of type ``bytes`` instead of ``str``.
    ordered_sets
            Should Earley use ordered-sets to achieve stable output (~10% slower than regular sets. Default: True)
    edit_terminals
            A callback for editing the terminals before parse.
    import_paths
            A List of either paths or loader functions to specify from where grammars are imported
    source_path
            Override the source of from where the grammar was loaded. Useful for relative imports and unconventional grammar loading
    **=== End of Options ===**
    """
    if __doc__:
        __doc__ += OPTIONS_DOC


    ##

    ##

    ##

    ##

    ##

    ##

    _defaults: Dict[str, Any] = {
        'debug': False,
        'strict': False,
        'keep_all_tokens': False,
        'tree_class': None,
        'cache': False,
        'cache_grammar': False,
        'postlex': None,
        'parser': 'earley',
        'lexer': 'auto',
        'transformer': None,
        'start': 'start',
        'priority': 'auto',
        'ambiguity': 'auto',
        'regex': False,
        'propagate_positions': False,
        'lexer_callbacks': {},
        'maybe_placeholders': True,
        'edit_terminals': None,
        'g_regex_flags': 0,
        'use_bytes': False,
        'ordered_sets': True,
        'import_paths': [],
        'source_path': None,
        '_plugins': {},
    }

    def __init__(self, options_dict: Dict[str, Any]) -> None:
        o = dict(options_dict)

        options = {}
        for name, default in self._defaults.items():
            if name in o:
                value = o.pop(name)
                if isinstance(default, bool) and name not in ('cache', 'use_bytes', 'propagate_positions'):
                    value = bool(value)
            else:
                value = default

            options[name] = value

        if isinstance(options['start'], str):
            options['start'] = [options['start']]

        self.__dict__['options'] = options


        assert_config(self.parser, ('earley', 'lalr', 'cyk', None))

        if self.parser == 'earley' and self.transformer:
            raise ConfigurationError('Cannot specify an embedded transformer when using the Earley algorithm. '
                             'Please use your transformer on the resulting parse tree, or use a different algorithm (i.e. LALR)')

        if self.cache_grammar and not self.cache:
            raise ConfigurationError('cache_grammar cannot be set when cache is disabled')

        if o:
            raise ConfigurationError("Unknown options: %s" % o.keys())

    def __getattr__(self, name: str) -> Any:
        try:
            return self.__dict__['options'][name]
        except KeyError as e:
            raise AttributeError(e)

    def __setattr__(self, name: str, value: str) -> None:
        assert_config(name, self.options.keys(), "%r isn't a valid option. Expected one of: %s")
        self.options[name] = value

    def serialize(self, memo = None) -> Dict[str, Any]:
        return self.options

    @classmethod
    def deserialize(cls, data: Dict[str, Any], memo: Dict[int, Union[TerminalDef, Rule]]) -> "LarkOptions":
        return cls(data)


##

##

_LOAD_ALLOWED_OPTIONS = {'lexer', 'postlex', 'transformer', 'lexer_callbacks', 'use_bytes', 'debug', 'g_regex_flags', 'regex', 'propagate_positions', 'tree_class', '_plugins'}

_VALID_PRIORITY_OPTIONS = ('auto', 'normal', 'invert', None)
_VALID_AMBIGUITY_OPTIONS = ('auto', 'resolve', 'explicit', 'forest')


_T = TypeVar('_T', bound="Lark")

class Lark(Serialize):
    #--

    source_path: str
    source_grammar: str
    grammar: 'Grammar'
    options: LarkOptions
    lexer: Lexer
    parser: 'ParsingFrontend'
    terminals: Collection[TerminalDef]

    __serialize_fields__ = ['parser', 'rules', 'options']

    def __init__(self, grammar: 'Union[Grammar, str, IO[str]]', **options) -> None:
        self.options = LarkOptions(options)
        re_module: types.ModuleType

        ##

        if self.options.cache_grammar:
            self.__serialize_fields__ = self.__serialize_fields__ + ['grammar']

        ##

        use_regex = self.options.regex
        if use_regex:
            if _has_regex:
                re_module = regex
            else:
                raise ImportError('`regex` module must be installed if calling `Lark(regex=True)`.')
        else:
            re_module = re

        ##

        if self.options.source_path is None:
            try:
                self.source_path = grammar.name  ##

            except AttributeError:
                self.source_path = '<string>'
        else:
            self.source_path = self.options.source_path

        ##

        try:
            read = grammar.read  ##

        except AttributeError:
            pass
        else:
            grammar = read()

        cache_fn = None
        cache_sha256 = None
        if isinstance(grammar, str):
            self.source_grammar = grammar
            if self.options.use_bytes:
                if not grammar.isascii():
                    raise ConfigurationError("Grammar must be ascii only, when use_bytes=True")

            if self.options.cache:
                if self.options.parser != 'lalr':
                    raise ConfigurationError("cache only works with parser='lalr' for now")

                unhashable = ('transformer', 'postlex', 'lexer_callbacks', 'edit_terminals', '_plugins')
                options_str = ''.join(k+str(v) for k, v in options.items() if k not in unhashable)
                from . import __version__
                s = grammar + options_str + __version__ + str(sys.version_info[:2])
                cache_sha256 = sha256_digest(s)

                if isinstance(self.options.cache, str):
                    cache_fn = self.options.cache
                else:
                    if self.options.cache is not True:
                        raise ConfigurationError("cache argument must be bool or str")

                    try:
                        username = getpass.getuser()
                    except Exception:
                        ##

                        ##

                        ##

                        username = "unknown"


                    cache_fn = tempfile.gettempdir() + "/.lark_%s_%s_%s_%s_%s.tmp" % (
                        "cache_grammar" if self.options.cache_grammar else "cache", username, cache_sha256, *sys.version_info[:2])

                old_options = self.options
                try:
                    with FS.open(cache_fn, 'rb') as f:
                        logger.debug('Loading grammar from cache: %s', cache_fn)
                        ##

                        for name in (set(options) - _LOAD_ALLOWED_OPTIONS):
                            del options[name]
                        file_sha256 = f.readline().rstrip(b'\n')
                        cached_used_files = pickle.load(f)
                        if file_sha256 == cache_sha256.encode('utf8') and verify_used_files(cached_used_files):
                            cached_parser_data = pickle.load(f)
                            self._load(cached_parser_data, **options)
                            return
                except FileNotFoundError:
                    ##

                    pass
                except Exception: ##

                    logger.exception("Failed to load Lark from cache: %r. We will try to carry on.", cache_fn)

                    ##

                    ##

                    self.options = old_options


            ##

            self.grammar, used_files = load_grammar(grammar, self.source_path, self.options.import_paths, self.options.keep_all_tokens)
        else:
            assert isinstance(grammar, Grammar)
            self.grammar = grammar


        if self.options.lexer == 'auto':
            if self.options.parser == 'lalr':
                self.options.lexer = 'contextual'
            elif self.options.parser == 'earley':
                if self.options.postlex is not None:
                    logger.info("postlex can't be used with the dynamic lexer, so we use 'basic' instead. "
                                "Consider using lalr with contextual instead of earley")
                    self.options.lexer = 'basic'
                else:
                    self.options.lexer = 'dynamic'
            elif self.options.parser == 'cyk':
                self.options.lexer = 'basic'
            else:
                assert False, self.options.parser
        lexer = self.options.lexer
        if isinstance(lexer, type):
            assert issubclass(lexer, Lexer)     ##

        else:
            assert_config(lexer, ('basic', 'contextual', 'dynamic', 'dynamic_complete'))
            if self.options.postlex is not None and 'dynamic' in lexer:
                raise ConfigurationError("Can't use postlex with a dynamic lexer. Use basic or contextual instead")

        if self.options.ambiguity == 'auto':
            if self.options.parser == 'earley':
                self.options.ambiguity = 'resolve'
        else:
            assert_config(self.options.parser, ('earley', 'cyk'), "%r doesn't support disambiguation. Use one of these parsers instead: %s")

        if self.options.priority == 'auto':
            self.options.priority = 'normal'

        if self.options.priority not in _VALID_PRIORITY_OPTIONS:
            raise ConfigurationError("invalid priority option: %r. Must be one of %r" % (self.options.priority, _VALID_PRIORITY_OPTIONS))
        if self.options.ambiguity not in _VALID_AMBIGUITY_OPTIONS:
            raise ConfigurationError("invalid ambiguity option: %r. Must be one of %r" % (self.options.ambiguity, _VALID_AMBIGUITY_OPTIONS))

        if self.options.parser is None:
            terminals_to_keep = '*'     ##

        elif self.options.postlex is not None:
            terminals_to_keep = set(self.options.postlex.always_accept)
        else:
            terminals_to_keep = set()

        ##

        self.terminals, self.rules, self.ignore_tokens = self.grammar.compile(self.options.start, terminals_to_keep)

        if self.options.edit_terminals:
            for t in self.terminals:
                self.options.edit_terminals(t)

        self._terminals_dict = {t.name: t for t in self.terminals}

        ##

        if self.options.priority == 'invert':
            for rule in self.rules:
                if rule.options.priority is not None:
                    rule.options.priority = -rule.options.priority
            for term in self.terminals:
                term.priority = -term.priority
        ##

        ##

        ##

        elif self.options.priority is None:
            for rule in self.rules:
                if rule.options.priority is not None:
                    rule.options.priority = None
            for term in self.terminals:
                term.priority = 0

        ##

        self.lexer_conf = LexerConf(
                self.terminals, re_module, self.ignore_tokens, self.options.postlex,
                self.options.lexer_callbacks, self.options.g_regex_flags, use_bytes=self.options.use_bytes, strict=self.options.strict
            )

        if self.options.parser:
            self.parser = self._build_parser()
        elif lexer:
            self.lexer = self._build_lexer()

        if cache_fn:
            logger.debug('Saving grammar to cache: %s', cache_fn)
            try:
                with FS.open(cache_fn, 'wb') as f:
                    assert cache_sha256 is not None
                    f.write(cache_sha256.encode('utf8') + b'\n')
                    pickle.dump(used_files, f)
                    self.save(f, _LOAD_ALLOWED_OPTIONS)
            except IOError as e:
                logger.exception("Failed to save Lark to cache: %r.", cache_fn, e)

    if __doc__:
        __doc__ += "\n\n" + LarkOptions.OPTIONS_DOC

    def _build_lexer(self, dont_ignore: bool=False) -> BasicLexer:
        lexer_conf = self.lexer_conf
        if dont_ignore:
            from copy import copy
            lexer_conf = copy(lexer_conf)
            lexer_conf.ignore = ()
        return BasicLexer(lexer_conf)

    def _prepare_callbacks(self) -> None:
        self._callbacks = {}
        ##

        if self.options.ambiguity != 'forest':
            self._parse_tree_builder = ParseTreeBuilder(
                    self.rules,
                    self.options.tree_class or Tree,
                    self.options.propagate_positions,
                    self.options.parser != 'lalr' and self.options.ambiguity == 'explicit',
                    self.options.maybe_placeholders
                )
            self._callbacks = self._parse_tree_builder.create_callback(self.options.transformer)
        self._callbacks.update(_get_lexer_callbacks(self.options.transformer, self.terminals))

    def _build_parser(self) -> "ParsingFrontend":
        self._prepare_callbacks()
        _validate_frontend_args(self.options.parser, self.options.lexer)
        parser_conf = ParserConf(self.rules, self._callbacks, self.options.start)
        return _construct_parsing_frontend(
            self.options.parser,
            self.options.lexer,
            self.lexer_conf,
            parser_conf,
            options=self.options
        )

    def save(self, f, exclude_options: Collection[str] = ()) -> None:
        #--
        if self.options.parser != 'lalr':
            raise NotImplementedError("Lark.save() is only implemented for the LALR(1) parser.")
        data, m = self.memo_serialize([TerminalDef, Rule])
        if exclude_options:
            data["options"] = {n: v for n, v in data["options"].items() if n not in exclude_options}
        pickle.dump({'data': data, 'memo': m}, f, protocol=pickle.HIGHEST_PROTOCOL)

    @classmethod
    def load(cls: Type[_T], f) -> _T:
        #--
        inst = cls.__new__(cls)
        return inst._load(f)

    def _deserialize_lexer_conf(self, data: Dict[str, Any], memo: Dict[int, Union[TerminalDef, Rule]], options: LarkOptions) -> LexerConf:
        lexer_conf = LexerConf.deserialize(data['lexer_conf'], memo)
        lexer_conf.callbacks = options.lexer_callbacks or {}
        lexer_conf.re_module = regex if options.regex else re
        lexer_conf.use_bytes = options.use_bytes
        lexer_conf.g_regex_flags = options.g_regex_flags
        lexer_conf.skip_validation = True
        lexer_conf.postlex = options.postlex
        return lexer_conf

    def _load(self: _T, f: Any, **kwargs) -> _T:
        if isinstance(f, dict):
            d = f
        else:
            d = pickle.load(f)
        memo_json = d['memo']
        data = d['data']

        assert memo_json
        memo = SerializeMemoizer.deserialize(memo_json, {'Rule': Rule, 'TerminalDef': TerminalDef}, {})
        if 'grammar' in data:
            self.grammar = Grammar.deserialize(data['grammar'], memo)
        options = dict(data['options'])
        if (set(kwargs) - _LOAD_ALLOWED_OPTIONS) & set(LarkOptions._defaults):
            raise ConfigurationError("Some options are not allowed when loading a Parser: {}"
                             .format(set(kwargs) - _LOAD_ALLOWED_OPTIONS))
        options.update(kwargs)
        self.options = LarkOptions.deserialize(options, memo)
        self.rules = [Rule.deserialize(r, memo) for r in data['rules']]
        self.source_path = '<deserialized>'
        _validate_frontend_args(self.options.parser, self.options.lexer)
        self.lexer_conf = self._deserialize_lexer_conf(data['parser'], memo, self.options)
        self.terminals = self.lexer_conf.terminals
        self._prepare_callbacks()
        self._terminals_dict = {t.name: t for t in self.terminals}
        self.parser = _deserialize_parsing_frontend(
            data['parser'],
            memo,
            self.lexer_conf,
            self._callbacks,
            self.options,  ##

        )
        return self

    @classmethod
    def _load_from_dict(cls, data, memo, **kwargs):
        inst = cls.__new__(cls)
        return inst._load({'data': data, 'memo': memo}, **kwargs)

    @classmethod
    def open(cls: Type[_T], grammar_filename: str, rel_to: Optional[str]=None, **options) -> _T:
        #--
        if rel_to:
            basepath = os.path.dirname(rel_to)
            grammar_filename = os.path.join(basepath, grammar_filename)
        with open(grammar_filename, encoding='utf8') as f:
            return cls(f, **options)

    @classmethod
    def open_from_package(cls: Type[_T], package: str, grammar_path: str, search_paths: 'Sequence[str]'=[""], **options) -> _T:
        #--
        package_loader = FromPackageLoader(package, search_paths)
        full_path, text = package_loader(None, grammar_path)
        options.setdefault('source_path', full_path)
        options.setdefault('import_paths', [])
        options['import_paths'].append(package_loader)
        return cls(text, **options)

    def __repr__(self):
        return 'Lark(open(%r), parser=%r, lexer=%r, ...)' % (self.source_path, self.options.parser, self.options.lexer)


    def lex(self, text: TextOrSlice, dont_ignore: bool=False) -> Iterator[Token]:
        #--
        lexer: Lexer
        if not hasattr(self, 'lexer') or dont_ignore:
            lexer = self._build_lexer(dont_ignore)
        else:
            lexer = self.lexer
        lexer_thread = LexerThread.from_text(lexer, text)
        stream = lexer_thread.lex(None)
        if self.options.postlex:
            return self.options.postlex.process(stream)
        return stream

    def get_terminal(self, name: str) -> TerminalDef:
        #--
        return self._terminals_dict[name]

    def parse_interactive(self, text: Optional[LarkInput]=None, start: Optional[str]=None) -> 'InteractiveParser':
        #--
        return self.parser.parse_interactive(text, start=start)

    def parse(self, text: LarkInput, start: Optional[str]=None, on_error: 'Optional[Callable[[UnexpectedInput], bool]]'=None) -> 'ParseTree':
        #--
        if on_error is not None and self.options.parser != 'lalr':
            raise NotImplementedError("The on_error option is only implemented for the LALR(1) parser.")
        return self.parser.parse(text, start=start, on_error=on_error)




class DedentError(LarkError):
    pass

class Indenter(PostLex, ABC):
    #--
    paren_level: int
    indent_level: List[int]

    def __init__(self) -> None:
        self.paren_level = 0
        self.indent_level = [0]
        assert self.tab_len > 0

    def handle_NL(self, token: Token) -> Iterator[Token]:
        if self.paren_level > 0:
            return

        yield token

        indent_str = token.rsplit('\n', 1)[1] ##

        indent = indent_str.count(' ') + indent_str.count('\t') * self.tab_len

        if indent > self.indent_level[-1]:
            self.indent_level.append(indent)
            yield Token.new_borrow_pos(self.INDENT_type, indent_str, token)
        else:
            while indent < self.indent_level[-1]:
                self.indent_level.pop()
                yield Token.new_borrow_pos(self.DEDENT_type, indent_str, token)

            if indent != self.indent_level[-1]:
                raise DedentError('Unexpected dedent to column %s. Expected dedent to %s' % (indent, self.indent_level[-1]))

    def _process(self, stream):
        token = None
        for token in stream:
            if token.type == self.NL_type:
                yield from self.handle_NL(token)
            else:
                yield token

            if token.type in self.OPEN_PAREN_types:
                self.paren_level += 1
            elif token.type in self.CLOSE_PAREN_types:
                self.paren_level -= 1
                assert self.paren_level >= 0

        while len(self.indent_level) > 1:
            self.indent_level.pop()
            yield Token.new_borrow_pos(self.DEDENT_type, '', token) if token else Token(self.DEDENT_type, '', 0, 0, 0, 0, 0, 0)

        assert self.indent_level == [0], self.indent_level

    def process(self, stream):
        self.paren_level = 0
        self.indent_level = [0]
        return self._process(stream)

    ##

    @property
    def always_accept(self):
        return (self.NL_type,)

    @property
    @abstractmethod
    def NL_type(self) -> str:
        #--
        raise NotImplementedError()

    @property
    @abstractmethod
    def OPEN_PAREN_types(self) -> List[str]:
        #--
        raise NotImplementedError()

    @property
    @abstractmethod
    def CLOSE_PAREN_types(self) -> List[str]:
        #--
        raise NotImplementedError()

    @property
    @abstractmethod
    def INDENT_type(self) -> str:
        #--
        raise NotImplementedError()

    @property
    @abstractmethod
    def DEDENT_type(self) -> str:
        #--
        raise NotImplementedError()

    @property
    @abstractmethod
    def tab_len(self) -> int:
        #--
        raise NotImplementedError()


class PythonIndenter(Indenter):
    #--

    NL_type = '_NEWLINE'
    OPEN_PAREN_types = ['LPAR', 'LSQB', 'LBRACE']
    CLOSE_PAREN_types = ['RPAR', 'RSQB', 'RBRACE']
    INDENT_type = '_INDENT'
    DEDENT_type = '_DEDENT'
    tab_len = 8


import pickle, zlib, base64
DATA = (
{'parser': {'lexer_conf': {'terminals': [], 'ignore': [], 'g_regex_flags': 0, 'use_bytes': False, 'lexer_type': 'contextual', '__type__': 'LexerConf'}, 'parser_conf': {'rules': [{'@': 0}, {'@': 1}, {'@': 2}, {'@': 3}, {'@': 4}, {'@': 5}, {'@': 6}, {'@': 7}, {'@': 8}, {'@': 9}, {'@': 10}, {'@': 11}, {'@': 12}, {'@': 13}, {'@': 14}, {'@': 15}, {'@': 16}, {'@': 17}, {'@': 18}, {'@': 19}, {'@': 20}, {'@': 21}, {'@': 22}, {'@': 23}, {'@': 24}, {'@': 25}, {'@': 26}, {'@': 27}, {'@': 28}, {'@': 29}, {'@': 30}, {'@': 31}, {'@': 32}, {'@': 33}, {'@': 34}, {'@': 35}, {'@': 36}, {'@': 37}, {'@': 38}, {'@': 39}, {'@': 40}, {'@': 41}, {'@': 42}, {'@': 43}, {'@': 44}, {'@': 45}, {'@': 46}, {'@': 47}, {'@': 48}, {'@': 49}, {'@': 50}, {'@': 51}, {'@': 52}, {'@': 53}, {'@': 54}, {'@': 55}, {'@': 56}, {'@': 57}, {'@': 58}, {'@': 59}, {'@': 60}, {'@': 61}, {'@': 62}, {'@': 63}, {'@': 64}, {'@': 65}, {'@': 66}, {'@': 67}, {'@': 68}, {'@': 69}, {'@': 70}, {'@': 71}, {'@': 72}, {'@': 73}, {'@': 74}, {'@': 75}, {'@': 76}, {'@': 77}, {'@': 78}, {'@': 79}, {'@': 80}, {'@': 81}, {'@': 82}, {'@': 83}, {'@': 84}, {'@': 85}, {'@': 86}, {'@': 87}, {'@': 88}, {'@': 89}, {'@': 90}, {'@': 91}, {'@': 92}, {'@': 93}, {'@': 94}, {'@': 95}, {'@': 96}, {'@': 97}, {'@': 98}, {'@': 99}, {'@': 100}, {'@': 101}, {'@': 102}, {'@': 103}, {'@': 104}, {'@': 105}, {'@': 106}, {'@': 107}, {'@': 108}, {'@': 109}, {'@': 110}, {'@': 111}, {'@': 112}, {'@': 113}, {'@': 114}, {'@': 115}, {'@': 116}, {'@': 117}, {'@': 118}, {'@': 119}, {'@': 120}, {'@': 121}, {'@': 122}, {'@': 123}, {'@': 124}, {'@': 125}, {'@': 126}, {'@': 127}, {'@': 128}, {'@': 129}, {'@': 130}, {'@': 131}, {'@': 132}, {'@': 133}, {'@': 134}, {'@': 135}, {'@': 136}, {'@': 137}, {'@': 138}, {'@': 139}, {'@': 140}, {'@': 141}, {'@': 142}, {'@': 143}, {'@': 144}, {'@': 145}, {'@': 146}, {'@': 147}, {'@': 148}, {'@': 149}, {'@': 150}, {'@': 151}, {'@': 152}, {'@': 153}, {'@': 154}, {'@': 155}, {'@': 156}, {'@': 157}, {'@': 158}, {'@': 159}, {'@': 160}, {'@': 161}, {'@': 162}, {'@': 163}, {'@': 164}, {'@': 165}, {'@': 166}, {'@': 167}, {'@': 168}, {'@': 169}, {'@': 170}, {'@': 171}, {'@': 172}, {'@': 173}, {'@': 174}, {'@': 175}, {'@': 176}, {'@': 177}, {'@': 178}, {'@': 179}, {'@': 180}, {'@': 181}, {'@': 182}, {'@': 183}, {'@': 184}, {'@': 185}, {'@': 186}, {'@': 187}, {'@': 188}, {'@': 189}, {'@': 190}, {'@': 191}, {'@': 192}, {'@': 193}, {'@': 194}, {'@': 195}, {'@': 196}, {'@': 197}, {'@': 198}, {'@': 199}, {'@': 200}, {'@': 201}, {'@': 202}, {'@': 203}, {'@': 204}, {'@': 205}, {'@': 206}, {'@': 207}, {'@': 208}, {'@': 209}, {'@': 210}, {'@': 211}, {'@': 212}, {'@': 213}, {'@': 214}, {'@': 215}, {'@': 216}, {'@': 217}, {'@': 218}, {'@': 219}, {'@': 220}, {'@': 221}, {'@': 222}, {'@': 223}, {'@': 224}, {'@': 225}, {'@': 226}, {'@': 227}, {'@': 228}, {'@': 229}, {'@': 230}, {'@': 231}, {'@': 232}, {'@': 233}, {'@': 234}, {'@': 235}, {'@': 236}, {'@': 237}, {'@': 238}, {'@': 239}, {'@': 240}, {'@': 241}, {'@': 242}, {'@': 243}, {'@': 244}, {'@': 245}, {'@': 246}, {'@': 247}, {'@': 248}, {'@': 249}, {'@': 250}, {'@': 251}, {'@': 252}, {'@': 253}, {'@': 254}, {'@': 255}, {'@': 256}, {'@': 257}, {'@': 258}, {'@': 259}, {'@': 260}, {'@': 261}, {'@': 262}, {'@': 263}, {'@': 264}, {'@': 265}, {'@': 266}, {'@': 267}, {'@': 268}, {'@': 269}, {'@': 270}, {'@': 271}, {'@': 272}, {'@': 273}, {'@': 274}, {'@': 275}, {'@': 276}, {'@': 277}, {'@': 278}, {'@': 279}, {'@': 280}, {'@': 281}, {'@': 282}, {'@': 283}, {'@': 284}, {'@': 285}, {'@': 286}, {'@': 287}, {'@': 288}, {'@': 289}, {'@': 290}, {'@': 291}, {'@': 292}, {'@': 293}, {'@': 294}, {'@': 295}, {'@': 296}, {'@': 297}, {'@': 298}, {'@': 299}, {'@': 300}, {'@': 301}, {'@': 302}, {'@': 303}, {'@': 304}, {'@': 305}, {'@': 306}, {'@': 307}, {'@': 308}, {'@': 309}, {'@': 310}, {'@': 311}, {'@': 312}, {'@': 313}, {'@': 314}, {'@': 315}, {'@': 316}, {'@': 317}, {'@': 318}, {'@': 319}, {'@': 320}, {'@': 321}, {'@': 322}, {'@': 323}, {'@': 324}, {'@': 325}, {'@': 326}, {'@': 327}, {'@': 328}, {'@': 329}, {'@': 330}, {'@': 331}, {'@': 332}, {'@': 333}, {'@': 334}, {'@': 335}, {'@': 336}, {'@': 337}, {'@': 338}, {'@': 339}, {'@': 340}, {'@': 341}, {'@': 342}, {'@': 343}, {'@': 344}, {'@': 345}, {'@': 346}, {'@': 347}, {'@': 348}, {'@': 349}, {'@': 350}, {'@': 351}, {'@': 352}, {'@': 353}, {'@': 354}, {'@': 355}, {'@': 356}, {'@': 357}, {'@': 358}, {'@': 359}, {'@': 360}, {'@': 361}, {'@': 362}, {'@': 363}, {'@': 364}, {'@': 365}, {'@': 366}, {'@': 367}, {'@': 368}, {'@': 369}, {'@': 370}, {'@': 371}, {'@': 372}, {'@': 373}, {'@': 374}, {'@': 375}, {'@': 376}, {'@': 377}], 'start': ['start'], 'parser_type': 'lalr', '__type__': 'ParserConf'}, 'parser': {'tokens': {0: 'NEWLINE', 1: 'CO', 2: 'LB', 3: 'A', 4: 'B', 5: 'H', 6: 'D', 7: 'L', 8: 'LP', 9: 'E', 10: 'C', 11: 'pexpr', 12: 'expr_unary_operand', 13: 'expr_pow', 14: 'PLUS', 15: 'expr_mul_operand', 16: 'ADDR', 17: 'expr_bitwise_operand', 18: 'LPP', 19: 'expr_mul', 20: 'expr_unary', 21: 'MINUS', 22: 'ID', 23: 'expr_bitwise', 24: 'expr_add_operand', 25: 'expr_add', 26: 'expr', 27: 'INTEGER', 28: 'expr_atom', 29: 'LDDRX', 30: 'RRC', 31: 'RLA', 32: 'CPIR', 33: 'ADD', 34: 'SET', 35: 'XOR', 36: 'END', 37: 'OUTD', 38: 'ALIGN', 39: 'RLC', 40: 'MIRROR', 41: 'CPD', 42: 'EX', 43: 'DI', 44: 'CP', 45: 'PUSH', 46: 'IM', 47: 'CPDR', 48: 'RRA', 49: 'IN', 50: '$END', 51: 'NEXTREG', 52: 'DEFB', 53: 'MUL', 54: 'OR', 55: 'INIR', 56: 'SETAE', 57: 'BSRF', 58: 'LDDR', 59: 'SLL', 60: 'CPI', 61: 'LDIX', 62: 'RETI', 63: 'SWAPNIB', 64: '_INIT', 65: 'OUTINB', 66: 'CCF', 67: 'ADC', 68: 'DEFS', 69: 'DEC', 70: 'ORG', 71: 'INCBIN', 72: 'TEST', 73: 'LD', 74: 'OTIR', 75: 'SUB', 76: 'AND', 77: 'OTDR', 78: 'IND', 79: 'NOP', 80: 'RLCA', 81: 'PROC', 82: 'RES', 83: 'NAMESPACE', 84: 'HALT', 85: 'RL', 86: 'NEG', 87: 'BSRL', 88: 'INDR', 89: 'ENDP', 90: 'PIXELAD', 91: 'JP', 92: 'LDDX', 93: 'LDWS', 94: 'DJNZ', 95: 'POP', 96: 'RLD', 97: 'RETN', 98: 'OUTI', 99: 'BIT', 100: 'EXX', 101: 'LDPIRX', 102: 'DAA', 103: 'LOCAL', 104: 'SCF', 105: 'OUT', 106: 'INC', 107: 'BRLC', 108: 'LDIRX', 109: 'LDIR', 110: 'LDI', 111: 'CPL', 112: 'BSLA', 113: 'BSRA', 114: 'LDD', 115: 'SLA', 116: 'RRD', 117: 'CALL', 118: 'RR', 119: 'DEFW', 120: 'RRCA', 121: 'JR', 122: 'RST', 123: 'SRL', 124: 'RET', 125: 'SRA', 126: 'PIXELDN', 127: 'INI', 128: 'EI', 129: 'SBC', 130: 'POW', 131: 'DIV', 132: 'MOD', 133: 'RSHIFT', 134: 'LSHIFT', 135: 'BAND', 136: 'BXOR', 137: 'BOR', 138: 'COMMA', 139: 'bitwiseop', 140: 'asm', 141: 'rotation', 142: 'line', 143: 'bitop', 144: 'asms', 145: 'program', 146: 'preproc_line', 147: 'endline', 148: 'start', 149: 'BC', 150: 'IY', 151: 'AF', 152: 'DE', 153: 'IX', 154: 'reg16i', 155: 'HL', 156: 'reg16', 157: 'IYH', 158: 'IXH', 159: 'IXL', 160: 'IYL', 161: 'STRING', 162: 'number_list', 163: 'RP', 164: 'RB', 165: 'RPP', 166: 'SP', 167: 'reg8', 168: 'reg8_i', 169: 'reg8i', 170: 'reg8_hl', 171: 'reg_bcde', 172: 'expr_pow_operand', 173: 'APO', 174: 'mem_indir', 175: 'jr_flags', 176: 'NC', 177: 'NZ', 178: 'Z', 179: 'expr_list', 180: 'EQU', 181: 'id_list', 182: 'I', 183: 'R', 184: 'P', 185: 'PE', 186: 'PO', 187: 'jp_flags', 188: 'M', 189: 'inc_reg'}, 'states': {0: {0: (1, {'@': 199}), 1: (1, {'@': 199})}, 1: {2: (1, {'@': 305}), 3: (1, {'@': 305}), 4: (1, {'@': 305}), 5: (1, {'@': 305}), 6: (1, {'@': 305}), 7: (1, {'@': 305}), 8: (1, {'@': 305}), 9: (1, {'@': 305}), 10: (1, {'@': 305})}, 2: {11: (0, 169), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 26: (0, 200), 27: (0, 243), 28: (0, 266)}, 3: {2: (1, {'@': 306}), 3: (1, {'@': 306}), 4: (1, {'@': 306}), 5: (1, {'@': 306}), 6: (1, {'@': 306}), 7: (1, {'@': 306}), 8: (1, {'@': 306}), 9: (1, {'@': 306}), 10: (1, {'@': 306})}, 4: {0: (1, {'@': 224}), 1: (1, {'@': 224})}, 5: {29: (1, {'@': 14}), 30: (1, {'@': 14}), 31: (1, {'@': 14}), 32: (1, {'@': 14}), 33: (1, {'@': 14}), 34: (1, {'@': 14}), 35: (1, {'@': 14}), 36: (1, {'@': 14}), 37: (1, {'@': 14}), 38: (1, {'@': 14}), 39: (1, {'@': 14}), 40: (1, {'@': 14}), 41: (1, {'@': 14}), 42: (1, {'@': 14}), 43: (1, {'@': 14}), 44: (1, {'@': 14}), 45: (1, {'@': 14}), 46: (1, {'@': 14}), 47: (1, {'@': 14}), 48: (1, {'@': 14}), 49: (1, {'@': 14}), 50: (1, {'@': 14}), 51: (1, {'@': 14}), 52: (1, {'@': 14}), 0: (1, {'@': 14}), 53: (1, {'@': 14}), 54: (1, {'@': 14}), 55: (1, {'@': 14}), 56: (1, {'@': 14}), 57: (1, {'@': 14}), 58: (1, {'@': 14}), 59: (1, {'@': 14}), 60: (1, {'@': 14}), 61: (1, {'@': 14}), 62: (1, {'@': 14}), 63: (1, {'@': 14}), 27: (1, {'@': 14}), 64: (1, {'@': 14}), 65: (1, {'@': 14}), 66: (1, {'@': 14}), 67: (1, {'@': 14}), 68: (1, {'@': 14}), 69: (1, {'@': 14}), 70: (1, {'@': 14}), 71: (1, {'@': 14}), 72: (1, {'@': 14}), 73: (1, {'@': 14}), 74: (1, {'@': 14}), 75: (1, {'@': 14}), 76: (1, {'@': 14}), 77: (1, {'@': 14}), 78: (1, {'@': 14}), 79: (1, {'@': 14}), 80: (1, {'@': 14}), 81: (1, {'@': 14}), 82: (1, {'@': 14}), 83: (1, {'@': 14}), 84: (1, {'@': 14}), 85: (1, {'@': 14}), 86: (1, {'@': 14}), 87: (1, {'@': 14}), 88: (1, {'@': 14}), 89: (1, {'@': 14}), 90: (1, {'@': 14}), 91: (1, {'@': 14}), 92: (1, {'@': 14}), 93: (1, {'@': 14}), 94: (1, {'@': 14}), 95: (1, {'@': 14}), 96: (1, {'@': 14}), 97: (1, {'@': 14}), 98: (1, {'@': 14}), 99: (1, {'@': 14}), 100: (1, {'@': 14}), 101: (1, {'@': 14}), 102: (1, {'@': 14}), 103: (1, {'@': 14}), 104: (1, {'@': 14}), 1: (1, {'@': 14}), 105: (1, {'@': 14}), 106: (1, {'@': 14}), 107: (1, {'@': 14}), 108: (1, {'@': 14}), 109: (1, {'@': 14}), 110: (1, {'@': 14}), 111: (1, {'@': 14}), 112: (1, {'@': 14}), 113: (1, {'@': 14}), 114: (1, {'@': 14}), 115: (1, {'@': 14}), 116: (1, {'@': 14}), 117: (1, {'@': 14}), 118: (1, {'@': 14}), 119: (1, {'@': 14}), 120: (1, {'@': 14}), 121: (1, {'@': 14}), 122: (1, {'@': 14}), 123: (1, {'@': 14}), 124: (1, {'@': 14}), 125: (1, {'@': 14}), 126: (1, {'@': 14}), 127: (1, {'@': 14}), 128: (1, {'@': 14}), 22: (1, {'@': 14}), 129: (1, {'@': 14})}, 6: {0: (1, {'@': 211}), 1: (1, {'@': 211})}, 7: {0: (1, {'@': 223}), 1: (1, {'@': 223})}, 8: {22: (0, 572)}, 9: {0: (1, {'@': 207}), 1: (1, {'@': 207})}, 10: {0: (1, {'@': 265}), 1: (1, {'@': 265}), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 11: {0: (1, {'@': 205}), 1: (1, {'@': 205})}, 12: {138: (0, 280)}, 13: {0: (1, {'@': 147}), 1: (1, {'@': 147}), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 14: {0: (1, {'@': 220}), 1: (1, {'@': 220})}, 15: {0: (1, {'@': 236}), 1: (1, {'@': 236})}, 16: {47: (0, 481), 68: (0, 380), 33: (0, 472), 67: (0, 582), 73: (0, 580), 54: (0, 546), 91: (0, 600), 51: (0, 548), 139: (0, 288), 63: (0, 247), 126: (0, 264), 22: (0, 374), 105: (0, 394), 90: (0, 269), 129: (0, 253), 116: (0, 581), 72: (0, 459), 88: (0, 562), 99: (0, 293), 52: (0, 361), 89: (0, 405), 69: (0, 568), 109: (0, 579), 49: (0, 597), 79: (0, 553), 37: (0, 551), 124: (0, 544), 140: (0, 435), 103: (0, 484), 141: (0, 354), 121: (0, 333), 36: (0, 503), 142: (0, 475), 35: (0, 507), 106: (0, 587), 41: (0, 561), 107: (0, 594), 38: (0, 603), 117: (0, 555), 87: (0, 376), 143: (0, 431), 45: (0, 465), 96: (0, 425), 30: (0, 421), 39: (0, 454), 144: (0, 460), 94: (0, 469), 77: (0, 517), 59: (0, 1), 115: (0, 52), 118: (0, 63), 70: (0, 54), 112: (0, 38), 145: (0, 41), 62: (0, 42), 82: (0, 46), 34: (0, 26), 55: (0, 31), 65: (0, 40), 42: (0, 27), 101: (0, 32), 76: (0, 33), 44: (0, 28), 40: (0, 15), 120: (0, 4), 83: (0, 8), 146: (0, 5), 57: (0, 23), 46: (0, 2), 95: (0, 19), 110: (0, 20), 84: (0, 9), 147: (0, 17), 98: (0, 6), 86: (0, 11), 66: (0, 61), 27: (0, 73), 127: (0, 55), 71: (0, 57), 123: (0, 59), 119: (0, 60), 64: (0, 65), 74: (0, 67), 113: (0, 68), 61: (0, 70), 148: (0, 76), 43: (0, 77), 111: (0, 78), 114: (0, 0), 102: (0, 50), 75: (0, 39), 81: (0, 45), 100: (0, 44), 122: (0, 47), 29: (0, 25), 32: (0, 34), 125: (0, 3), 97: (0, 14), 48: (0, 7), 31: (0, 18), 53: (0, 21), 56: (0, 22), 85: (0, 24), 58: (0, 315), 128: (0, 342), 80: (0, 504), 60: (0, 275), 93: (0, 362), 104: (0, 347), 78: (0, 377), 92: (0, 408), 108: (0, 246), 0: (1, {'@': 16}), 1: (1, {'@': 16}), 50: (1, {'@': 3})}, 17: {0: (0, 191), 50: (1, {'@': 2})}, 18: {0: (1, {'@': 221}), 1: (1, {'@': 221})}, 19: {149: (0, 187), 150: (0, 585), 151: (0, 173), 152: (0, 348), 153: (0, 325), 154: (0, 166), 83: (0, 190), 155: (0, 206), 156: (0, 180)}, 20: {0: (1, {'@': 197}), 1: (1, {'@': 197})}, 21: {6: (0, 240)}, 22: {0: (1, {'@': 239}), 1: (1, {'@': 239})}, 23: {152: (0, 203)}, 24: {2: (1, {'@': 301}), 3: (1, {'@': 301}), 4: (1, {'@': 301}), 5: (1, {'@': 301}), 6: (1, {'@': 301}), 7: (1, {'@': 301}), 8: (1, {'@': 301}), 9: (1, {'@': 301}), 10: (1, {'@': 301})}, 25: {0: (1, {'@': 232}), 1: (1, {'@': 232})}, 26: {14: (1, {'@': 299}), 16: (1, {'@': 299}), 18: (1, {'@': 299}), 21: (1, {'@': 299}), 8: (1, {'@': 299}), 22: (1, {'@': 299}), 27: (1, {'@': 299})}, 27: {8: (0, 564), 2: (0, 556), 152: (0, 154), 151: (0, 186)}, 28: {9: (1, {'@': 296}), 4: (1, {'@': 296}), 16: (1, {'@': 296}), 157: (1, {'@': 296}), 158: (1, {'@': 296}), 18: (1, {'@': 296}), 8: (1, {'@': 296}), 159: (1, {'@': 296}), 14: (1, {'@': 296}), 5: (1, {'@': 296}), 7: (1, {'@': 296}), 10: (1, {'@': 296}), 27: (1, {'@': 296}), 2: (1, {'@': 296}), 160: (1, {'@': 296}), 3: (1, {'@': 296}), 6: (1, {'@': 296}), 21: (1, {'@': 296}), 22: (1, {'@': 296})}, 29: {0: (1, {'@': 322}), 1: (1, {'@': 322}), 138: (1, {'@': 322})}, 30: {0: (1, {'@': 143}), 1: (1, {'@': 143})}, 31: {0: (1, {'@': 217}), 1: (1, {'@': 217})}, 32: {0: (1, {'@': 233}), 1: (1, {'@': 233})}, 33: {9: (1, {'@': 293}), 4: (1, {'@': 293}), 16: (1, {'@': 293}), 157: (1, {'@': 293}), 158: (1, {'@': 293}), 18: (1, {'@': 293}), 8: (1, {'@': 293}), 159: (1, {'@': 293}), 14: (1, {'@': 293}), 5: (1, {'@': 293}), 7: (1, {'@': 293}), 10: (1, {'@': 293}), 27: (1, {'@': 293}), 2: (1, {'@': 293}), 160: (1, {'@': 293}), 3: (1, {'@': 293}), 6: (1, {'@': 293}), 21: (1, {'@': 293}), 22: (1, {'@': 293})}, 34: {0: (1, {'@': 200}), 1: (1, {'@': 200})}, 35: {0: (1, {'@': 136}), 1: (1, {'@': 136})}, 36: {0: (1, {'@': 174}), 1: (1, {'@': 174}), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 37: {22: (0, 274), 0: (1, {'@': 63}), 1: (1, {'@': 63})}, 38: {152: (0, 417)}, 39: {9: (1, {'@': 295}), 4: (1, {'@': 295}), 16: (1, {'@': 295}), 157: (1, {'@': 295}), 158: (1, {'@': 295}), 18: (1, {'@': 295}), 8: (1, {'@': 295}), 159: (1, {'@': 295}), 14: (1, {'@': 295}), 5: (1, {'@': 295}), 7: (1, {'@': 295}), 10: (1, {'@': 295}), 27: (1, {'@': 295}), 2: (1, {'@': 295}), 160: (1, {'@': 295}), 3: (1, {'@': 295}), 6: (1, {'@': 295}), 21: (1, {'@': 295}), 22: (1, {'@': 295})}, 40: {0: (1, {'@': 234}), 1: (1, {'@': 234})}, 41: {47: (0, 481), 68: (0, 380), 33: (0, 472), 67: (0, 582), 73: (0, 580), 54: (0, 546), 147: (0, 175), 91: (0, 600), 51: (0, 548), 139: (0, 288), 63: (0, 247), 126: (0, 264), 22: (0, 374), 105: (0, 394), 90: (0, 269), 129: (0, 253), 116: (0, 581), 72: (0, 459), 88: (0, 562), 99: (0, 293), 52: (0, 361), 89: (0, 405), 69: (0, 568), 109: (0, 579), 49: (0, 597), 79: (0, 553), 37: (0, 551), 124: (0, 544), 140: (0, 435), 103: (0, 484), 141: (0, 354), 121: (0, 333), 36: (0, 503), 35: (0, 507), 142: (0, 165), 106: (0, 587), 41: (0, 561), 107: (0, 594), 38: (0, 603), 117: (0, 555), 87: (0, 376), 143: (0, 431), 45: (0, 465), 96: (0, 425), 30: (0, 421), 39: (0, 454), 144: (0, 460), 94: (0, 469), 77: (0, 517), 59: (0, 1), 115: (0, 52), 118: (0, 63), 70: (0, 54), 112: (0, 38), 62: (0, 42), 82: (0, 46), 34: (0, 26), 55: (0, 31), 65: (0, 40), 42: (0, 27), 101: (0, 32), 76: (0, 33), 44: (0, 28), 40: (0, 15), 120: (0, 4), 83: (0, 8), 146: (0, 5), 57: (0, 23), 46: (0, 2), 95: (0, 19), 110: (0, 20), 84: (0, 9), 98: (0, 6), 86: (0, 11), 66: (0, 61), 27: (0, 73), 127: (0, 55), 71: (0, 57), 123: (0, 59), 119: (0, 60), 64: (0, 65), 74: (0, 67), 113: (0, 68), 61: (0, 70), 43: (0, 77), 111: (0, 78), 114: (0, 0), 102: (0, 50), 75: (0, 39), 81: (0, 45), 100: (0, 44), 122: (0, 47), 29: (0, 25), 32: (0, 34), 125: (0, 3), 97: (0, 14), 48: (0, 7), 31: (0, 18), 53: (0, 21), 56: (0, 22), 85: (0, 24), 58: (0, 315), 128: (0, 342), 80: (0, 504), 60: (0, 275), 93: (0, 362), 104: (0, 347), 78: (0, 377), 92: (0, 408), 108: (0, 246), 50: (1, {'@': 0}), 0: (1, {'@': 16}), 1: (1, {'@': 16})}, 42: {0: (1, {'@': 219}), 1: (1, {'@': 219})}, 43: {0: (1, {'@': 88}), 1: (1, {'@': 88})}, 44: {0: (1, {'@': 193}), 1: (1, {'@': 193})}, 45: {0: (1, {'@': 48}), 1: (1, {'@': 48})}, 46: {14: (1, {'@': 298}), 16: (1, {'@': 298}), 18: (1, {'@': 298}), 21: (1, {'@': 298}), 8: (1, {'@': 298}), 22: (1, {'@': 298}), 27: (1, {'@': 298})}, 47: {11: (0, 169), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 27: (0, 243), 26: (0, 234), 28: (0, 266)}, 48: {0: (1, {'@': 135}), 1: (1, {'@': 135})}, 49: {0: (1, {'@': 60}), 1: (1, {'@': 60})}, 50: {0: (1, {'@': 204}), 1: (1, {'@': 204})}, 51: {11: (0, 145), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 153: (0, 139), 155: (0, 132), 15: (0, 444), 16: (0, 557), 17: (0, 604), 150: (0, 135), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 26: (0, 158), 27: (0, 243), 28: (0, 266)}, 52: {2: (1, {'@': 304}), 3: (1, {'@': 304}), 4: (1, {'@': 304}), 5: (1, {'@': 304}), 6: (1, {'@': 304}), 7: (1, {'@': 304}), 8: (1, {'@': 304}), 9: (1, {'@': 304}), 10: (1, {'@': 304})}, 53: {11: (0, 471), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 16: (0, 557), 17: (0, 604), 3: (0, 477), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 26: (0, 478), 27: (0, 243), 28: (0, 266)}, 54: {11: (0, 182), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 26: (0, 49), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 27: (0, 243), 28: (0, 266)}, 55: {0: (1, {'@': 215}), 1: (1, {'@': 215})}, 56: {0: (1, {'@': 25}), 1: (1, {'@': 25})}, 57: {161: (0, 171)}, 58: {0: (1, {'@': 332}), 1: (1, {'@': 332}), 138: (1, {'@': 332})}, 59: {2: (1, {'@': 307}), 3: (1, {'@': 307}), 4: (1, {'@': 307}), 5: (1, {'@': 307}), 6: (1, {'@': 307}), 7: (1, {'@': 307}), 8: (1, {'@': 307}), 9: (1, {'@': 307}), 10: (1, {'@': 307})}, 60: {11: (0, 541), 162: (0, 239), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 26: (0, 595), 27: (0, 243), 28: (0, 266)}, 61: {0: (1, {'@': 194}), 1: (1, {'@': 194})}, 62: {163: (0, 250)}, 63: {2: (1, {'@': 300}), 3: (1, {'@': 300}), 4: (1, {'@': 300}), 5: (1, {'@': 300}), 6: (1, {'@': 300}), 7: (1, {'@': 300}), 8: (1, {'@': 300}), 9: (1, {'@': 300}), 10: (1, {'@': 300})}, 64: {0: (1, {'@': 170}), 1: (1, {'@': 170})}, 65: {161: (0, 221)}, 66: {138: (1, {'@': 336}), 0: (1, {'@': 336}), 1: (1, {'@': 336})}, 67: {0: (1, {'@': 213}), 1: (1, {'@': 213})}, 68: {152: (0, 195)}, 69: {164: (0, 419)}, 70: {0: (1, {'@': 228}), 1: (1, {'@': 228})}, 71: {138: (1, {'@': 338}), 0: (1, {'@': 338}), 1: (1, {'@': 338})}, 72: {163: (0, 267)}, 73: {0: (1, {'@': 20}), 1: (1, {'@': 20})}, 74: {131: (1, {'@': 368}), 133: (1, {'@': 368}), 14: (1, {'@': 368}), 0: (1, {'@': 368}), 134: (1, {'@': 368}), 1: (1, {'@': 368}), 53: (1, {'@': 368}), 135: (1, {'@': 368}), 21: (1, {'@': 368}), 130: (1, {'@': 368}), 136: (1, {'@': 368}), 137: (1, {'@': 368}), 132: (1, {'@': 368}), 163: (1, {'@': 368}), 138: (1, {'@': 368}), 164: (1, {'@': 368}), 165: (1, {'@': 368})}, 75: {18: (0, 531), 8: (0, 446), 14: (0, 297), 20: (0, 527), 21: (0, 547), 27: (0, 243), 11: (0, 273), 16: (0, 557), 22: (0, 339), 28: (0, 266)}, 76: {}, 77: {0: (1, {'@': 209}), 1: (1, {'@': 209})}, 78: {0: (1, {'@': 206}), 1: (1, {'@': 206})}, 79: {0: (1, {'@': 87}), 1: (1, {'@': 87})}, 80: {0: (1, {'@': 84}), 1: (1, {'@': 84})}, 81: {0: (1, {'@': 150}), 1: (1, {'@': 150})}, 82: {11: (0, 169), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 26: (0, 418), 25: (0, 570), 27: (0, 243), 28: (0, 266)}, 83: {0: (1, {'@': 264}), 1: (1, {'@': 264})}, 84: {0: (1, {'@': 24}), 1: (1, {'@': 24})}, 85: {0: (1, {'@': 335}), 1: (1, {'@': 335}), 138: (1, {'@': 335})}, 86: {0: (1, {'@': 38}), 1: (1, {'@': 38})}, 87: {0: (1, {'@': 173}), 1: (1, {'@': 173})}, 88: {0: (1, {'@': 39}), 1: (1, {'@': 39})}, 89: {0: (1, {'@': 36}), 1: (1, {'@': 36})}, 90: {0: (1, {'@': 331}), 1: (1, {'@': 331}), 138: (1, {'@': 331})}, 91: {11: (0, 145), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 153: (0, 139), 155: (0, 132), 15: (0, 444), 16: (0, 557), 17: (0, 604), 150: (0, 135), 18: (0, 531), 149: (0, 292), 19: (0, 598), 152: (0, 296), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 26: (0, 158), 27: (0, 243), 28: (0, 266)}, 92: {0: (1, {'@': 333}), 1: (1, {'@': 333}), 138: (1, {'@': 333})}, 93: {138: (1, {'@': 339}), 0: (1, {'@': 339}), 1: (1, {'@': 339})}, 94: {0: (1, {'@': 35}), 1: (1, {'@': 35})}, 95: {0: (1, {'@': 31}), 1: (1, {'@': 31})}, 96: {3: (0, 539)}, 97: {0: (1, {'@': 83}), 1: (1, {'@': 83})}, 98: {0: (1, {'@': 29}), 1: (1, {'@': 29})}, 99: {150: (0, 585), 155: (0, 372), 153: (0, 325), 152: (0, 312), 154: (0, 303), 149: (0, 364), 166: (0, 359)}, 100: {11: (0, 169), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 150: (0, 384), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 153: (0, 424), 20: (0, 571), 21: (0, 547), 149: (0, 299), 22: (0, 339), 23: (0, 403), 24: (0, 542), 26: (0, 418), 25: (0, 570), 152: (0, 301), 27: (0, 243), 155: (0, 420), 28: (0, 266)}, 101: {0: (1, {'@': 30}), 1: (1, {'@': 30})}, 102: {138: (0, 467)}, 103: {0: (1, {'@': 33}), 1: (1, {'@': 33})}, 104: {0: (1, {'@': 26}), 1: (1, {'@': 26})}, 105: {11: (0, 493), 12: (0, 486), 26: (0, 519), 8: (0, 51), 13: (0, 461), 14: (0, 297), 160: (0, 160), 15: (0, 444), 16: (0, 557), 167: (0, 520), 159: (0, 29), 2: (0, 501), 17: (0, 604), 168: (0, 513), 18: (0, 531), 19: (0, 598), 9: (0, 144), 20: (0, 571), 21: (0, 547), 5: (0, 219), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 6: (0, 254), 3: (0, 522), 157: (0, 211), 169: (0, 524), 4: (0, 157), 7: (0, 147), 10: (0, 398), 27: (0, 243), 158: (0, 306), 170: (0, 505), 171: (0, 496), 28: (0, 266)}, 106: {0: (1, {'@': 57}), 1: (1, {'@': 57})}, 107: {0: (1, {'@': 148}), 1: (1, {'@': 148})}, 108: {138: (0, 283)}, 109: {0: (1, {'@': 146}), 1: (1, {'@': 146}), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 110: {11: (0, 368), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 166: (0, 399), 16: (0, 557), 17: (0, 604), 3: (0, 427), 18: (0, 531), 19: (0, 598), 26: (0, 429), 20: (0, 571), 21: (0, 547), 149: (0, 433), 22: (0, 339), 23: (0, 403), 155: (0, 436), 152: (0, 456), 24: (0, 542), 25: (0, 570), 27: (0, 243), 28: (0, 266)}, 111: {0: (1, {'@': 81}), 1: (1, {'@': 81})}, 112: {138: (0, 560)}, 113: {165: (0, 323)}, 114: {0: (1, {'@': 144}), 1: (1, {'@': 144})}, 115: {0: (1, {'@': 149}), 1: (1, {'@': 149})}, 116: {11: (0, 367), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 24: (0, 337), 15: (0, 444), 16: (0, 557), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 25: (0, 321), 27: (0, 243), 28: (0, 266)}, 117: {18: (0, 531), 8: (0, 446), 14: (0, 297), 20: (0, 74), 21: (0, 547), 27: (0, 243), 11: (0, 305), 16: (0, 557), 22: (0, 339), 28: (0, 266)}, 118: {18: (0, 531), 8: (0, 446), 14: (0, 297), 20: (0, 74), 21: (0, 547), 27: (0, 243), 11: (0, 265), 16: (0, 557), 22: (0, 339), 28: (0, 266)}, 119: {164: (0, 474)}, 120: {11: (0, 498), 12: (0, 486), 13: (0, 461), 8: (0, 51), 14: (0, 297), 160: (0, 160), 15: (0, 444), 16: (0, 557), 159: (0, 29), 2: (0, 501), 17: (0, 604), 18: (0, 531), 19: (0, 598), 170: (0, 508), 20: (0, 571), 21: (0, 547), 5: (0, 219), 22: (0, 339), 23: (0, 403), 167: (0, 533), 24: (0, 542), 3: (0, 535), 25: (0, 570), 168: (0, 532), 6: (0, 254), 157: (0, 211), 169: (0, 536), 4: (0, 157), 7: (0, 147), 10: (0, 398), 27: (0, 243), 158: (0, 306), 171: (0, 496), 9: (0, 144), 26: (0, 537), 28: (0, 266)}, 121: {11: (0, 169), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 152: (0, 378), 149: (0, 381), 150: (0, 384), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 153: (0, 424), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 26: (0, 418), 25: (0, 570), 27: (0, 243), 155: (0, 420), 28: (0, 266)}, 122: {131: (1, {'@': 369}), 133: (1, {'@': 369}), 14: (1, {'@': 369}), 0: (1, {'@': 369}), 134: (1, {'@': 369}), 1: (1, {'@': 369}), 53: (1, {'@': 369}), 135: (1, {'@': 369}), 21: (1, {'@': 369}), 130: (1, {'@': 369}), 136: (1, {'@': 369}), 137: (1, {'@': 369}), 132: (1, {'@': 369}), 163: (1, {'@': 369}), 138: (1, {'@': 369}), 164: (1, {'@': 369}), 165: (1, {'@': 369})}, 123: {138: (0, 307)}, 124: {163: (0, 400)}, 125: {18: (0, 531), 8: (0, 446), 14: (0, 297), 20: (0, 527), 21: (0, 547), 27: (0, 243), 11: (0, 281), 16: (0, 557), 22: (0, 339), 28: (0, 266)}, 126: {11: (0, 367), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 16: (0, 557), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 24: (0, 310), 25: (0, 321), 27: (0, 243), 28: (0, 266)}, 127: {0: (1, {'@': 191}), 1: (1, {'@': 191})}, 128: {150: (0, 585), 153: (0, 325), 154: (0, 573), 10: (0, 119), 155: (0, 420)}, 129: {11: (0, 367), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 16: (0, 557), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 24: (0, 329), 25: (0, 321), 27: (0, 243), 28: (0, 266)}, 130: {11: (0, 169), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 26: (0, 149), 15: (0, 444), 16: (0, 557), 167: (0, 151), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 5: (0, 219), 3: (0, 153), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 6: (0, 254), 4: (0, 157), 7: (0, 147), 10: (0, 398), 27: (0, 243), 9: (0, 144), 171: (0, 496), 28: (0, 266)}, 131: {0: (1, {'@': 190}), 1: (1, {'@': 190})}, 132: {163: (0, 386)}, 133: {10: (0, 327)}, 134: {164: (0, 286)}, 135: {11: (0, 169), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 514), 26: (0, 72), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 75), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 27: (0, 243), 28: (0, 266)}, 136: {138: (0, 96)}, 137: {163: (0, 577)}, 138: {164: (0, 289)}, 139: {11: (0, 169), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 529), 15: (0, 444), 16: (0, 557), 21: (0, 558), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 26: (0, 62), 27: (0, 243), 28: (0, 266)}, 140: {18: (0, 531), 8: (0, 446), 14: (0, 297), 20: (0, 527), 21: (0, 547), 27: (0, 243), 11: (0, 309), 16: (0, 557), 22: (0, 339), 28: (0, 266)}, 141: {138: (0, 213)}, 142: {11: (0, 145), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 10: (0, 552), 24: (0, 542), 25: (0, 570), 26: (0, 158), 27: (0, 243), 28: (0, 266)}, 143: {131: (1, {'@': 370}), 133: (1, {'@': 370}), 14: (1, {'@': 370}), 0: (1, {'@': 370}), 134: (1, {'@': 370}), 1: (1, {'@': 370}), 53: (1, {'@': 370}), 135: (1, {'@': 370}), 21: (1, {'@': 370}), 130: (1, {'@': 370}), 136: (1, {'@': 370}), 137: (1, {'@': 370}), 132: (1, {'@': 370}), 163: (1, {'@': 370}), 138: (1, {'@': 370}), 164: (1, {'@': 370}), 165: (1, {'@': 370})}, 144: {0: (1, {'@': 320}), 1: (1, {'@': 320}), 138: (1, {'@': 320})}, 145: {163: (0, 371), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 146: {11: (0, 367), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 16: (0, 557), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 24: (0, 271), 25: (0, 321), 27: (0, 243), 28: (0, 266)}, 147: {0: (1, {'@': 315}), 1: (1, {'@': 315}), 138: (1, {'@': 315})}, 148: {138: (1, {'@': 337}), 0: (1, {'@': 337}), 1: (1, {'@': 337})}, 149: {0: (1, {'@': 86}), 1: (1, {'@': 86})}, 150: {22: (0, 185)}, 151: {0: (1, {'@': 54}), 1: (1, {'@': 54})}, 152: {0: (1, {'@': 334}), 1: (1, {'@': 334}), 138: (1, {'@': 334})}, 153: {0: (1, {'@': 55}), 1: (1, {'@': 55})}, 154: {138: (0, 300)}, 155: {29: (1, {'@': 10}), 30: (1, {'@': 10}), 31: (1, {'@': 10}), 32: (1, {'@': 10}), 33: (1, {'@': 10}), 34: (1, {'@': 10}), 35: (1, {'@': 10}), 36: (1, {'@': 10}), 37: (1, {'@': 10}), 38: (1, {'@': 10}), 39: (1, {'@': 10}), 40: (1, {'@': 10}), 41: (1, {'@': 10}), 42: (1, {'@': 10}), 43: (1, {'@': 10}), 44: (1, {'@': 10}), 45: (1, {'@': 10}), 46: (1, {'@': 10}), 47: (1, {'@': 10}), 48: (1, {'@': 10}), 49: (1, {'@': 10}), 50: (1, {'@': 10}), 51: (1, {'@': 10}), 52: (1, {'@': 10}), 0: (1, {'@': 10}), 53: (1, {'@': 10}), 54: (1, {'@': 10}), 55: (1, {'@': 10}), 56: (1, {'@': 10}), 57: (1, {'@': 10}), 58: (1, {'@': 10}), 59: (1, {'@': 10}), 60: (1, {'@': 10}), 61: (1, {'@': 10}), 62: (1, {'@': 10}), 63: (1, {'@': 10}), 27: (1, {'@': 10}), 64: (1, {'@': 10}), 65: (1, {'@': 10}), 66: (1, {'@': 10}), 67: (1, {'@': 10}), 68: (1, {'@': 10}), 69: (1, {'@': 10}), 70: (1, {'@': 10}), 71: (1, {'@': 10}), 72: (1, {'@': 10}), 73: (1, {'@': 10}), 74: (1, {'@': 10}), 75: (1, {'@': 10}), 76: (1, {'@': 10}), 77: (1, {'@': 10}), 78: (1, {'@': 10}), 79: (1, {'@': 10}), 80: (1, {'@': 10}), 81: (1, {'@': 10}), 82: (1, {'@': 10}), 83: (1, {'@': 10}), 84: (1, {'@': 10}), 85: (1, {'@': 10}), 86: (1, {'@': 10}), 87: (1, {'@': 10}), 88: (1, {'@': 10}), 89: (1, {'@': 10}), 90: (1, {'@': 10}), 91: (1, {'@': 10}), 92: (1, {'@': 10}), 93: (1, {'@': 10}), 94: (1, {'@': 10}), 95: (1, {'@': 10}), 96: (1, {'@': 10}), 97: (1, {'@': 10}), 98: (1, {'@': 10}), 99: (1, {'@': 10}), 100: (1, {'@': 10}), 101: (1, {'@': 10}), 102: (1, {'@': 10}), 103: (1, {'@': 10}), 104: (1, {'@': 10}), 1: (1, {'@': 10}), 105: (1, {'@': 10}), 106: (1, {'@': 10}), 107: (1, {'@': 10}), 108: (1, {'@': 10}), 109: (1, {'@': 10}), 110: (1, {'@': 10}), 111: (1, {'@': 10}), 112: (1, {'@': 10}), 113: (1, {'@': 10}), 114: (1, {'@': 10}), 115: (1, {'@': 10}), 116: (1, {'@': 10}), 117: (1, {'@': 10}), 118: (1, {'@': 10}), 119: (1, {'@': 10}), 120: (1, {'@': 10}), 121: (1, {'@': 10}), 122: (1, {'@': 10}), 123: (1, {'@': 10}), 124: (1, {'@': 10}), 125: (1, {'@': 10}), 126: (1, {'@': 10}), 127: (1, {'@': 10}), 128: (1, {'@': 10}), 22: (1, {'@': 10}), 129: (1, {'@': 10})}, 156: {138: (0, 284)}, 157: {0: (1, {'@': 317}), 1: (1, {'@': 317}), 138: (1, {'@': 317})}, 158: {163: (0, 345)}, 159: {0: (1, {'@': 164}), 1: (1, {'@': 164}), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 160: {0: (1, {'@': 324}), 1: (1, {'@': 324}), 138: (1, {'@': 324})}, 161: {0: (1, {'@': 163}), 1: (1, {'@': 163})}, 162: {0: (1, {'@': 261}), 1: (1, {'@': 261}), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 163: {0: (1, {'@': 260}), 1: (1, {'@': 260})}, 164: {0: (1, {'@': 263}), 1: (1, {'@': 263})}, 165: {29: (1, {'@': 9}), 31: (1, {'@': 9}), 34: (1, {'@': 9}), 42: (1, {'@': 9}), 44: (1, {'@': 9}), 45: (1, {'@': 9}), 46: (1, {'@': 9}), 48: (1, {'@': 9}), 52: (1, {'@': 9}), 56: (1, {'@': 9}), 60: (1, {'@': 9}), 62: (1, {'@': 9}), 67: (1, {'@': 9}), 68: (1, {'@': 9}), 69: (1, {'@': 9}), 71: (1, {'@': 9}), 72: (1, {'@': 9}), 77: (1, {'@': 9}), 82: (1, {'@': 9}), 83: (1, {'@': 9}), 85: (1, {'@': 9}), 87: (1, {'@': 9}), 88: (1, {'@': 9}), 89: (1, {'@': 9}), 90: (1, {'@': 9}), 94: (1, {'@': 9}), 97: (1, {'@': 9}), 99: (1, {'@': 9}), 101: (1, {'@': 9}), 1: (1, {'@': 9}), 106: (1, {'@': 9}), 107: (1, {'@': 9}), 108: (1, {'@': 9}), 115: (1, {'@': 9}), 117: (1, {'@': 9}), 120: (1, {'@': 9}), 127: (1, {'@': 9}), 128: (1, {'@': 9}), 22: (1, {'@': 9}), 30: (1, {'@': 9}), 32: (1, {'@': 9}), 33: (1, {'@': 9}), 35: (1, {'@': 9}), 36: (1, {'@': 9}), 37: (1, {'@': 9}), 38: (1, {'@': 9}), 39: (1, {'@': 9}), 40: (1, {'@': 9}), 41: (1, {'@': 9}), 43: (1, {'@': 9}), 47: (1, {'@': 9}), 49: (1, {'@': 9}), 50: (1, {'@': 9}), 51: (1, {'@': 9}), 0: (1, {'@': 9}), 53: (1, {'@': 9}), 54: (1, {'@': 9}), 55: (1, {'@': 9}), 57: (1, {'@': 9}), 58: (1, {'@': 9}), 59: (1, {'@': 9}), 61: (1, {'@': 9}), 63: (1, {'@': 9}), 27: (1, {'@': 9}), 64: (1, {'@': 9}), 65: (1, {'@': 9}), 66: (1, {'@': 9}), 70: (1, {'@': 9}), 73: (1, {'@': 9}), 74: (1, {'@': 9}), 75: (1, {'@': 9}), 76: (1, {'@': 9}), 78: (1, {'@': 9}), 79: (1, {'@': 9}), 80: (1, {'@': 9}), 81: (1, {'@': 9}), 84: (1, {'@': 9}), 86: (1, {'@': 9}), 91: (1, {'@': 9}), 92: (1, {'@': 9}), 93: (1, {'@': 9}), 95: (1, {'@': 9}), 96: (1, {'@': 9}), 98: (1, {'@': 9}), 100: (1, {'@': 9}), 102: (1, {'@': 9}), 103: (1, {'@': 9}), 104: (1, {'@': 9}), 105: (1, {'@': 9}), 109: (1, {'@': 9}), 110: (1, {'@': 9}), 111: (1, {'@': 9}), 112: (1, {'@': 9}), 113: (1, {'@': 9}), 114: (1, {'@': 9}), 116: (1, {'@': 9}), 118: (1, {'@': 9}), 119: (1, {'@': 9}), 121: (1, {'@': 9}), 122: (1, {'@': 9}), 123: (1, {'@': 9}), 124: (1, {'@': 9}), 125: (1, {'@': 9}), 126: (1, {'@': 9}), 129: (1, {'@': 9})}, 166: {0: (1, {'@': 328}), 1: (1, {'@': 328}), 138: (1, {'@': 328})}, 167: {0: (1, {'@': 259}), 1: (1, {'@': 259}), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 168: {0: (1, {'@': 262}), 1: (1, {'@': 262})}, 169: {130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 170: {0: (1, {'@': 258}), 1: (1, {'@': 258})}, 171: {138: (0, 396), 0: (1, {'@': 68}), 1: (1, {'@': 68})}, 172: {0: (1, {'@': 94}), 1: (1, {'@': 94})}, 173: {0: (1, {'@': 137}), 1: (1, {'@': 137})}, 174: {0: (1, {'@': 95}), 1: (1, {'@': 95})}, 175: {0: (0, 191), 50: (1, {'@': 1})}, 176: {0: (1, {'@': 243}), 1: (1, {'@': 243})}, 177: {0: (1, {'@': 96}), 1: (1, {'@': 96})}, 178: {155: (0, 340), 166: (0, 495), 152: (0, 489), 149: (0, 494)}, 179: {0: (1, {'@': 97}), 1: (1, {'@': 97})}, 180: {0: (1, {'@': 138}), 1: (1, {'@': 138})}, 181: {0: (1, {'@': 188}), 1: (1, {'@': 188})}, 182: {0: (1, {'@': 61}), 1: (1, {'@': 61}), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 183: {11: (0, 145), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 10: (0, 330), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 26: (0, 158), 27: (0, 243), 28: (0, 266)}, 184: {11: (0, 162), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 26: (0, 163), 3: (0, 164), 27: (0, 243), 28: (0, 266)}, 185: {138: (1, {'@': 267}), 0: (1, {'@': 267}), 1: (1, {'@': 267})}, 186: {138: (0, 441)}, 187: {0: (1, {'@': 325}), 1: (1, {'@': 325}), 138: (1, {'@': 325})}, 188: {0: (1, {'@': 120}), 1: (1, {'@': 120}), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 189: {0: (1, {'@': 92}), 1: (1, {'@': 92})}, 190: {0: (1, {'@': 65}), 1: (1, {'@': 65})}, 191: {0: (1, {'@': 5}), 50: (1, {'@': 5})}, 192: {0: (1, {'@': 93}), 1: (1, {'@': 93})}, 193: {11: (0, 169), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 3: (0, 516), 20: (0, 571), 21: (0, 547), 5: (0, 219), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 6: (0, 254), 4: (0, 157), 26: (0, 290), 7: (0, 147), 167: (0, 592), 10: (0, 398), 27: (0, 243), 9: (0, 144), 171: (0, 496), 28: (0, 266)}, 194: {0: (1, {'@': 90}), 1: (1, {'@': 90})}, 195: {138: (0, 334)}, 196: {0: (1, {'@': 119}), 1: (1, {'@': 119})}, 197: {0: (1, {'@': 125}), 1: (1, {'@': 125})}, 198: {11: (0, 167), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 3: (0, 168), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 26: (0, 170), 27: (0, 243), 28: (0, 266)}, 199: {0: (1, {'@': 91}), 1: (1, {'@': 91})}, 200: {0: (1, {'@': 179}), 1: (1, {'@': 179})}, 201: {138: (1, {'@': 272}), 0: (1, {'@': 272}), 1: (1, {'@': 272}), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 202: {138: (1, {'@': 271}), 0: (1, {'@': 271}), 1: (1, {'@': 271})}, 203: {138: (0, 439)}, 204: {138: (1, {'@': 273}), 0: (1, {'@': 273}), 1: (1, {'@': 273})}, 205: {11: (0, 169), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 26: (0, 418), 25: (0, 570), 10: (0, 332), 27: (0, 243), 28: (0, 266)}, 206: {0: (1, {'@': 327}), 1: (1, {'@': 327}), 138: (1, {'@': 327})}, 207: {138: (0, 130)}, 208: {0: (1, {'@': 177}), 1: (1, {'@': 177}), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 209: {0: (1, {'@': 189}), 1: (1, {'@': 189})}, 210: {0: (1, {'@': 245}), 1: (1, {'@': 245})}, 211: {0: (1, {'@': 323}), 1: (1, {'@': 323}), 138: (1, {'@': 323})}, 212: {0: (1, {'@': 162}), 1: (1, {'@': 162})}, 213: {3: (0, 430)}, 214: {0: (1, {'@': 156}), 1: (1, {'@': 156})}, 215: {20: (0, 571), 12: (0, 486), 18: (0, 531), 8: (0, 446), 14: (0, 297), 11: (0, 326), 172: (0, 317), 13: (0, 388), 21: (0, 547), 27: (0, 243), 16: (0, 557), 22: (0, 339), 28: (0, 266)}, 216: {0: (1, {'@': 160}), 1: (1, {'@': 160})}, 217: {11: (0, 363), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 26: (0, 351), 27: (0, 243), 28: (0, 266)}, 218: {0: (1, {'@': 249}), 1: (1, {'@': 249})}, 219: {0: (1, {'@': 314}), 1: (1, {'@': 314}), 138: (1, {'@': 314})}, 220: {0: (1, {'@': 169}), 1: (1, {'@': 169}), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 221: {29: (1, {'@': 15}), 30: (1, {'@': 15}), 31: (1, {'@': 15}), 32: (1, {'@': 15}), 33: (1, {'@': 15}), 34: (1, {'@': 15}), 35: (1, {'@': 15}), 36: (1, {'@': 15}), 37: (1, {'@': 15}), 38: (1, {'@': 15}), 39: (1, {'@': 15}), 40: (1, {'@': 15}), 41: (1, {'@': 15}), 42: (1, {'@': 15}), 43: (1, {'@': 15}), 44: (1, {'@': 15}), 45: (1, {'@': 15}), 46: (1, {'@': 15}), 47: (1, {'@': 15}), 48: (1, {'@': 15}), 49: (1, {'@': 15}), 50: (1, {'@': 15}), 51: (1, {'@': 15}), 52: (1, {'@': 15}), 0: (1, {'@': 15}), 53: (1, {'@': 15}), 54: (1, {'@': 15}), 55: (1, {'@': 15}), 56: (1, {'@': 15}), 57: (1, {'@': 15}), 58: (1, {'@': 15}), 59: (1, {'@': 15}), 60: (1, {'@': 15}), 61: (1, {'@': 15}), 62: (1, {'@': 15}), 63: (1, {'@': 15}), 27: (1, {'@': 15}), 64: (1, {'@': 15}), 65: (1, {'@': 15}), 66: (1, {'@': 15}), 67: (1, {'@': 15}), 68: (1, {'@': 15}), 69: (1, {'@': 15}), 70: (1, {'@': 15}), 71: (1, {'@': 15}), 72: (1, {'@': 15}), 73: (1, {'@': 15}), 74: (1, {'@': 15}), 75: (1, {'@': 15}), 76: (1, {'@': 15}), 77: (1, {'@': 15}), 78: (1, {'@': 15}), 79: (1, {'@': 15}), 80: (1, {'@': 15}), 81: (1, {'@': 15}), 82: (1, {'@': 15}), 83: (1, {'@': 15}), 84: (1, {'@': 15}), 85: (1, {'@': 15}), 86: (1, {'@': 15}), 87: (1, {'@': 15}), 88: (1, {'@': 15}), 89: (1, {'@': 15}), 90: (1, {'@': 15}), 91: (1, {'@': 15}), 92: (1, {'@': 15}), 93: (1, {'@': 15}), 94: (1, {'@': 15}), 95: (1, {'@': 15}), 96: (1, {'@': 15}), 97: (1, {'@': 15}), 98: (1, {'@': 15}), 99: (1, {'@': 15}), 100: (1, {'@': 15}), 101: (1, {'@': 15}), 102: (1, {'@': 15}), 103: (1, {'@': 15}), 104: (1, {'@': 15}), 1: (1, {'@': 15}), 105: (1, {'@': 15}), 106: (1, {'@': 15}), 107: (1, {'@': 15}), 108: (1, {'@': 15}), 109: (1, {'@': 15}), 110: (1, {'@': 15}), 111: (1, {'@': 15}), 112: (1, {'@': 15}), 113: (1, {'@': 15}), 114: (1, {'@': 15}), 115: (1, {'@': 15}), 116: (1, {'@': 15}), 117: (1, {'@': 15}), 118: (1, {'@': 15}), 119: (1, {'@': 15}), 120: (1, {'@': 15}), 121: (1, {'@': 15}), 122: (1, {'@': 15}), 123: (1, {'@': 15}), 124: (1, {'@': 15}), 125: (1, {'@': 15}), 126: (1, {'@': 15}), 127: (1, {'@': 15}), 128: (1, {'@': 15}), 22: (1, {'@': 15}), 129: (1, {'@': 15})}, 222: {20: (0, 571), 12: (0, 486), 18: (0, 531), 8: (0, 446), 14: (0, 297), 11: (0, 326), 13: (0, 388), 21: (0, 547), 27: (0, 243), 172: (0, 383), 16: (0, 557), 22: (0, 339), 28: (0, 266)}, 223: {0: (1, {'@': 168}), 1: (1, {'@': 168})}, 224: {0: (1, {'@': 247}), 1: (1, {'@': 247})}, 225: {11: (0, 145), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 155: (0, 132), 16: (0, 557), 17: (0, 604), 18: (0, 531), 150: (0, 585), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 10: (0, 470), 26: (0, 158), 154: (0, 491), 153: (0, 325), 27: (0, 243), 28: (0, 266)}, 226: {0: (1, {'@': 158}), 1: (1, {'@': 158})}, 227: {0: (1, {'@': 166}), 1: (1, {'@': 166}), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 228: {3: (0, 322), 149: (0, 187), 150: (0, 585), 156: (0, 30), 152: (0, 348), 166: (0, 114), 153: (0, 325), 154: (0, 166), 155: (0, 206)}, 229: {0: (1, {'@': 165}), 1: (1, {'@': 165})}, 230: {20: (0, 571), 12: (0, 486), 18: (0, 531), 8: (0, 446), 14: (0, 297), 11: (0, 326), 13: (0, 388), 21: (0, 547), 27: (0, 243), 172: (0, 349), 16: (0, 557), 22: (0, 339), 28: (0, 266)}, 231: {0: (1, {'@': 161}), 1: (1, {'@': 161})}, 232: {0: (1, {'@': 159}), 1: (1, {'@': 159})}, 233: {0: (1, {'@': 155}), 1: (1, {'@': 155})}, 234: {0: (1, {'@': 178}), 1: (1, {'@': 178})}, 235: {0: (1, {'@': 157}), 1: (1, {'@': 157})}, 236: {0: (1, {'@': 59}), 1: (1, {'@': 59})}, 237: {138: (0, 316)}, 238: {138: (0, 324)}, 239: {138: (0, 217), 0: (1, {'@': 53}), 1: (1, {'@': 53})}, 240: {138: (0, 528)}, 241: {173: (0, 534)}, 242: {12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 311), 16: (0, 557), 18: (0, 531), 19: (0, 335), 20: (0, 571), 21: (0, 547), 22: (0, 339), 11: (0, 319), 27: (0, 243), 28: (0, 266)}, 243: {131: (1, {'@': 374}), 133: (1, {'@': 374}), 14: (1, {'@': 374}), 0: (1, {'@': 374}), 134: (1, {'@': 374}), 1: (1, {'@': 374}), 53: (1, {'@': 374}), 135: (1, {'@': 374}), 21: (1, {'@': 374}), 130: (1, {'@': 374}), 136: (1, {'@': 374}), 137: (1, {'@': 374}), 132: (1, {'@': 374}), 163: (1, {'@': 374}), 138: (1, {'@': 374}), 164: (1, {'@': 374}), 165: (1, {'@': 374})}, 244: {0: (1, {'@': 248}), 1: (1, {'@': 248})}, 245: {138: (0, 452)}, 246: {0: (1, {'@': 230}), 1: (1, {'@': 230})}, 247: {0: (1, {'@': 235}), 1: (1, {'@': 235})}, 248: {3: (0, 343)}, 249: {164: (0, 123)}, 250: {0: (1, {'@': 280}), 1: (1, {'@': 280}), 138: (1, {'@': 280})}, 251: {11: (0, 227), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 27: (0, 243), 26: (0, 229), 28: (0, 266)}, 252: {0: (1, {'@': 227}), 1: (1, {'@': 227})}, 253: {155: (0, 260), 3: (0, 245)}, 254: {0: (1, {'@': 319}), 1: (1, {'@': 319}), 138: (1, {'@': 319})}, 255: {163: (0, 341), 131: (1, {'@': 369}), 133: (1, {'@': 369}), 14: (1, {'@': 369}), 53: (1, {'@': 369}), 134: (1, {'@': 369}), 135: (1, {'@': 369}), 21: (1, {'@': 369}), 130: (1, {'@': 369}), 136: (1, {'@': 369}), 137: (1, {'@': 369}), 132: (1, {'@': 369})}, 256: {4: (0, 224)}, 257: {138: (0, 53)}, 258: {8: (0, 183), 174: (0, 181), 2: (0, 205), 11: (0, 209)}, 259: {163: (0, 352), 131: (1, {'@': 370}), 133: (1, {'@': 370}), 14: (1, {'@': 370}), 53: (1, {'@': 370}), 134: (1, {'@': 370}), 135: (1, {'@': 370}), 21: (1, {'@': 370}), 130: (1, {'@': 370}), 136: (1, {'@': 370}), 137: (1, {'@': 370}), 132: (1, {'@': 370})}, 260: {138: (0, 526)}, 261: {0: (1, {'@': 246}), 1: (1, {'@': 246})}, 262: {138: (0, 263), 0: (1, {'@': 69}), 1: (1, {'@': 69})}, 263: {11: (0, 169), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 26: (0, 468), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 27: (0, 243), 28: (0, 266)}, 264: {0: (1, {'@': 237}), 1: (1, {'@': 237})}, 265: {164: (0, 382), 131: (1, {'@': 370}), 133: (1, {'@': 370}), 14: (1, {'@': 370}), 53: (1, {'@': 370}), 134: (1, {'@': 370}), 135: (1, {'@': 370}), 21: (1, {'@': 370}), 130: (1, {'@': 370}), 136: (1, {'@': 370}), 137: (1, {'@': 370}), 132: (1, {'@': 370})}, 266: {131: (1, {'@': 371}), 133: (1, {'@': 371}), 14: (1, {'@': 371}), 0: (1, {'@': 371}), 134: (1, {'@': 371}), 1: (1, {'@': 371}), 53: (1, {'@': 371}), 135: (1, {'@': 371}), 21: (1, {'@': 371}), 130: (1, {'@': 371}), 136: (1, {'@': 371}), 137: (1, {'@': 371}), 132: (1, {'@': 371}), 163: (1, {'@': 371}), 138: (1, {'@': 371}), 164: (1, {'@': 371}), 165: (1, {'@': 371})}, 267: {0: (1, {'@': 281}), 1: (1, {'@': 281}), 138: (1, {'@': 281})}, 268: {163: (0, 346), 131: (1, {'@': 370}), 133: (1, {'@': 370}), 14: (1, {'@': 370}), 53: (1, {'@': 370}), 134: (1, {'@': 370}), 135: (1, {'@': 370}), 21: (1, {'@': 370}), 130: (1, {'@': 370}), 136: (1, {'@': 370}), 137: (1, {'@': 370}), 132: (1, {'@': 370})}, 269: {0: (1, {'@': 238}), 1: (1, {'@': 238})}, 270: {11: (0, 169), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 10: (0, 249), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 26: (0, 418), 25: (0, 570), 27: (0, 243), 28: (0, 266)}, 271: {14: (0, 242), 21: (0, 559), 133: (1, {'@': 356}), 0: (1, {'@': 356}), 134: (1, {'@': 356}), 135: (1, {'@': 356}), 1: (1, {'@': 356}), 136: (1, {'@': 356}), 137: (1, {'@': 356}), 163: (1, {'@': 356}), 138: (1, {'@': 356}), 164: (1, {'@': 356}), 165: (1, {'@': 356})}, 272: {3: (0, 353)}, 273: {163: (0, 350), 131: (1, {'@': 369}), 133: (1, {'@': 369}), 14: (1, {'@': 369}), 53: (1, {'@': 369}), 134: (1, {'@': 369}), 135: (1, {'@': 369}), 21: (1, {'@': 369}), 130: (1, {'@': 369}), 136: (1, {'@': 369}), 137: (1, {'@': 369}), 132: (1, {'@': 369})}, 274: {0: (1, {'@': 64}), 1: (1, {'@': 64})}, 275: {0: (1, {'@': 201}), 1: (1, {'@': 201})}, 276: {0: (1, {'@': 78}), 1: (1, {'@': 78})}, 277: {4: (0, 218)}, 278: {3: (0, 379)}, 279: {11: (0, 540), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 26: (0, 530), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 27: (0, 243), 28: (0, 266)}, 280: {168: (0, 231), 8: (0, 302), 2: (0, 501), 170: (0, 232), 5: (0, 219), 6: (0, 254), 4: (0, 157), 3: (0, 233), 7: (0, 147), 167: (0, 235), 10: (0, 398), 9: (0, 144), 171: (0, 496)}, 281: {164: (0, 385), 131: (1, {'@': 369}), 133: (1, {'@': 369}), 14: (1, {'@': 369}), 53: (1, {'@': 369}), 134: (1, {'@': 369}), 135: (1, {'@': 369}), 21: (1, {'@': 369}), 130: (1, {'@': 369}), 136: (1, {'@': 369}), 137: (1, {'@': 369}), 132: (1, {'@': 369})}, 282: {138: (0, 228)}, 283: {11: (0, 109), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 26: (0, 111), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 174: (0, 115), 2: (0, 82), 27: (0, 243), 28: (0, 266)}, 284: {6: (0, 254), 10: (0, 398), 167: (0, 395), 5: (0, 219), 4: (0, 157), 9: (0, 144), 171: (0, 496), 7: (0, 147), 3: (0, 397)}, 285: {138: (0, 193)}, 286: {0: (1, {'@': 287}), 1: (1, {'@': 287}), 138: (1, {'@': 287})}, 287: {3: (0, 373)}, 288: {11: (0, 500), 12: (0, 486), 13: (0, 461), 8: (0, 51), 14: (0, 297), 160: (0, 160), 15: (0, 444), 16: (0, 557), 159: (0, 29), 2: (0, 501), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 168: (0, 512), 21: (0, 547), 5: (0, 219), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 6: (0, 254), 157: (0, 211), 169: (0, 490), 4: (0, 157), 7: (0, 147), 26: (0, 318), 167: (0, 457), 170: (0, 492), 10: (0, 398), 27: (0, 243), 3: (0, 358), 158: (0, 306), 9: (0, 144), 171: (0, 496), 28: (0, 266)}, 289: {0: (1, {'@': 286}), 1: (1, {'@': 286}), 138: (1, {'@': 286})}, 290: {0: (1, {'@': 82}), 1: (1, {'@': 82})}, 291: {138: (0, 287)}, 292: {163: (0, 356)}, 293: {14: (1, {'@': 297}), 16: (1, {'@': 297}), 18: (1, {'@': 297}), 21: (1, {'@': 297}), 8: (1, {'@': 297}), 22: (1, {'@': 297}), 27: (1, {'@': 297})}, 294: {14: (0, 242), 21: (0, 559), 133: (1, {'@': 352}), 0: (1, {'@': 352}), 134: (1, {'@': 352}), 135: (1, {'@': 352}), 1: (1, {'@': 352}), 136: (1, {'@': 352}), 137: (1, {'@': 352}), 163: (1, {'@': 352}), 138: (1, {'@': 352}), 164: (1, {'@': 352}), 165: (1, {'@': 352})}, 295: {0: (1, {'@': 167}), 1: (1, {'@': 167})}, 296: {163: (0, 360)}, 297: {18: (0, 531), 8: (0, 446), 14: (0, 297), 20: (0, 74), 21: (0, 547), 27: (0, 243), 11: (0, 143), 16: (0, 557), 22: (0, 339), 28: (0, 266)}, 298: {4: (0, 210)}, 299: {164: (0, 365)}, 300: {155: (0, 236)}, 301: {164: (0, 369)}, 302: {150: (0, 135), 153: (0, 139), 155: (0, 132)}, 303: {0: (1, {'@': 118}), 1: (1, {'@': 118})}, 304: {10: (0, 69)}, 305: {164: (0, 389), 131: (1, {'@': 370}), 133: (1, {'@': 370}), 14: (1, {'@': 370}), 53: (1, {'@': 370}), 134: (1, {'@': 370}), 135: (1, {'@': 370}), 21: (1, {'@': 370}), 130: (1, {'@': 370}), 136: (1, {'@': 370}), 137: (1, {'@': 370}), 132: (1, {'@': 370})}, 306: {0: (1, {'@': 321}), 1: (1, {'@': 321}), 138: (1, {'@': 321})}, 307: {6: (0, 254), 3: (0, 402), 10: (0, 398), 167: (0, 407), 5: (0, 219), 4: (0, 157), 9: (0, 144), 171: (0, 496), 7: (0, 147)}, 308: {0: (1, {'@': 140}), 1: (1, {'@': 140})}, 309: {164: (0, 391), 131: (1, {'@': 369}), 133: (1, {'@': 369}), 14: (1, {'@': 369}), 53: (1, {'@': 369}), 134: (1, {'@': 369}), 135: (1, {'@': 369}), 21: (1, {'@': 369}), 130: (1, {'@': 369}), 136: (1, {'@': 369}), 137: (1, {'@': 369}), 132: (1, {'@': 369})}, 310: {14: (0, 242), 21: (0, 559), 133: (1, {'@': 353}), 0: (1, {'@': 353}), 134: (1, {'@': 353}), 135: (1, {'@': 353}), 1: (1, {'@': 353}), 136: (1, {'@': 353}), 137: (1, {'@': 353}), 163: (1, {'@': 353}), 138: (1, {'@': 353}), 164: (1, {'@': 353}), 165: (1, {'@': 353})}, 311: {53: (0, 314), 132: (0, 230), 131: (0, 215), 133: (1, {'@': 358}), 14: (1, {'@': 358}), 0: (1, {'@': 358}), 134: (1, {'@': 358}), 1: (1, {'@': 358}), 135: (1, {'@': 358}), 21: (1, {'@': 358}), 136: (1, {'@': 358}), 137: (1, {'@': 358}), 163: (1, {'@': 358}), 138: (1, {'@': 358}), 164: (1, {'@': 358}), 165: (1, {'@': 358})}, 312: {0: (1, {'@': 115}), 1: (1, {'@': 115})}, 313: {138: (0, 178)}, 314: {20: (0, 571), 12: (0, 486), 18: (0, 531), 8: (0, 446), 14: (0, 297), 11: (0, 326), 13: (0, 388), 21: (0, 547), 27: (0, 243), 16: (0, 557), 22: (0, 339), 172: (0, 401), 28: (0, 266)}, 315: {0: (1, {'@': 198}), 1: (1, {'@': 198})}, 316: {154: (0, 428), 150: (0, 585), 155: (0, 434), 153: (0, 325)}, 317: {131: (1, {'@': 362}), 133: (1, {'@': 362}), 14: (1, {'@': 362}), 0: (1, {'@': 362}), 134: (1, {'@': 362}), 1: (1, {'@': 362}), 53: (1, {'@': 362}), 135: (1, {'@': 362}), 21: (1, {'@': 362}), 136: (1, {'@': 362}), 137: (1, {'@': 362}), 132: (1, {'@': 362}), 163: (1, {'@': 362}), 138: (1, {'@': 362}), 164: (1, {'@': 362}), 165: (1, {'@': 362})}, 318: {0: (1, {'@': 133}), 1: (1, {'@': 133})}, 319: {130: (1, {'@': 348}), 138: (1, {'@': 346}), 14: (1, {'@': 346}), 53: (1, {'@': 346}), 0: (1, {'@': 346}), 134: (1, {'@': 346}), 1: (1, {'@': 346}), 135: (1, {'@': 346}), 165: (1, {'@': 346}), 137: (1, {'@': 346}), 163: (1, {'@': 346}), 132: (1, {'@': 346}), 131: (1, {'@': 346}), 133: (1, {'@': 346}), 164: (1, {'@': 346}), 21: (1, {'@': 346}), 136: (1, {'@': 346})}, 320: {138: (0, 198)}, 321: {138: (1, {'@': 343}), 14: (1, {'@': 343}), 0: (1, {'@': 343}), 134: (1, {'@': 343}), 1: (1, {'@': 343}), 135: (1, {'@': 343}), 165: (1, {'@': 343}), 137: (1, {'@': 343}), 163: (1, {'@': 343}), 133: (1, {'@': 343}), 164: (1, {'@': 343}), 21: (1, {'@': 343}), 136: (1, {'@': 343})}, 322: {0: (1, {'@': 142}), 1: (1, {'@': 142})}, 323: {131: (1, {'@': 376}), 133: (1, {'@': 376}), 14: (1, {'@': 376}), 0: (1, {'@': 376}), 134: (1, {'@': 376}), 1: (1, {'@': 376}), 53: (1, {'@': 376}), 135: (1, {'@': 376}), 21: (1, {'@': 376}), 130: (1, {'@': 376}), 136: (1, {'@': 376}), 137: (1, {'@': 376}), 132: (1, {'@': 376}), 163: (1, {'@': 376}), 138: (1, {'@': 376}), 164: (1, {'@': 376}), 165: (1, {'@': 376})}, 324: {154: (0, 440), 150: (0, 585), 155: (0, 443), 153: (0, 325)}, 325: {0: (1, {'@': 329}), 1: (1, {'@': 329}), 164: (1, {'@': 329}), 163: (1, {'@': 329}), 138: (1, {'@': 329})}, 326: {130: (1, {'@': 348}), 138: (1, {'@': 350}), 14: (1, {'@': 350}), 53: (1, {'@': 350}), 134: (1, {'@': 350}), 0: (1, {'@': 350}), 1: (1, {'@': 350}), 135: (1, {'@': 350}), 165: (1, {'@': 350}), 137: (1, {'@': 350}), 163: (1, {'@': 350}), 132: (1, {'@': 350}), 131: (1, {'@': 350}), 133: (1, {'@': 350}), 164: (1, {'@': 350}), 21: (1, {'@': 350}), 136: (1, {'@': 350})}, 327: {163: (0, 423)}, 328: {138: (0, 110)}, 329: {14: (0, 242), 21: (0, 559), 133: (1, {'@': 355}), 0: (1, {'@': 355}), 134: (1, {'@': 355}), 135: (1, {'@': 355}), 1: (1, {'@': 355}), 136: (1, {'@': 355}), 137: (1, {'@': 355}), 163: (1, {'@': 355}), 138: (1, {'@': 355}), 164: (1, {'@': 355}), 165: (1, {'@': 355})}, 330: {163: (0, 412)}, 331: {11: (0, 145), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 153: (0, 139), 155: (0, 132), 15: (0, 444), 16: (0, 557), 152: (0, 137), 17: (0, 604), 150: (0, 135), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 26: (0, 158), 149: (0, 124), 27: (0, 243), 28: (0, 266)}, 332: {164: (0, 415)}, 333: {11: (0, 497), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 10: (0, 148), 16: (0, 557), 175: (0, 578), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 176: (0, 93), 23: (0, 403), 22: (0, 339), 24: (0, 542), 25: (0, 570), 26: (0, 588), 27: (0, 243), 177: (0, 71), 178: (0, 66), 28: (0, 266)}, 334: {4: (0, 261)}, 335: {138: (1, {'@': 345}), 14: (1, {'@': 345}), 53: (1, {'@': 345}), 0: (1, {'@': 345}), 134: (1, {'@': 345}), 1: (1, {'@': 345}), 135: (1, {'@': 345}), 165: (1, {'@': 345}), 137: (1, {'@': 345}), 163: (1, {'@': 345}), 132: (1, {'@': 345}), 131: (1, {'@': 345}), 133: (1, {'@': 345}), 164: (1, {'@': 345}), 21: (1, {'@': 345}), 136: (1, {'@': 345})}, 336: {11: (0, 367), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 16: (0, 557), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 24: (0, 294), 25: (0, 321), 27: (0, 243), 28: (0, 266)}, 337: {14: (0, 242), 21: (0, 559), 133: (1, {'@': 354}), 0: (1, {'@': 354}), 134: (1, {'@': 354}), 135: (1, {'@': 354}), 1: (1, {'@': 354}), 136: (1, {'@': 354}), 137: (1, {'@': 354}), 163: (1, {'@': 354}), 138: (1, {'@': 354}), 164: (1, {'@': 354}), 165: (1, {'@': 354})}, 338: {0: (1, {'@': 141}), 1: (1, {'@': 141})}, 339: {131: (1, {'@': 375}), 133: (1, {'@': 375}), 14: (1, {'@': 375}), 0: (1, {'@': 375}), 134: (1, {'@': 375}), 1: (1, {'@': 375}), 53: (1, {'@': 375}), 135: (1, {'@': 375}), 21: (1, {'@': 375}), 130: (1, {'@': 375}), 136: (1, {'@': 375}), 137: (1, {'@': 375}), 132: (1, {'@': 375}), 163: (1, {'@': 375}), 138: (1, {'@': 375}), 164: (1, {'@': 375}), 165: (1, {'@': 375})}, 340: {0: (1, {'@': 112}), 1: (1, {'@': 112})}, 341: {0: (1, {'@': 283}), 1: (1, {'@': 283}), 138: (1, {'@': 283})}, 342: {0: (1, {'@': 208}), 1: (1, {'@': 208})}, 343: {0: (1, {'@': 46}), 1: (1, {'@': 46})}, 344: {0: (1, {'@': 309}), 1: (1, {'@': 309})}, 345: {131: (1, {'@': 372}), 133: (1, {'@': 372}), 14: (1, {'@': 372}), 53: (1, {'@': 372}), 134: (1, {'@': 372}), 135: (1, {'@': 372}), 21: (1, {'@': 372}), 130: (1, {'@': 372}), 136: (1, {'@': 372}), 137: (1, {'@': 372}), 132: (1, {'@': 372}), 163: (1, {'@': 372}), 0: (1, {'@': 372}), 1: (1, {'@': 372}), 138: (1, {'@': 372}), 165: (1, {'@': 372}), 164: (1, {'@': 372})}, 346: {0: (1, {'@': 284}), 1: (1, {'@': 284}), 138: (1, {'@': 284})}, 347: {0: (1, {'@': 195}), 1: (1, {'@': 195})}, 348: {0: (1, {'@': 326}), 1: (1, {'@': 326}), 138: (1, {'@': 326})}, 349: {131: (1, {'@': 363}), 133: (1, {'@': 363}), 14: (1, {'@': 363}), 0: (1, {'@': 363}), 134: (1, {'@': 363}), 1: (1, {'@': 363}), 53: (1, {'@': 363}), 135: (1, {'@': 363}), 21: (1, {'@': 363}), 136: (1, {'@': 363}), 137: (1, {'@': 363}), 132: (1, {'@': 363}), 163: (1, {'@': 363}), 138: (1, {'@': 363}), 164: (1, {'@': 363}), 165: (1, {'@': 363})}, 350: {0: (1, {'@': 285}), 1: (1, {'@': 285}), 138: (1, {'@': 285})}, 351: {138: (1, {'@': 276}), 0: (1, {'@': 276}), 1: (1, {'@': 276})}, 352: {0: (1, {'@': 282}), 1: (1, {'@': 282}), 138: (1, {'@': 282})}, 353: {0: (1, {'@': 44}), 1: (1, {'@': 44})}, 354: {170: (0, 590), 167: (0, 569), 8: (0, 302), 2: (0, 501), 3: (0, 593), 5: (0, 219), 168: (0, 449), 6: (0, 254), 4: (0, 157), 7: (0, 147), 10: (0, 398), 9: (0, 144), 171: (0, 496)}, 355: {138: (0, 523)}, 356: {0: (1, {'@': 40}), 1: (1, {'@': 40})}, 357: {53: (0, 314), 132: (0, 230), 131: (0, 215), 133: (1, {'@': 359}), 14: (1, {'@': 359}), 0: (1, {'@': 359}), 134: (1, {'@': 359}), 1: (1, {'@': 359}), 135: (1, {'@': 359}), 21: (1, {'@': 359}), 136: (1, {'@': 359}), 137: (1, {'@': 359}), 163: (1, {'@': 359}), 138: (1, {'@': 359}), 164: (1, {'@': 359}), 165: (1, {'@': 359})}, 358: {0: (1, {'@': 130}), 1: (1, {'@': 130})}, 359: {0: (1, {'@': 117}), 1: (1, {'@': 117})}, 360: {0: (1, {'@': 42}), 1: (1, {'@': 42})}, 361: {179: (0, 574), 11: (0, 432), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 16: (0, 557), 17: (0, 604), 161: (0, 426), 26: (0, 589), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 27: (0, 243), 28: (0, 266)}, 362: {0: (1, {'@': 229}), 1: (1, {'@': 229})}, 363: {138: (1, {'@': 277}), 0: (1, {'@': 277}), 1: (1, {'@': 277}), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 364: {0: (1, {'@': 114}), 1: (1, {'@': 114})}, 365: {0: (1, {'@': 41}), 1: (1, {'@': 41})}, 366: {138: (0, 184), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 367: {130: (1, {'@': 348}), 138: (1, {'@': 344}), 14: (1, {'@': 344}), 0: (1, {'@': 344}), 134: (1, {'@': 344}), 1: (1, {'@': 344}), 135: (1, {'@': 344}), 165: (1, {'@': 344}), 137: (1, {'@': 344}), 163: (1, {'@': 344}), 133: (1, {'@': 344}), 164: (1, {'@': 344}), 21: (1, {'@': 344}), 136: (1, {'@': 344}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346})}, 368: {0: (1, {'@': 253}), 1: (1, {'@': 253}), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 369: {0: (1, {'@': 43}), 1: (1, {'@': 43})}, 370: {138: (0, 591)}, 371: {131: (1, {'@': 373}), 133: (1, {'@': 373}), 14: (1, {'@': 373}), 53: (1, {'@': 373}), 134: (1, {'@': 373}), 135: (1, {'@': 373}), 21: (1, {'@': 373}), 130: (1, {'@': 373}), 136: (1, {'@': 373}), 137: (1, {'@': 373}), 132: (1, {'@': 373}), 163: (1, {'@': 373}), 0: (1, {'@': 373}), 1: (1, {'@': 373}), 138: (1, {'@': 373}), 165: (1, {'@': 373}), 164: (1, {'@': 373})}, 372: {0: (1, {'@': 116}), 1: (1, {'@': 116})}, 373: {0: (1, {'@': 47}), 1: (1, {'@': 47})}, 374: {180: (0, 279), 0: (1, {'@': 19}), 1: (1, {'@': 19})}, 375: {0: (1, {'@': 19}), 1: (1, {'@': 19})}, 376: {152: (0, 605)}, 377: {0: (1, {'@': 214}), 1: (1, {'@': 214})}, 378: {164: (0, 291)}, 379: {0: (1, {'@': 45}), 1: (1, {'@': 45})}, 380: {11: (0, 541), 162: (0, 525), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 26: (0, 595), 27: (0, 243), 28: (0, 266)}, 381: {164: (0, 515)}, 382: {0: (1, {'@': 290}), 1: (1, {'@': 290}), 138: (1, {'@': 290})}, 383: {131: (1, {'@': 365}), 133: (1, {'@': 365}), 14: (1, {'@': 365}), 0: (1, {'@': 365}), 134: (1, {'@': 365}), 1: (1, {'@': 365}), 53: (1, {'@': 365}), 135: (1, {'@': 365}), 21: (1, {'@': 365}), 136: (1, {'@': 365}), 137: (1, {'@': 365}), 132: (1, {'@': 365}), 163: (1, {'@': 365}), 138: (1, {'@': 365}), 164: (1, {'@': 365}), 165: (1, {'@': 365})}, 384: {11: (0, 169), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 118), 21: (0, 125), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 26: (0, 134), 27: (0, 243), 28: (0, 266)}, 385: {0: (1, {'@': 291}), 1: (1, {'@': 291}), 138: (1, {'@': 291})}, 386: {0: (1, {'@': 278}), 1: (1, {'@': 278}), 138: (1, {'@': 278})}, 387: {3: (0, 131)}, 388: {138: (1, {'@': 349}), 14: (1, {'@': 349}), 53: (1, {'@': 349}), 134: (1, {'@': 349}), 0: (1, {'@': 349}), 1: (1, {'@': 349}), 135: (1, {'@': 349}), 165: (1, {'@': 349}), 137: (1, {'@': 349}), 163: (1, {'@': 349}), 132: (1, {'@': 349}), 131: (1, {'@': 349}), 133: (1, {'@': 349}), 164: (1, {'@': 349}), 21: (1, {'@': 349}), 136: (1, {'@': 349})}, 389: {0: (1, {'@': 288}), 1: (1, {'@': 288}), 138: (1, {'@': 288})}, 390: {0: (1, {'@': 340}), 1: (1, {'@': 340}), 138: (1, {'@': 340})}, 391: {0: (1, {'@': 289}), 1: (1, {'@': 289}), 138: (1, {'@': 289})}, 392: {0: (1, {'@': 145}), 1: (1, {'@': 145}), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 393: {0: (1, {'@': 139}), 1: (1, {'@': 139})}, 394: {8: (0, 142), 2: (0, 270), 174: (0, 482), 11: (0, 404)}, 395: {0: (1, {'@': 186}), 1: (1, {'@': 186})}, 396: {11: (0, 169), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 26: (0, 262), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 27: (0, 243), 28: (0, 266)}, 397: {0: (1, {'@': 184}), 1: (1, {'@': 184})}, 398: {0: (1, {'@': 318}), 1: (1, {'@': 318}), 138: (1, {'@': 318})}, 399: {0: (1, {'@': 109}), 1: (1, {'@': 109})}, 400: {138: (0, 272)}, 401: {131: (1, {'@': 361}), 133: (1, {'@': 361}), 14: (1, {'@': 361}), 0: (1, {'@': 361}), 134: (1, {'@': 361}), 1: (1, {'@': 361}), 53: (1, {'@': 361}), 135: (1, {'@': 361}), 21: (1, {'@': 361}), 136: (1, {'@': 361}), 137: (1, {'@': 361}), 132: (1, {'@': 361}), 163: (1, {'@': 361}), 138: (1, {'@': 361}), 164: (1, {'@': 361}), 165: (1, {'@': 361})}, 402: {0: (1, {'@': 185}), 1: (1, {'@': 185})}, 403: {133: (1, {'@': 341}), 134: (1, {'@': 341}), 135: (1, {'@': 341}), 136: (1, {'@': 341}), 137: (1, {'@': 341}), 0: (1, {'@': 351}), 1: (1, {'@': 351}), 163: (1, {'@': 351}), 138: (1, {'@': 351}), 164: (1, {'@': 351}), 165: (1, {'@': 351})}, 404: {138: (0, 565)}, 405: {0: (1, {'@': 49}), 1: (1, {'@': 49})}, 406: {0: (1, {'@': 101}), 1: (1, {'@': 101})}, 407: {0: (1, {'@': 187}), 1: (1, {'@': 187})}, 408: {0: (1, {'@': 231}), 1: (1, {'@': 231})}, 409: {138: (0, 455)}, 410: {164: (0, 238)}, 411: {0: (1, {'@': 6}), 50: (1, {'@': 6})}, 412: {0: (1, {'@': 180}), 1: (1, {'@': 180})}, 413: {0: (1, {'@': 77}), 1: (1, {'@': 77})}, 414: {8: (0, 302), 2: (0, 501), 3: (0, 214), 170: (0, 216), 5: (0, 219), 6: (0, 254), 167: (0, 226), 4: (0, 157), 7: (0, 147), 10: (0, 398), 168: (0, 212), 9: (0, 144), 171: (0, 496)}, 415: {0: (1, {'@': 181}), 1: (1, {'@': 181})}, 416: {0: (1, {'@': 4}), 50: (1, {'@': 4})}, 417: {138: (0, 298)}, 418: {164: (0, 390)}, 419: {0: (1, {'@': 183}), 1: (1, {'@': 183})}, 420: {164: (0, 576)}, 421: {2: (1, {'@': 302}), 3: (1, {'@': 302}), 4: (1, {'@': 302}), 5: (1, {'@': 302}), 6: (1, {'@': 302}), 7: (1, {'@': 302}), 8: (1, {'@': 302}), 9: (1, {'@': 302}), 10: (1, {'@': 302})}, 422: {29: (1, {'@': 13}), 30: (1, {'@': 13}), 31: (1, {'@': 13}), 32: (1, {'@': 13}), 33: (1, {'@': 13}), 34: (1, {'@': 13}), 35: (1, {'@': 13}), 36: (1, {'@': 13}), 37: (1, {'@': 13}), 38: (1, {'@': 13}), 39: (1, {'@': 13}), 40: (1, {'@': 13}), 41: (1, {'@': 13}), 42: (1, {'@': 13}), 43: (1, {'@': 13}), 44: (1, {'@': 13}), 45: (1, {'@': 13}), 46: (1, {'@': 13}), 47: (1, {'@': 13}), 48: (1, {'@': 13}), 49: (1, {'@': 13}), 50: (1, {'@': 13}), 51: (1, {'@': 13}), 52: (1, {'@': 13}), 0: (1, {'@': 13}), 53: (1, {'@': 13}), 54: (1, {'@': 13}), 55: (1, {'@': 13}), 56: (1, {'@': 13}), 57: (1, {'@': 13}), 58: (1, {'@': 13}), 59: (1, {'@': 13}), 60: (1, {'@': 13}), 61: (1, {'@': 13}), 62: (1, {'@': 13}), 63: (1, {'@': 13}), 27: (1, {'@': 13}), 64: (1, {'@': 13}), 65: (1, {'@': 13}), 66: (1, {'@': 13}), 67: (1, {'@': 13}), 68: (1, {'@': 13}), 69: (1, {'@': 13}), 70: (1, {'@': 13}), 71: (1, {'@': 13}), 72: (1, {'@': 13}), 73: (1, {'@': 13}), 74: (1, {'@': 13}), 75: (1, {'@': 13}), 76: (1, {'@': 13}), 77: (1, {'@': 13}), 78: (1, {'@': 13}), 79: (1, {'@': 13}), 80: (1, {'@': 13}), 81: (1, {'@': 13}), 82: (1, {'@': 13}), 83: (1, {'@': 13}), 84: (1, {'@': 13}), 85: (1, {'@': 13}), 86: (1, {'@': 13}), 87: (1, {'@': 13}), 88: (1, {'@': 13}), 89: (1, {'@': 13}), 90: (1, {'@': 13}), 91: (1, {'@': 13}), 92: (1, {'@': 13}), 93: (1, {'@': 13}), 94: (1, {'@': 13}), 95: (1, {'@': 13}), 96: (1, {'@': 13}), 97: (1, {'@': 13}), 98: (1, {'@': 13}), 99: (1, {'@': 13}), 100: (1, {'@': 13}), 101: (1, {'@': 13}), 102: (1, {'@': 13}), 103: (1, {'@': 13}), 104: (1, {'@': 13}), 1: (1, {'@': 13}), 105: (1, {'@': 13}), 106: (1, {'@': 13}), 107: (1, {'@': 13}), 108: (1, {'@': 13}), 109: (1, {'@': 13}), 110: (1, {'@': 13}), 111: (1, {'@': 13}), 112: (1, {'@': 13}), 113: (1, {'@': 13}), 114: (1, {'@': 13}), 115: (1, {'@': 13}), 116: (1, {'@': 13}), 117: (1, {'@': 13}), 118: (1, {'@': 13}), 119: (1, {'@': 13}), 120: (1, {'@': 13}), 121: (1, {'@': 13}), 122: (1, {'@': 13}), 123: (1, {'@': 13}), 124: (1, {'@': 13}), 125: (1, {'@': 13}), 126: (1, {'@': 13}), 127: (1, {'@': 13}), 128: (1, {'@': 13}), 22: (1, {'@': 13}), 129: (1, {'@': 13})}, 423: {0: (1, {'@': 182}), 1: (1, {'@': 182})}, 424: {11: (0, 169), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 117), 15: (0, 444), 16: (0, 557), 26: (0, 138), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 140), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 27: (0, 243), 28: (0, 266)}, 425: {0: (1, {'@': 225}), 1: (1, {'@': 225})}, 426: {138: (1, {'@': 268}), 0: (1, {'@': 268}), 1: (1, {'@': 268})}, 427: {0: (1, {'@': 240}), 1: (1, {'@': 240})}, 428: {0: (1, {'@': 71}), 1: (1, {'@': 71})}, 429: {0: (1, {'@': 250}), 1: (1, {'@': 250})}, 430: {0: (1, {'@': 34}), 1: (1, {'@': 34})}, 431: {11: (0, 521), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 26: (0, 12), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 27: (0, 243), 28: (0, 266)}, 432: {138: (1, {'@': 270}), 0: (1, {'@': 270}), 1: (1, {'@': 270}), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 433: {0: (1, {'@': 106}), 1: (1, {'@': 106})}, 434: {0: (1, {'@': 73}), 1: (1, {'@': 73})}, 435: {0: (1, {'@': 17}), 1: (1, {'@': 17})}, 436: {0: (1, {'@': 108}), 1: (1, {'@': 108})}, 437: {47: (0, 481), 68: (0, 380), 33: (0, 472), 67: (0, 582), 73: (0, 580), 54: (0, 546), 91: (0, 600), 51: (0, 548), 139: (0, 288), 63: (0, 247), 126: (0, 264), 90: (0, 269), 105: (0, 394), 72: (0, 459), 129: (0, 253), 116: (0, 581), 99: (0, 293), 88: (0, 562), 52: (0, 361), 22: (0, 375), 89: (0, 405), 69: (0, 568), 109: (0, 579), 49: (0, 597), 79: (0, 553), 37: (0, 551), 124: (0, 544), 103: (0, 484), 141: (0, 354), 121: (0, 333), 35: (0, 507), 106: (0, 587), 41: (0, 561), 107: (0, 594), 38: (0, 603), 117: (0, 555), 87: (0, 376), 143: (0, 431), 45: (0, 465), 96: (0, 425), 30: (0, 421), 39: (0, 454), 94: (0, 469), 77: (0, 517), 59: (0, 1), 115: (0, 52), 118: (0, 63), 70: (0, 54), 112: (0, 38), 62: (0, 42), 82: (0, 46), 34: (0, 26), 140: (0, 445), 55: (0, 31), 65: (0, 40), 42: (0, 27), 101: (0, 32), 76: (0, 33), 44: (0, 28), 40: (0, 15), 120: (0, 4), 83: (0, 8), 57: (0, 23), 46: (0, 2), 95: (0, 19), 110: (0, 20), 84: (0, 9), 98: (0, 6), 86: (0, 11), 66: (0, 61), 27: (0, 73), 127: (0, 55), 71: (0, 57), 123: (0, 59), 119: (0, 60), 74: (0, 67), 113: (0, 68), 61: (0, 70), 43: (0, 77), 111: (0, 78), 114: (0, 0), 102: (0, 50), 75: (0, 39), 81: (0, 45), 100: (0, 44), 122: (0, 47), 29: (0, 25), 32: (0, 34), 125: (0, 3), 97: (0, 14), 48: (0, 7), 31: (0, 18), 53: (0, 21), 56: (0, 22), 85: (0, 24), 58: (0, 315), 128: (0, 342), 80: (0, 504), 60: (0, 275), 93: (0, 362), 104: (0, 347), 0: (0, 422), 78: (0, 377), 92: (0, 408), 108: (0, 246)}, 438: {0: (1, {'@': 7}), 50: (1, {'@': 7})}, 439: {4: (0, 244)}, 440: {0: (1, {'@': 72}), 1: (1, {'@': 72})}, 441: {151: (0, 241)}, 442: {163: (0, 237)}, 443: {0: (1, {'@': 74}), 1: (1, {'@': 74})}, 444: {53: (0, 314), 132: (0, 230), 131: (0, 215)}, 445: {0: (1, {'@': 18}), 1: (1, {'@': 18})}, 446: {11: (0, 145), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 26: (0, 158), 27: (0, 243), 28: (0, 266)}, 447: {11: (0, 453), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 26: (0, 485), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 3: (0, 488), 27: (0, 243), 28: (0, 266)}, 448: {138: (0, 105)}, 449: {0: (1, {'@': 154}), 1: (1, {'@': 154})}, 450: {0: (1, {'@': 99}), 1: (1, {'@': 99})}, 451: {29: (1, {'@': 12}), 30: (1, {'@': 12}), 31: (1, {'@': 12}), 32: (1, {'@': 12}), 33: (1, {'@': 12}), 34: (1, {'@': 12}), 35: (1, {'@': 12}), 36: (1, {'@': 12}), 37: (1, {'@': 12}), 38: (1, {'@': 12}), 39: (1, {'@': 12}), 40: (1, {'@': 12}), 41: (1, {'@': 12}), 42: (1, {'@': 12}), 43: (1, {'@': 12}), 44: (1, {'@': 12}), 45: (1, {'@': 12}), 46: (1, {'@': 12}), 47: (1, {'@': 12}), 48: (1, {'@': 12}), 49: (1, {'@': 12}), 50: (1, {'@': 12}), 51: (1, {'@': 12}), 52: (1, {'@': 12}), 0: (1, {'@': 12}), 53: (1, {'@': 12}), 54: (1, {'@': 12}), 55: (1, {'@': 12}), 56: (1, {'@': 12}), 57: (1, {'@': 12}), 58: (1, {'@': 12}), 59: (1, {'@': 12}), 60: (1, {'@': 12}), 61: (1, {'@': 12}), 62: (1, {'@': 12}), 63: (1, {'@': 12}), 27: (1, {'@': 12}), 64: (1, {'@': 12}), 65: (1, {'@': 12}), 66: (1, {'@': 12}), 67: (1, {'@': 12}), 68: (1, {'@': 12}), 69: (1, {'@': 12}), 70: (1, {'@': 12}), 71: (1, {'@': 12}), 72: (1, {'@': 12}), 73: (1, {'@': 12}), 74: (1, {'@': 12}), 75: (1, {'@': 12}), 76: (1, {'@': 12}), 77: (1, {'@': 12}), 78: (1, {'@': 12}), 79: (1, {'@': 12}), 80: (1, {'@': 12}), 81: (1, {'@': 12}), 82: (1, {'@': 12}), 83: (1, {'@': 12}), 84: (1, {'@': 12}), 85: (1, {'@': 12}), 86: (1, {'@': 12}), 87: (1, {'@': 12}), 88: (1, {'@': 12}), 89: (1, {'@': 12}), 90: (1, {'@': 12}), 91: (1, {'@': 12}), 92: (1, {'@': 12}), 93: (1, {'@': 12}), 94: (1, {'@': 12}), 95: (1, {'@': 12}), 96: (1, {'@': 12}), 97: (1, {'@': 12}), 98: (1, {'@': 12}), 99: (1, {'@': 12}), 100: (1, {'@': 12}), 101: (1, {'@': 12}), 102: (1, {'@': 12}), 103: (1, {'@': 12}), 104: (1, {'@': 12}), 1: (1, {'@': 12}), 105: (1, {'@': 12}), 106: (1, {'@': 12}), 107: (1, {'@': 12}), 108: (1, {'@': 12}), 109: (1, {'@': 12}), 110: (1, {'@': 12}), 111: (1, {'@': 12}), 112: (1, {'@': 12}), 113: (1, {'@': 12}), 114: (1, {'@': 12}), 115: (1, {'@': 12}), 116: (1, {'@': 12}), 117: (1, {'@': 12}), 118: (1, {'@': 12}), 119: (1, {'@': 12}), 120: (1, {'@': 12}), 121: (1, {'@': 12}), 122: (1, {'@': 12}), 123: (1, {'@': 12}), 124: (1, {'@': 12}), 125: (1, {'@': 12}), 126: (1, {'@': 12}), 127: (1, {'@': 12}), 128: (1, {'@': 12}), 22: (1, {'@': 12}), 129: (1, {'@': 12})}, 452: {11: (0, 188), 12: (0, 486), 3: (0, 189), 8: (0, 51), 13: (0, 461), 160: (0, 160), 14: (0, 297), 15: (0, 444), 16: (0, 557), 170: (0, 192), 159: (0, 29), 2: (0, 501), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 5: (0, 219), 22: (0, 339), 23: (0, 403), 24: (0, 542), 167: (0, 194), 26: (0, 196), 25: (0, 570), 6: (0, 254), 157: (0, 211), 4: (0, 157), 168: (0, 197), 7: (0, 147), 169: (0, 199), 10: (0, 398), 27: (0, 243), 158: (0, 306), 9: (0, 144), 171: (0, 496), 28: (0, 266)}, 453: {0: (1, {'@': 254}), 1: (1, {'@': 254}), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 454: {2: (1, {'@': 303}), 3: (1, {'@': 303}), 4: (1, {'@': 303}), 5: (1, {'@': 303}), 6: (1, {'@': 303}), 7: (1, {'@': 303}), 8: (1, {'@': 303}), 9: (1, {'@': 303}), 10: (1, {'@': 303})}, 455: {11: (0, 13), 154: (0, 56), 13: (0, 461), 8: (0, 446), 12: (0, 486), 14: (0, 297), 26: (0, 80), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 150: (0, 585), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 174: (0, 81), 2: (0, 82), 153: (0, 325), 155: (0, 84), 27: (0, 243), 28: (0, 266)}, 456: {0: (1, {'@': 107}), 1: (1, {'@': 107})}, 457: {0: (1, {'@': 128}), 1: (1, {'@': 128})}, 458: {0: (1, {'@': 122}), 1: (1, {'@': 122}), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 459: {11: (0, 554), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 26: (0, 599), 27: (0, 243), 28: (0, 266)}, 460: {0: (0, 451), 1: (0, 437)}, 461: {131: (1, {'@': 364}), 133: (1, {'@': 364}), 14: (1, {'@': 364}), 0: (1, {'@': 364}), 134: (1, {'@': 364}), 1: (1, {'@': 364}), 53: (1, {'@': 364}), 135: (1, {'@': 364}), 21: (1, {'@': 364}), 136: (1, {'@': 364}), 137: (1, {'@': 364}), 132: (1, {'@': 364}), 163: (1, {'@': 364}), 138: (1, {'@': 364}), 164: (1, {'@': 364}), 165: (1, {'@': 364})}, 462: {0: (1, {'@': 100}), 1: (1, {'@': 100})}, 463: {138: (0, 510)}, 464: {0: (1, {'@': 126}), 1: (1, {'@': 126})}, 465: {11: (0, 10), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 152: (0, 348), 15: (0, 444), 16: (0, 557), 17: (0, 604), 150: (0, 585), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 83: (0, 37), 155: (0, 206), 23: (0, 403), 22: (0, 339), 26: (0, 83), 24: (0, 542), 149: (0, 187), 25: (0, 570), 151: (0, 48), 156: (0, 35), 153: (0, 325), 154: (0, 166), 27: (0, 243), 28: (0, 266)}, 466: {2: (0, 304), 8: (0, 133)}, 467: {11: (0, 159), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 26: (0, 161), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 27: (0, 243), 28: (0, 266)}, 468: {0: (1, {'@': 70}), 1: (1, {'@': 70})}, 469: {11: (0, 208), 12: (0, 486), 13: (0, 461), 8: (0, 446), 26: (0, 87), 14: (0, 297), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 27: (0, 243), 28: (0, 266)}, 470: {163: (0, 176)}, 471: {0: (1, {'@': 255}), 1: (1, {'@': 255}), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 472: {155: (0, 328), 3: (0, 370), 152: (0, 567), 149: (0, 257), 154: (0, 606), 150: (0, 585), 153: (0, 325)}, 473: {0: (1, {'@': 313}), 1: (1, {'@': 313})}, 474: {0: (1, {'@': 244}), 1: (1, {'@': 244})}, 475: {29: (1, {'@': 8}), 31: (1, {'@': 8}), 34: (1, {'@': 8}), 42: (1, {'@': 8}), 44: (1, {'@': 8}), 45: (1, {'@': 8}), 46: (1, {'@': 8}), 48: (1, {'@': 8}), 52: (1, {'@': 8}), 56: (1, {'@': 8}), 60: (1, {'@': 8}), 62: (1, {'@': 8}), 67: (1, {'@': 8}), 68: (1, {'@': 8}), 69: (1, {'@': 8}), 71: (1, {'@': 8}), 72: (1, {'@': 8}), 77: (1, {'@': 8}), 82: (1, {'@': 8}), 83: (1, {'@': 8}), 85: (1, {'@': 8}), 87: (1, {'@': 8}), 88: (1, {'@': 8}), 89: (1, {'@': 8}), 90: (1, {'@': 8}), 94: (1, {'@': 8}), 97: (1, {'@': 8}), 99: (1, {'@': 8}), 101: (1, {'@': 8}), 1: (1, {'@': 8}), 106: (1, {'@': 8}), 107: (1, {'@': 8}), 108: (1, {'@': 8}), 115: (1, {'@': 8}), 117: (1, {'@': 8}), 120: (1, {'@': 8}), 127: (1, {'@': 8}), 128: (1, {'@': 8}), 22: (1, {'@': 8}), 30: (1, {'@': 8}), 32: (1, {'@': 8}), 33: (1, {'@': 8}), 35: (1, {'@': 8}), 36: (1, {'@': 8}), 37: (1, {'@': 8}), 38: (1, {'@': 8}), 39: (1, {'@': 8}), 40: (1, {'@': 8}), 41: (1, {'@': 8}), 43: (1, {'@': 8}), 47: (1, {'@': 8}), 49: (1, {'@': 8}), 50: (1, {'@': 8}), 51: (1, {'@': 8}), 0: (1, {'@': 8}), 53: (1, {'@': 8}), 54: (1, {'@': 8}), 55: (1, {'@': 8}), 57: (1, {'@': 8}), 58: (1, {'@': 8}), 59: (1, {'@': 8}), 61: (1, {'@': 8}), 63: (1, {'@': 8}), 27: (1, {'@': 8}), 64: (1, {'@': 8}), 65: (1, {'@': 8}), 66: (1, {'@': 8}), 70: (1, {'@': 8}), 73: (1, {'@': 8}), 74: (1, {'@': 8}), 75: (1, {'@': 8}), 76: (1, {'@': 8}), 78: (1, {'@': 8}), 79: (1, {'@': 8}), 80: (1, {'@': 8}), 81: (1, {'@': 8}), 84: (1, {'@': 8}), 86: (1, {'@': 8}), 91: (1, {'@': 8}), 92: (1, {'@': 8}), 93: (1, {'@': 8}), 95: (1, {'@': 8}), 96: (1, {'@': 8}), 98: (1, {'@': 8}), 100: (1, {'@': 8}), 102: (1, {'@': 8}), 103: (1, {'@': 8}), 104: (1, {'@': 8}), 105: (1, {'@': 8}), 109: (1, {'@': 8}), 110: (1, {'@': 8}), 111: (1, {'@': 8}), 112: (1, {'@': 8}), 113: (1, {'@': 8}), 114: (1, {'@': 8}), 116: (1, {'@': 8}), 118: (1, {'@': 8}), 119: (1, {'@': 8}), 121: (1, {'@': 8}), 122: (1, {'@': 8}), 123: (1, {'@': 8}), 124: (1, {'@': 8}), 125: (1, {'@': 8}), 126: (1, {'@': 8}), 129: (1, {'@': 8})}, 476: {0: (1, {'@': 312}), 1: (1, {'@': 312})}, 477: {0: (1, {'@': 242}), 1: (1, {'@': 242})}, 478: {0: (1, {'@': 252}), 1: (1, {'@': 252})}, 479: {0: (1, {'@': 76}), 1: (1, {'@': 76})}, 480: {0: (1, {'@': 98}), 1: (1, {'@': 98})}, 481: {0: (1, {'@': 202}), 1: (1, {'@': 202})}, 482: {138: (0, 387)}, 483: {0: (1, {'@': 121}), 1: (1, {'@': 121})}, 484: {181: (0, 584), 22: (0, 502)}, 485: {0: (1, {'@': 251}), 1: (1, {'@': 251})}, 486: {130: (0, 222)}, 487: {138: (0, 277)}, 488: {0: (1, {'@': 241}), 1: (1, {'@': 241})}, 489: {0: (1, {'@': 111}), 1: (1, {'@': 111})}, 490: {0: (1, {'@': 129}), 1: (1, {'@': 129})}, 491: {163: (0, 43)}, 492: {0: (1, {'@': 131}), 1: (1, {'@': 131})}, 493: {0: (1, {'@': 124}), 1: (1, {'@': 124}), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 494: {0: (1, {'@': 110}), 1: (1, {'@': 110})}, 495: {0: (1, {'@': 113}), 1: (1, {'@': 113})}, 496: {0: (1, {'@': 316}), 1: (1, {'@': 316}), 138: (1, {'@': 316})}, 497: {0: (1, {'@': 175}), 1: (1, {'@': 175}), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 498: {0: (1, {'@': 80}), 1: (1, {'@': 80}), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 499: {11: (0, 201), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 26: (0, 202), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 161: (0, 204), 25: (0, 570), 27: (0, 243), 28: (0, 266)}, 500: {0: (1, {'@': 134}), 1: (1, {'@': 134}), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 501: {150: (0, 384), 153: (0, 424), 155: (0, 420)}, 502: {138: (1, {'@': 266}), 0: (1, {'@': 266}), 1: (1, {'@': 266})}, 503: {11: (0, 518), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 26: (0, 543), 16: (0, 557), 17: (0, 604), 18: (0, 531), 0: (0, 416), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 27: (0, 243), 28: (0, 266)}, 504: {0: (1, {'@': 222}), 1: (1, {'@': 222})}, 505: {0: (1, {'@': 105}), 1: (1, {'@': 105})}, 506: {0: (1, {'@': 67}), 1: (1, {'@': 67}), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 507: {9: (1, {'@': 294}), 4: (1, {'@': 294}), 16: (1, {'@': 294}), 157: (1, {'@': 294}), 158: (1, {'@': 294}), 18: (1, {'@': 294}), 8: (1, {'@': 294}), 159: (1, {'@': 294}), 14: (1, {'@': 294}), 5: (1, {'@': 294}), 7: (1, {'@': 294}), 10: (1, {'@': 294}), 27: (1, {'@': 294}), 2: (1, {'@': 294}), 160: (1, {'@': 294}), 3: (1, {'@': 294}), 6: (1, {'@': 294}), 21: (1, {'@': 294}), 22: (1, {'@': 294})}, 508: {0: (1, {'@': 21}), 1: (1, {'@': 21})}, 509: {0: (1, {'@': 176}), 1: (1, {'@': 176}), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 510: {11: (0, 392), 12: (0, 486), 13: (0, 461), 8: (0, 91), 169: (0, 94), 182: (0, 95), 160: (0, 160), 14: (0, 297), 26: (0, 97), 15: (0, 444), 16: (0, 557), 159: (0, 29), 170: (0, 98), 2: (0, 100), 17: (0, 604), 3: (0, 101), 183: (0, 103), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 5: (0, 219), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 6: (0, 254), 157: (0, 211), 167: (0, 104), 4: (0, 157), 7: (0, 147), 168: (0, 106), 10: (0, 398), 174: (0, 107), 27: (0, 243), 158: (0, 306), 9: (0, 144), 171: (0, 496), 28: (0, 266)}, 511: {138: (0, 120)}, 512: {0: (1, {'@': 132}), 1: (1, {'@': 132})}, 513: {0: (1, {'@': 127}), 1: (1, {'@': 127})}, 514: {18: (0, 531), 8: (0, 446), 14: (0, 297), 20: (0, 74), 11: (0, 268), 21: (0, 547), 27: (0, 243), 16: (0, 557), 22: (0, 339), 28: (0, 266)}, 515: {138: (0, 278)}, 516: {0: (1, {'@': 28}), 1: (1, {'@': 28})}, 517: {0: (1, {'@': 212}), 1: (1, {'@': 212})}, 518: {0: (0, 438), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 519: {0: (1, {'@': 123}), 1: (1, {'@': 123})}, 520: {0: (1, {'@': 102}), 1: (1, {'@': 102})}, 521: {138: (0, 414), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 522: {0: (1, {'@': 104}), 1: (1, {'@': 104})}, 523: {11: (0, 169), 26: (0, 586), 13: (0, 461), 8: (0, 446), 12: (0, 486), 160: (0, 160), 14: (0, 297), 15: (0, 444), 16: (0, 557), 159: (0, 29), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 171: (0, 86), 24: (0, 542), 25: (0, 570), 6: (0, 254), 157: (0, 211), 4: (0, 157), 169: (0, 88), 10: (0, 398), 27: (0, 243), 158: (0, 306), 3: (0, 89), 9: (0, 144), 28: (0, 266)}, 524: {0: (1, {'@': 103}), 1: (1, {'@': 103})}, 525: {138: (0, 217), 0: (1, {'@': 52}), 1: (1, {'@': 52})}, 526: {166: (0, 172), 149: (0, 174), 152: (0, 177), 155: (0, 179)}, 527: {131: (1, {'@': 367}), 133: (1, {'@': 367}), 14: (1, {'@': 367}), 0: (1, {'@': 367}), 134: (1, {'@': 367}), 1: (1, {'@': 367}), 53: (1, {'@': 367}), 135: (1, {'@': 367}), 21: (1, {'@': 367}), 130: (1, {'@': 367}), 136: (1, {'@': 367}), 137: (1, {'@': 367}), 132: (1, {'@': 367}), 163: (1, {'@': 367}), 138: (1, {'@': 367}), 164: (1, {'@': 367}), 165: (1, {'@': 367})}, 528: {9: (0, 252)}, 529: {18: (0, 531), 8: (0, 446), 14: (0, 297), 11: (0, 259), 20: (0, 74), 21: (0, 547), 27: (0, 243), 16: (0, 557), 22: (0, 339), 28: (0, 266)}, 530: {0: (0, 155)}, 531: {11: (0, 169), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 27: (0, 243), 26: (0, 113), 28: (0, 266)}, 532: {0: (1, {'@': 56}), 1: (1, {'@': 56})}, 533: {0: (1, {'@': 23}), 1: (1, {'@': 23})}, 534: {0: (1, {'@': 58}), 1: (1, {'@': 58})}, 535: {0: (1, {'@': 27}), 1: (1, {'@': 27})}, 536: {0: (1, {'@': 37}), 1: (1, {'@': 37})}, 537: {0: (1, {'@': 79}), 1: (1, {'@': 79})}, 538: {11: (0, 220), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 16: (0, 557), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 26: (0, 223), 27: (0, 243), 28: (0, 266)}, 539: {0: (1, {'@': 32}), 1: (1, {'@': 32})}, 540: {0: (0, 550), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 541: {138: (1, {'@': 275}), 0: (1, {'@': 275}), 1: (1, {'@': 275}), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 542: {21: (0, 559), 14: (0, 242)}, 543: {0: (0, 411)}, 544: {184: (0, 90), 185: (0, 152), 186: (0, 92), 175: (0, 85), 187: (0, 295), 188: (0, 58), 10: (0, 148), 177: (0, 71), 176: (0, 93), 178: (0, 66), 0: (1, {'@': 218}), 1: (1, {'@': 218})}, 545: {0: (1, {'@': 89}), 1: (1, {'@': 89})}, 546: {9: (1, {'@': 292}), 4: (1, {'@': 292}), 16: (1, {'@': 292}), 157: (1, {'@': 292}), 158: (1, {'@': 292}), 18: (1, {'@': 292}), 8: (1, {'@': 292}), 159: (1, {'@': 292}), 14: (1, {'@': 292}), 5: (1, {'@': 292}), 7: (1, {'@': 292}), 10: (1, {'@': 292}), 27: (1, {'@': 292}), 2: (1, {'@': 292}), 160: (1, {'@': 292}), 3: (1, {'@': 292}), 6: (1, {'@': 292}), 21: (1, {'@': 292}), 22: (1, {'@': 292})}, 547: {18: (0, 531), 8: (0, 446), 14: (0, 297), 20: (0, 527), 21: (0, 547), 27: (0, 243), 11: (0, 122), 16: (0, 557), 22: (0, 339), 28: (0, 266)}, 548: {11: (0, 366), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 16: (0, 557), 17: (0, 604), 26: (0, 320), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 27: (0, 243), 28: (0, 266)}, 549: {0: (1, {'@': 308}), 1: (1, {'@': 308})}, 550: {29: (1, {'@': 11}), 30: (1, {'@': 11}), 31: (1, {'@': 11}), 32: (1, {'@': 11}), 33: (1, {'@': 11}), 34: (1, {'@': 11}), 35: (1, {'@': 11}), 36: (1, {'@': 11}), 37: (1, {'@': 11}), 38: (1, {'@': 11}), 39: (1, {'@': 11}), 40: (1, {'@': 11}), 41: (1, {'@': 11}), 42: (1, {'@': 11}), 43: (1, {'@': 11}), 44: (1, {'@': 11}), 45: (1, {'@': 11}), 46: (1, {'@': 11}), 47: (1, {'@': 11}), 48: (1, {'@': 11}), 49: (1, {'@': 11}), 50: (1, {'@': 11}), 51: (1, {'@': 11}), 52: (1, {'@': 11}), 0: (1, {'@': 11}), 53: (1, {'@': 11}), 54: (1, {'@': 11}), 55: (1, {'@': 11}), 56: (1, {'@': 11}), 57: (1, {'@': 11}), 58: (1, {'@': 11}), 59: (1, {'@': 11}), 60: (1, {'@': 11}), 61: (1, {'@': 11}), 62: (1, {'@': 11}), 63: (1, {'@': 11}), 27: (1, {'@': 11}), 64: (1, {'@': 11}), 65: (1, {'@': 11}), 66: (1, {'@': 11}), 67: (1, {'@': 11}), 68: (1, {'@': 11}), 69: (1, {'@': 11}), 70: (1, {'@': 11}), 71: (1, {'@': 11}), 72: (1, {'@': 11}), 73: (1, {'@': 11}), 74: (1, {'@': 11}), 75: (1, {'@': 11}), 76: (1, {'@': 11}), 77: (1, {'@': 11}), 78: (1, {'@': 11}), 79: (1, {'@': 11}), 80: (1, {'@': 11}), 81: (1, {'@': 11}), 82: (1, {'@': 11}), 83: (1, {'@': 11}), 84: (1, {'@': 11}), 85: (1, {'@': 11}), 86: (1, {'@': 11}), 87: (1, {'@': 11}), 88: (1, {'@': 11}), 89: (1, {'@': 11}), 90: (1, {'@': 11}), 91: (1, {'@': 11}), 92: (1, {'@': 11}), 93: (1, {'@': 11}), 94: (1, {'@': 11}), 95: (1, {'@': 11}), 96: (1, {'@': 11}), 97: (1, {'@': 11}), 98: (1, {'@': 11}), 99: (1, {'@': 11}), 100: (1, {'@': 11}), 101: (1, {'@': 11}), 102: (1, {'@': 11}), 103: (1, {'@': 11}), 104: (1, {'@': 11}), 1: (1, {'@': 11}), 105: (1, {'@': 11}), 106: (1, {'@': 11}), 107: (1, {'@': 11}), 108: (1, {'@': 11}), 109: (1, {'@': 11}), 110: (1, {'@': 11}), 111: (1, {'@': 11}), 112: (1, {'@': 11}), 113: (1, {'@': 11}), 114: (1, {'@': 11}), 115: (1, {'@': 11}), 116: (1, {'@': 11}), 117: (1, {'@': 11}), 118: (1, {'@': 11}), 119: (1, {'@': 11}), 120: (1, {'@': 11}), 121: (1, {'@': 11}), 122: (1, {'@': 11}), 123: (1, {'@': 11}), 124: (1, {'@': 11}), 125: (1, {'@': 11}), 126: (1, {'@': 11}), 127: (1, {'@': 11}), 128: (1, {'@': 11}), 22: (1, {'@': 11}), 129: (1, {'@': 11})}, 551: {0: (1, {'@': 210}), 1: (1, {'@': 210})}, 552: {163: (0, 156)}, 553: {0: (1, {'@': 192}), 1: (1, {'@': 192})}, 554: {0: (1, {'@': 257}), 1: (1, {'@': 257}), 130: (1, {'@': 348}), 131: (1, {'@': 346}), 53: (1, {'@': 346}), 132: (1, {'@': 346}), 133: (1, {'@': 342}), 134: (1, {'@': 342}), 135: (1, {'@': 342}), 136: (1, {'@': 342}), 137: (1, {'@': 342}), 14: (1, {'@': 344}), 21: (1, {'@': 344})}, 555: {11: (0, 509), 12: (0, 486), 13: (0, 461), 8: (0, 446), 185: (0, 152), 14: (0, 297), 175: (0, 85), 15: (0, 444), 10: (0, 148), 16: (0, 557), 17: (0, 604), 187: (0, 583), 18: (0, 531), 26: (0, 563), 19: (0, 598), 20: (0, 571), 21: (0, 547), 176: (0, 93), 23: (0, 403), 22: (0, 339), 24: (0, 542), 25: (0, 570), 186: (0, 92), 184: (0, 90), 27: (0, 243), 188: (0, 58), 177: (0, 71), 178: (0, 66), 28: (0, 266)}, 556: {166: (0, 410)}, 557: {131: (1, {'@': 377}), 133: (1, {'@': 377}), 14: (1, {'@': 377}), 0: (1, {'@': 377}), 134: (1, {'@': 377}), 1: (1, {'@': 377}), 53: (1, {'@': 377}), 135: (1, {'@': 377}), 21: (1, {'@': 377}), 130: (1, {'@': 377}), 136: (1, {'@': 377}), 137: (1, {'@': 377}), 132: (1, {'@': 377}), 163: (1, {'@': 377}), 138: (1, {'@': 377}), 164: (1, {'@': 377}), 165: (1, {'@': 377})}, 558: {18: (0, 531), 8: (0, 446), 14: (0, 297), 20: (0, 527), 21: (0, 547), 27: (0, 243), 11: (0, 255), 16: (0, 557), 22: (0, 339), 28: (0, 266)}, 559: {12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 357), 16: (0, 557), 18: (0, 531), 19: (0, 335), 20: (0, 571), 21: (0, 547), 22: (0, 339), 11: (0, 319), 27: (0, 243), 28: (0, 266)}, 560: {149: (0, 187), 150: (0, 585), 166: (0, 338), 152: (0, 348), 153: (0, 325), 154: (0, 166), 156: (0, 308), 155: (0, 206), 3: (0, 393)}, 561: {0: (1, {'@': 203}), 1: (1, {'@': 203})}, 562: {0: (1, {'@': 216}), 1: (1, {'@': 216})}, 563: {0: (1, {'@': 172}), 1: (1, {'@': 172})}, 564: {166: (0, 442)}, 565: {3: (0, 127)}, 566: {0: (1, {'@': 75}), 1: (1, {'@': 75})}, 567: {138: (0, 447)}, 568: {168: (0, 276), 160: (0, 160), 152: (0, 348), 8: (0, 302), 170: (0, 596), 166: (0, 549), 2: (0, 501), 159: (0, 29), 150: (0, 585), 167: (0, 344), 5: (0, 219), 3: (0, 476), 155: (0, 206), 149: (0, 187), 6: (0, 254), 157: (0, 211), 189: (0, 479), 4: (0, 157), 7: (0, 147), 169: (0, 473), 153: (0, 325), 10: (0, 398), 154: (0, 166), 156: (0, 602), 158: (0, 306), 9: (0, 144), 171: (0, 496)}, 569: {0: (1, {'@': 151}), 1: (1, {'@': 151})}, 570: {133: (1, {'@': 357}), 0: (1, {'@': 357}), 134: (1, {'@': 357}), 135: (1, {'@': 357}), 1: (1, {'@': 357}), 136: (1, {'@': 357}), 137: (1, {'@': 357}), 14: (1, {'@': 343}), 21: (1, {'@': 343}), 163: (1, {'@': 357}), 138: (1, {'@': 357}), 164: (1, {'@': 357}), 165: (1, {'@': 357})}, 571: {130: (1, {'@': 347}), 131: (1, {'@': 366}), 133: (1, {'@': 366}), 14: (1, {'@': 366}), 0: (1, {'@': 366}), 134: (1, {'@': 366}), 1: (1, {'@': 366}), 53: (1, {'@': 366}), 135: (1, {'@': 366}), 21: (1, {'@': 366}), 136: (1, {'@': 366}), 137: (1, {'@': 366}), 132: (1, {'@': 366}), 163: (1, {'@': 366}), 138: (1, {'@': 366}), 164: (1, {'@': 366}), 165: (1, {'@': 366})}, 572: {0: (1, {'@': 62}), 1: (1, {'@': 62})}, 573: {164: (0, 545)}, 574: {138: (0, 499), 0: (1, {'@': 51}), 1: (1, {'@': 51})}, 575: {138: (0, 258)}, 576: {0: (1, {'@': 279}), 1: (1, {'@': 279}), 138: (1, {'@': 279})}, 577: {138: (0, 248)}, 578: {138: (0, 538)}, 579: {0: (1, {'@': 196}), 1: (1, {'@': 196})}, 580: {167: (0, 511), 152: (0, 348), 8: (0, 331), 170: (0, 285), 166: (0, 409), 6: (0, 254), 169: (0, 355), 3: (0, 463), 10: (0, 398), 158: (0, 306), 171: (0, 496), 174: (0, 282), 156: (0, 108), 159: (0, 29), 2: (0, 121), 183: (0, 141), 182: (0, 136), 7: (0, 147), 154: (0, 166), 160: (0, 160), 150: (0, 585), 157: (0, 211), 11: (0, 112), 168: (0, 207), 153: (0, 325), 5: (0, 219), 155: (0, 206), 149: (0, 187), 4: (0, 157), 9: (0, 144)}, 581: {0: (1, {'@': 226}), 1: (1, {'@': 226})}, 582: {3: (0, 448), 155: (0, 313)}, 583: {138: (0, 251)}, 584: {138: (0, 150), 0: (1, {'@': 50}), 1: (1, {'@': 50})}, 585: {0: (1, {'@': 330}), 1: (1, {'@': 330}), 164: (1, {'@': 330}), 163: (1, {'@': 330}), 138: (1, {'@': 330})}, 586: {0: (1, {'@': 85}), 1: (1, {'@': 85})}, 587: {160: (0, 160), 152: (0, 348), 8: (0, 302), 170: (0, 596), 166: (0, 549), 189: (0, 566), 2: (0, 501), 159: (0, 29), 150: (0, 585), 168: (0, 413), 167: (0, 344), 5: (0, 219), 3: (0, 476), 155: (0, 206), 149: (0, 187), 6: (0, 254), 157: (0, 211), 4: (0, 157), 7: (0, 147), 169: (0, 473), 153: (0, 325), 10: (0, 398), 154: (0, 166), 156: (0, 602), 158: (0, 306), 9: (0, 144), 171: (0, 496)}, 588: {0: (1, {'@': 171}), 1: (1, {'@': 171})}, 589: {138: (1, {'@': 269}), 0: (1, {'@': 269}), 1: (1, {'@': 269})}, 590: {0: (1, {'@': 152}), 1: (1, {'@': 152})}, 591: {11: (0, 458), 12: (0, 486), 13: (0, 461), 8: (0, 51), 14: (0, 297), 160: (0, 160), 15: (0, 444), 16: (0, 557), 159: (0, 29), 2: (0, 501), 17: (0, 604), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 170: (0, 406), 3: (0, 462), 168: (0, 464), 5: (0, 219), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 169: (0, 450), 6: (0, 254), 157: (0, 211), 4: (0, 157), 7: (0, 147), 167: (0, 480), 10: (0, 398), 27: (0, 243), 26: (0, 483), 158: (0, 306), 9: (0, 144), 171: (0, 496), 28: (0, 266)}, 592: {0: (1, {'@': 22}), 1: (1, {'@': 22})}, 593: {0: (1, {'@': 153}), 1: (1, {'@': 153})}, 594: {152: (0, 487)}, 595: {138: (1, {'@': 274}), 0: (1, {'@': 274}), 1: (1, {'@': 274})}, 596: {0: (1, {'@': 311}), 1: (1, {'@': 311})}, 597: {3: (0, 575), 167: (0, 601), 6: (0, 254), 10: (0, 398), 5: (0, 219), 4: (0, 157), 9: (0, 144), 171: (0, 496), 7: (0, 147)}, 598: {131: (1, {'@': 345}), 53: (1, {'@': 345}), 132: (1, {'@': 345}), 133: (1, {'@': 360}), 14: (1, {'@': 360}), 0: (1, {'@': 360}), 134: (1, {'@': 360}), 1: (1, {'@': 360}), 135: (1, {'@': 360}), 21: (1, {'@': 360}), 136: (1, {'@': 360}), 137: (1, {'@': 360}), 163: (1, {'@': 360}), 138: (1, {'@': 360}), 164: (1, {'@': 360}), 165: (1, {'@': 360})}, 599: {0: (1, {'@': 256}), 1: (1, {'@': 256})}, 600: {11: (0, 36), 8: (0, 225), 13: (0, 461), 185: (0, 152), 12: (0, 486), 14: (0, 297), 175: (0, 85), 15: (0, 444), 10: (0, 148), 16: (0, 557), 17: (0, 604), 2: (0, 128), 18: (0, 531), 19: (0, 598), 187: (0, 102), 20: (0, 571), 21: (0, 547), 28: (0, 266), 176: (0, 93), 23: (0, 403), 22: (0, 339), 24: (0, 542), 25: (0, 570), 186: (0, 92), 184: (0, 90), 170: (0, 79), 27: (0, 243), 188: (0, 58), 177: (0, 71), 178: (0, 66), 26: (0, 64)}, 601: {138: (0, 466)}, 602: {0: (1, {'@': 310}), 1: (1, {'@': 310})}, 603: {11: (0, 506), 12: (0, 486), 13: (0, 461), 8: (0, 446), 14: (0, 297), 15: (0, 444), 16: (0, 557), 17: (0, 604), 26: (0, 607), 18: (0, 531), 19: (0, 598), 20: (0, 571), 21: (0, 547), 22: (0, 339), 23: (0, 403), 24: (0, 542), 25: (0, 570), 27: (0, 243), 28: (0, 266)}, 604: {133: (0, 336), 137: (0, 129), 136: (0, 146), 134: (0, 126), 135: (0, 116)}, 605: {138: (0, 256)}, 606: {138: (0, 99)}, 607: {0: (1, {'@': 66}), 1: (1, {'@': 66})}}, 'start_states': {'start': 16}, 'end_states': {'start': 76}}, '__type__': 'ParsingFrontend'}, 'rules': [{'@': 0}, {'@': 1}, {'@': 2}, {'@': 3}, {'@': 4}, {'@': 5}, {'@': 6}, {'@': 7}, {'@': 8}, {'@': 9}, {'@': 10}, {'@': 11}, {'@': 12}, {'@': 13}, {'@': 14}, {'@': 15}, {'@': 16}, {'@': 17}, {'@': 18}, {'@': 19}, {'@': 20}, {'@': 21}, {'@': 22}, {'@': 23}, {'@': 24}, {'@': 25}, {'@': 26}, {'@': 27}, {'@': 28}, {'@': 29}, {'@': 30}, {'@': 31}, {'@': 32}, {'@': 33}, {'@': 34}, {'@': 35}, {'@': 36}, {'@': 37}, {'@': 38}, {'@': 39}, {'@': 40}, {'@': 41}, {'@': 42}, {'@': 43}, {'@': 44}, {'@': 45}, {'@': 46}, {'@': 47}, {'@': 48}, {'@': 49}, {'@': 50}, {'@': 51}, {'@': 52}, {'@': 53}, {'@': 54}, {'@': 55}, {'@': 56}, {'@': 57}, {'@': 58}, {'@': 59}, {'@': 60}, {'@': 61}, {'@': 62}, {'@': 63}, {'@': 64}, {'@': 65}, {'@': 66}, {'@': 67}, {'@': 68}, {'@': 69}, {'@': 70}, {'@': 71}, {'@': 72}, {'@': 73}, {'@': 74}, {'@': 75}, {'@': 76}, {'@': 77}, {'@': 78}, {'@': 79}, {'@': 80}, {'@': 81}, {'@': 82}, {'@': 83}, {'@': 84}, {'@': 85}, {'@': 86}, {'@': 87}, {'@': 88}, {'@': 89}, {'@': 90}, {'@': 91}, {'@': 92}, {'@': 93}, {'@': 94}, {'@': 95}, {'@': 96}, {'@': 97}, {'@': 98}, {'@': 99}, {'@': 100}, {'@': 101}, {'@': 102}, {'@': 103}, {'@': 104}, {'@': 105}, {'@': 106}, {'@': 107}, {'@': 108}, {'@': 109}, {'@': 110}, {'@': 111}, {'@': 112}, {'@': 113}, {'@': 114}, {'@': 115}, {'@': 116}, {'@': 117}, {'@': 118}, {'@': 119}, {'@': 120}, {'@': 121}, {'@': 122}, {'@': 123}, {'@': 124}, {'@': 125}, {'@': 126}, {'@': 127}, {'@': 128}, {'@': 129}, {'@': 130}, {'@': 131}, {'@': 132}, {'@': 133}, {'@': 134}, {'@': 135}, {'@': 136}, {'@': 137}, {'@': 138}, {'@': 139}, {'@': 140}, {'@': 141}, {'@': 142}, {'@': 143}, {'@': 144}, {'@': 145}, {'@': 146}, {'@': 147}, {'@': 148}, {'@': 149}, {'@': 150}, {'@': 151}, {'@': 152}, {'@': 153}, {'@': 154}, {'@': 155}, {'@': 156}, {'@': 157}, {'@': 158}, {'@': 159}, {'@': 160}, {'@': 161}, {'@': 162}, {'@': 163}, {'@': 164}, {'@': 165}, {'@': 166}, {'@': 167}, {'@': 168}, {'@': 169}, {'@': 170}, {'@': 171}, {'@': 172}, {'@': 173}, {'@': 174}, {'@': 175}, {'@': 176}, {'@': 177}, {'@': 178}, {'@': 179}, {'@': 180}, {'@': 181}, {'@': 182}, {'@': 183}, {'@': 184}, {'@': 185}, {'@': 186}, {'@': 187}, {'@': 188}, {'@': 189}, {'@': 190}, {'@': 191}, {'@': 192}, {'@': 193}, {'@': 194}, {'@': 195}, {'@': 196}, {'@': 197}, {'@': 198}, {'@': 199}, {'@': 200}, {'@': 201}, {'@': 202}, {'@': 203}, {'@': 204}, {'@': 205}, {'@': 206}, {'@': 207}, {'@': 208}, {'@': 209}, {'@': 210}, {'@': 211}, {'@': 212}, {'@': 213}, {'@': 214}, {'@': 215}, {'@': 216}, {'@': 217}, {'@': 218}, {'@': 219}, {'@': 220}, {'@': 221}, {'@': 222}, {'@': 223}, {'@': 224}, {'@': 225}, {'@': 226}, {'@': 227}, {'@': 228}, {'@': 229}, {'@': 230}, {'@': 231}, {'@': 232}, {'@': 233}, {'@': 234}, {'@': 235}, {'@': 236}, {'@': 237}, {'@': 238}, {'@': 239}, {'@': 240}, {'@': 241}, {'@': 242}, {'@': 243}, {'@': 244}, {'@': 245}, {'@': 246}, {'@': 247}, {'@': 248}, {'@': 249}, {'@': 250}, {'@': 251}, {'@': 252}, {'@': 253}, {'@': 254}, {'@': 255}, {'@': 256}, {'@': 257}, {'@': 258}, {'@': 259}, {'@': 260}, {'@': 261}, {'@': 262}, {'@': 263}, {'@': 264}, {'@': 265}, {'@': 266}, {'@': 267}, {'@': 268}, {'@': 269}, {'@': 270}, {'@': 271}, {'@': 272}, {'@': 273}, {'@': 274}, {'@': 275}, {'@': 276}, {'@': 277}, {'@': 278}, {'@': 279}, {'@': 280}, {'@': 281}, {'@': 282}, {'@': 283}, {'@': 284}, {'@': 285}, {'@': 286}, {'@': 287}, {'@': 288}, {'@': 289}, {'@': 290}, {'@': 291}, {'@': 292}, {'@': 293}, {'@': 294}, {'@': 295}, {'@': 296}, {'@': 297}, {'@': 298}, {'@': 299}, {'@': 300}, {'@': 301}, {'@': 302}, {'@': 303}, {'@': 304}, {'@': 305}, {'@': 306}, {'@': 307}, {'@': 308}, {'@': 309}, {'@': 310}, {'@': 311}, {'@': 312}, {'@': 313}, {'@': 314}, {'@': 315}, {'@': 316}, {'@': 317}, {'@': 318}, {'@': 319}, {'@': 320}, {'@': 321}, {'@': 322}, {'@': 323}, {'@': 324}, {'@': 325}, {'@': 326}, {'@': 327}, {'@': 328}, {'@': 329}, {'@': 330}, {'@': 331}, {'@': 332}, {'@': 333}, {'@': 334}, {'@': 335}, {'@': 336}, {'@': 337}, {'@': 338}, {'@': 339}, {'@': 340}, {'@': 341}, {'@': 342}, {'@': 343}, {'@': 344}, {'@': 345}, {'@': 346}, {'@': 347}, {'@': 348}, {'@': 349}, {'@': 350}, {'@': 351}, {'@': 352}, {'@': 353}, {'@': 354}, {'@': 355}, {'@': 356}, {'@': 357}, {'@': 358}, {'@': 359}, {'@': 360}, {'@': 361}, {'@': 362}, {'@': 363}, {'@': 364}, {'@': 365}, {'@': 366}, {'@': 367}, {'@': 368}, {'@': 369}, {'@': 370}, {'@': 371}, {'@': 372}, {'@': 373}, {'@': 374}, {'@': 375}, {'@': 376}, {'@': 377}], 'options': {'debug': False, 'strict': False, 'keep_all_tokens': False, 'tree_class': None, 'cache': False, 'cache_grammar': False, 'postlex': None, 'parser': 'lalr', 'lexer': 'contextual', 'transformer': None, 'start': ['start'], 'priority': 'normal', 'ambiguity': 'auto', 'regex': False, 'propagate_positions': False, 'lexer_callbacks': {}, 'maybe_placeholders': False, 'edit_terminals': None, 'g_regex_flags': 0, 'use_bytes': False, 'ordered_sets': True, 'import_paths': [], 'source_path': None, '_plugins': {}}, '__type__': 'Lark'}
)
MEMO = (
{0: {'origin': {'name': 'start', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'program', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 1: {'origin': {'name': 'start', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'program', '__type__': 'NonTerminal'}, {'name': 'endline', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 2: {'origin': {'name': 'start', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'endline', '__type__': 'NonTerminal'}], 'order': 2, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 3: {'origin': {'name': 'start', '__type__': 'NonTerminal'}, 'expansion': [], 'order': 3, 'alias': 'empty_program', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 4: {'origin': {'name': 'endline', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'END', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'NEWLINE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 5: {'origin': {'name': 'endline', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'endline', '__type__': 'NonTerminal'}, {'name': 'NEWLINE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 6: {'origin': {'name': 'endline', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'END', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}, {'name': 'NEWLINE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 2, 'alias': 'program_endline2', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 7: {'origin': {'name': 'endline', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'END', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}, {'name': 'NEWLINE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 3, 'alias': 'program_endline2', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 8: {'origin': {'name': 'program', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'line', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 9: {'origin': {'name': 'program', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'program', '__type__': 'NonTerminal'}, {'name': 'line', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 10: {'origin': {'name': 'line', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ID', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'EQU', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}, {'name': 'NEWLINE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': 'def_label', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 11: {'origin': {'name': 'line', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ID', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'EQU', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}, {'name': 'NEWLINE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 1, 'alias': 'def_label', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 12: {'origin': {'name': 'line', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'asms', '__type__': 'NonTerminal'}, {'name': 'NEWLINE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 2, 'alias': 'line_asm', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 13: {'origin': {'name': 'line', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'asms', '__type__': 'NonTerminal'}, {'name': 'CO', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'NEWLINE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 3, 'alias': 'line_asm', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 14: {'origin': {'name': 'line', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'preproc_line', '__type__': 'NonTerminal'}], 'order': 4, 'alias': 'preprocessor_line', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 15: {'origin': {'name': 'preproc_line', '__type__': 'NonTerminal'}, 'expansion': [{'name': '_INIT', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'STRING', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': 'preproc_line_init', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 16: {'origin': {'name': 'asms', '__type__': 'NonTerminal'}, 'expansion': [], 'order': 0, 'alias': 'asms_empty', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 17: {'origin': {'name': 'asms', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'asm', '__type__': 'NonTerminal'}], 'order': 1, 'alias': 'asms_asm', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 18: {'origin': {'name': 'asms', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'asms', '__type__': 'NonTerminal'}, {'name': 'CO', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'asm', '__type__': 'NonTerminal'}], 'order': 2, 'alias': 'asms_asms_asm', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 19: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ID', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': 'asm_label', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 20: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'INTEGER', 'filter_out': False, '__type__': 'Terminal'}], 'order': 1, 'alias': 'asm_label', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 21: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8_hl', '__type__': 'NonTerminal'}], 'order': 2, 'alias': 'asm_ld8', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 22: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8_hl', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8', '__type__': 'NonTerminal'}], 'order': 3, 'alias': 'asm_ld8', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 23: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8', '__type__': 'NonTerminal'}], 'order': 4, 'alias': 'asm_ld8', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 24: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'SP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'HL', 'filter_out': False, '__type__': 'Terminal'}], 'order': 5, 'alias': 'asm_ld8', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 25: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'SP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg16i', '__type__': 'NonTerminal'}], 'order': 6, 'alias': 'asm_ld8', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 26: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8', '__type__': 'NonTerminal'}], 'order': 7, 'alias': 'asm_ld8', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 27: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 8, 'alias': 'asm_ld8', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 28: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8_hl', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 9, 'alias': 'asm_ld8', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 29: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8_hl', '__type__': 'NonTerminal'}], 'order': 10, 'alias': 'asm_ld8', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 30: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 11, 'alias': 'asm_ld8', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 31: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'I', 'filter_out': False, '__type__': 'Terminal'}], 'order': 12, 'alias': 'asm_ld8', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 32: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'I', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 13, 'alias': 'asm_ld8', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 33: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'R', 'filter_out': False, '__type__': 'Terminal'}], 'order': 14, 'alias': 'asm_ld8', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 34: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'R', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 15, 'alias': 'asm_ld8', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 35: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8i', '__type__': 'NonTerminal'}], 'order': 16, 'alias': 'asm_ld8', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 36: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8i', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 17, 'alias': 'asm_ld8', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 37: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8i', '__type__': 'NonTerminal'}], 'order': 18, 'alias': 'asm_ld8', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 38: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8i', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg_bcde', '__type__': 'NonTerminal'}], 'order': 19, 'alias': 'asm_ld8', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 39: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8i', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8i', '__type__': 'NonTerminal'}], 'order': 20, 'alias': 'asm_ld8', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 40: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'LP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'BC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'RP', 'filter_out': False, '__type__': 'Terminal'}], 'order': 21, 'alias': 'ld_a_instr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 41: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'LB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'BC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'RB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 22, 'alias': 'ld_a_instr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 42: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'LP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'DE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'RP', 'filter_out': False, '__type__': 'Terminal'}], 'order': 23, 'alias': 'ld_a_instr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 43: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'LB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'DE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'RB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 24, 'alias': 'ld_a_instr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 44: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'LP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'BC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'RP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 25, 'alias': 'ld_a_instr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 45: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'LB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'BC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'RB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 26, 'alias': 'ld_a_instr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 46: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'LP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'DE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'RP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 27, 'alias': 'ld_a_instr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 47: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'LB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'DE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'RB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 28, 'alias': 'ld_a_instr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 48: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'PROC', 'filter_out': False, '__type__': 'Terminal'}], 'order': 29, 'alias': 'proc_scope', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 49: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ENDP', 'filter_out': False, '__type__': 'Terminal'}], 'order': 30, 'alias': 'endp_scope', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 50: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LOCAL', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'id_list', '__type__': 'NonTerminal'}], 'order': 31, 'alias': 'local_labels', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 51: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'DEFB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr_list', '__type__': 'NonTerminal'}], 'order': 32, 'alias': 'defb_op', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 52: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'DEFS', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'number_list', '__type__': 'NonTerminal'}], 'order': 33, 'alias': 'defs_op', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 53: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'DEFW', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'number_list', '__type__': 'NonTerminal'}], 'order': 34, 'alias': 'defw_op', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 54: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8_i', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8', '__type__': 'NonTerminal'}], 'order': 35, 'alias': 'asm_ldind_r8', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 55: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8_i', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 36, 'alias': 'asm_ldind_r8', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 56: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8_i', '__type__': 'NonTerminal'}], 'order': 37, 'alias': 'asm_ldr8_ind', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 57: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8_i', '__type__': 'NonTerminal'}], 'order': 38, 'alias': 'asm_ldr8_ind', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 58: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'EX', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'AF', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'AF', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'APO', 'filter_out': False, '__type__': 'Terminal'}], 'order': 39, 'alias': 'ex_af_af', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 59: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'EX', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'DE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'HL', 'filter_out': False, '__type__': 'Terminal'}], 'order': 40, 'alias': 'ex_de_hl', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 60: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ORG', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 41, 'alias': 'org', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 61: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ORG', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 42, 'alias': 'org', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 62: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'NAMESPACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'ID', 'filter_out': False, '__type__': 'Terminal'}], 'order': 43, 'alias': 'namespace', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 63: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'PUSH', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'NAMESPACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 44, 'alias': 'push_namespace', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 64: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'PUSH', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'NAMESPACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'ID', 'filter_out': False, '__type__': 'Terminal'}], 'order': 45, 'alias': 'push_namespace', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 65: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'POP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'NAMESPACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 46, 'alias': 'pop_namespace', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 66: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ALIGN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 47, 'alias': 'align', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 67: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ALIGN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 48, 'alias': 'align', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 68: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'INCBIN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'STRING', 'filter_out': False, '__type__': 'Terminal'}], 'order': 49, 'alias': 'incbin', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 69: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'INCBIN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'STRING', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 50, 'alias': 'incbin', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 70: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'INCBIN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'STRING', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 51, 'alias': 'incbin', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 71: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'EX', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'LP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'SP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'RP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg16i', '__type__': 'NonTerminal'}], 'order': 52, 'alias': 'ex_sp_reg8', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 72: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'EX', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'LB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'SP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'RB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg16i', '__type__': 'NonTerminal'}], 'order': 53, 'alias': 'ex_sp_reg8', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 73: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'EX', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'LP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'SP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'RP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'HL', 'filter_out': False, '__type__': 'Terminal'}], 'order': 54, 'alias': 'ex_sp_reg8', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 74: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'EX', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'LB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'SP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'RB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'HL', 'filter_out': False, '__type__': 'Terminal'}], 'order': 55, 'alias': 'ex_sp_reg8', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 75: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'INC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'inc_reg', '__type__': 'NonTerminal'}], 'order': 56, 'alias': 'incdec', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 76: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'DEC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'inc_reg', '__type__': 'NonTerminal'}], 'order': 57, 'alias': 'incdec', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 77: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'INC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8_i', '__type__': 'NonTerminal'}], 'order': 58, 'alias': 'incdeci', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 78: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'DEC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8_i', '__type__': 'NonTerminal'}], 'order': 59, 'alias': 'incdeci', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 79: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 60, 'alias': 'ld_reg_val', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 80: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 61, 'alias': 'ld_reg_val', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 81: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg16', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 62, 'alias': 'ld_reg_val', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 82: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8_hl', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 63, 'alias': 'ld_reg_val', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 83: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 64, 'alias': 'ld_reg_val', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 84: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'SP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 65, 'alias': 'ld_reg_val', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 85: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8i', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 66, 'alias': 'ld_reg_val', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 86: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8_i', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 67, 'alias': 'ld_reg_val_i', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 87: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'JP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8_hl', '__type__': 'NonTerminal'}], 'order': 68, 'alias': 'jp_hl', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 88: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'JP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'LP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg16i', '__type__': 'NonTerminal'}, {'name': 'RP', 'filter_out': False, '__type__': 'Terminal'}], 'order': 69, 'alias': 'jp_hl', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 89: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'JP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'LB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg16i', '__type__': 'NonTerminal'}, {'name': 'RB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 70, 'alias': 'jp_hl', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 90: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'SBC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8', '__type__': 'NonTerminal'}], 'order': 71, 'alias': 'sbcadd', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 91: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'SBC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8i', '__type__': 'NonTerminal'}], 'order': 72, 'alias': 'sbcadd', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 92: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'SBC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 73, 'alias': 'sbcadd', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 93: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'SBC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8_hl', '__type__': 'NonTerminal'}], 'order': 74, 'alias': 'sbcadd', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 94: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'SBC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'HL', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'SP', 'filter_out': False, '__type__': 'Terminal'}], 'order': 75, 'alias': 'sbcadd', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 95: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'SBC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'HL', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'BC', 'filter_out': False, '__type__': 'Terminal'}], 'order': 76, 'alias': 'sbcadd', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 96: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'SBC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'HL', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'DE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 77, 'alias': 'sbcadd', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 97: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'SBC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'HL', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'HL', 'filter_out': False, '__type__': 'Terminal'}], 'order': 78, 'alias': 'sbcadd', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 98: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8', '__type__': 'NonTerminal'}], 'order': 79, 'alias': 'sbcadd', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 99: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8i', '__type__': 'NonTerminal'}], 'order': 80, 'alias': 'sbcadd', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 100: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 81, 'alias': 'sbcadd', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 101: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8_hl', '__type__': 'NonTerminal'}], 'order': 82, 'alias': 'sbcadd', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 102: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8', '__type__': 'NonTerminal'}], 'order': 83, 'alias': 'sbcadd', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 103: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8i', '__type__': 'NonTerminal'}], 'order': 84, 'alias': 'sbcadd', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 104: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 85, 'alias': 'sbcadd', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 105: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8_hl', '__type__': 'NonTerminal'}], 'order': 86, 'alias': 'sbcadd', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 106: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'HL', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'BC', 'filter_out': False, '__type__': 'Terminal'}], 'order': 87, 'alias': 'sbcadd', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 107: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'HL', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'DE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 88, 'alias': 'sbcadd', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 108: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'HL', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'HL', 'filter_out': False, '__type__': 'Terminal'}], 'order': 89, 'alias': 'sbcadd', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 109: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'HL', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'SP', 'filter_out': False, '__type__': 'Terminal'}], 'order': 90, 'alias': 'sbcadd', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 110: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'HL', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'BC', 'filter_out': False, '__type__': 'Terminal'}], 'order': 91, 'alias': 'sbcadd', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 111: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'HL', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'DE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 92, 'alias': 'sbcadd', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 112: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'HL', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'HL', 'filter_out': False, '__type__': 'Terminal'}], 'order': 93, 'alias': 'sbcadd', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 113: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'HL', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'SP', 'filter_out': False, '__type__': 'Terminal'}], 'order': 94, 'alias': 'sbcadd', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 114: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg16i', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'BC', 'filter_out': False, '__type__': 'Terminal'}], 'order': 95, 'alias': 'sbcadd', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 115: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg16i', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'DE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 96, 'alias': 'sbcadd', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 116: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg16i', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'HL', 'filter_out': False, '__type__': 'Terminal'}], 'order': 97, 'alias': 'sbcadd', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 117: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg16i', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'SP', 'filter_out': False, '__type__': 'Terminal'}], 'order': 98, 'alias': 'sbcadd', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 118: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg16i', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg16i', '__type__': 'NonTerminal'}], 'order': 99, 'alias': 'sbcadd', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 119: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'SBC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 100, 'alias': 'arith_a_expr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 120: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'SBC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 101, 'alias': 'arith_a_expr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 121: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 102, 'alias': 'arith_a_expr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 122: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 103, 'alias': 'arith_a_expr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 123: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 104, 'alias': 'arith_a_expr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 124: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 105, 'alias': 'arith_a_expr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 125: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'SBC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8_i', '__type__': 'NonTerminal'}], 'order': 106, 'alias': 'arith_a_reg_i', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 126: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8_i', '__type__': 'NonTerminal'}], 'order': 107, 'alias': 'arith_a_reg_i', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 127: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8_i', '__type__': 'NonTerminal'}], 'order': 108, 'alias': 'arith_a_reg_i', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 128: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'bitwiseop', '__type__': 'NonTerminal'}, {'name': 'reg8', '__type__': 'NonTerminal'}], 'order': 109, 'alias': 'bitwiseop_reg', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 129: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'bitwiseop', '__type__': 'NonTerminal'}, {'name': 'reg8i', '__type__': 'NonTerminal'}], 'order': 110, 'alias': 'bitwiseop_reg', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 130: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'bitwiseop', '__type__': 'NonTerminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 111, 'alias': 'bitwiseop_reg', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 131: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'bitwiseop', '__type__': 'NonTerminal'}, {'name': 'reg8_hl', '__type__': 'NonTerminal'}], 'order': 112, 'alias': 'bitwiseop_reg', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 132: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'bitwiseop', '__type__': 'NonTerminal'}, {'name': 'reg8_i', '__type__': 'NonTerminal'}], 'order': 113, 'alias': 'bitwiseop_reg_i', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 133: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'bitwiseop', '__type__': 'NonTerminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 114, 'alias': 'bitwise_expr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 134: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'bitwiseop', '__type__': 'NonTerminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 115, 'alias': 'bitwise_expr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 135: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'PUSH', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'AF', 'filter_out': False, '__type__': 'Terminal'}], 'order': 116, 'alias': 'push_pop', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 136: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'PUSH', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg16', '__type__': 'NonTerminal'}], 'order': 117, 'alias': 'push_pop', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 137: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'POP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'AF', 'filter_out': False, '__type__': 'Terminal'}], 'order': 118, 'alias': 'push_pop', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 138: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'POP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg16', '__type__': 'NonTerminal'}], 'order': 119, 'alias': 'push_pop', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 139: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 120, 'alias': 'ld_addr_reg', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 140: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg16', '__type__': 'NonTerminal'}], 'order': 121, 'alias': 'ld_addr_reg', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 141: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'SP', 'filter_out': False, '__type__': 'Terminal'}], 'order': 122, 'alias': 'ld_addr_reg', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 142: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'mem_indir', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 123, 'alias': 'ld_addr_reg', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 143: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'mem_indir', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg16', '__type__': 'NonTerminal'}], 'order': 124, 'alias': 'ld_addr_reg', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 144: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'mem_indir', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'SP', 'filter_out': False, '__type__': 'Terminal'}], 'order': 125, 'alias': 'ld_addr_reg', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 145: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 126, 'alias': 'ld_reg_addr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 146: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg16', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 127, 'alias': 'ld_reg_addr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 147: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'SP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 128, 'alias': 'ld_reg_addr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 148: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'mem_indir', '__type__': 'NonTerminal'}], 'order': 129, 'alias': 'ld_reg_addr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 149: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg16', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'mem_indir', '__type__': 'NonTerminal'}], 'order': 130, 'alias': 'ld_reg_addr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 150: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'SP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'mem_indir', '__type__': 'NonTerminal'}], 'order': 131, 'alias': 'ld_reg_addr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 151: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'rotation', '__type__': 'NonTerminal'}, {'name': 'reg8', '__type__': 'NonTerminal'}], 'order': 132, 'alias': 'rotate', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 152: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'rotation', '__type__': 'NonTerminal'}, {'name': 'reg8_hl', '__type__': 'NonTerminal'}], 'order': 133, 'alias': 'rotate', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 153: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'rotation', '__type__': 'NonTerminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 134, 'alias': 'rotate', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 154: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'rotation', '__type__': 'NonTerminal'}, {'name': 'reg8_i', '__type__': 'NonTerminal'}], 'order': 135, 'alias': 'rotate_ix', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 155: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'bitop', '__type__': 'NonTerminal'}, {'name': 'expr', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 136, 'alias': 'bit', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 156: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'bitop', '__type__': 'NonTerminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 137, 'alias': 'bit', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 157: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'bitop', '__type__': 'NonTerminal'}, {'name': 'expr', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8', '__type__': 'NonTerminal'}], 'order': 138, 'alias': 'bit', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 158: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'bitop', '__type__': 'NonTerminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8', '__type__': 'NonTerminal'}], 'order': 139, 'alias': 'bit', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 159: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'bitop', '__type__': 'NonTerminal'}, {'name': 'expr', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8_hl', '__type__': 'NonTerminal'}], 'order': 140, 'alias': 'bit', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 160: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'bitop', '__type__': 'NonTerminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8_hl', '__type__': 'NonTerminal'}], 'order': 141, 'alias': 'bit', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 161: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'bitop', '__type__': 'NonTerminal'}, {'name': 'expr', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8_i', '__type__': 'NonTerminal'}], 'order': 142, 'alias': 'bit_ix', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 162: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'bitop', '__type__': 'NonTerminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8_i', '__type__': 'NonTerminal'}], 'order': 143, 'alias': 'bit_ix', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 163: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'JP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'jp_flags', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 144, 'alias': 'jp', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 164: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'JP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'jp_flags', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 145, 'alias': 'jp', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 165: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'CALL', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'jp_flags', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 146, 'alias': 'jp', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 166: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'CALL', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'jp_flags', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 147, 'alias': 'jp', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 167: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'RET', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'jp_flags', '__type__': 'NonTerminal'}], 'order': 148, 'alias': 'ret', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 168: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'JR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'jr_flags', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 149, 'alias': 'jr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 169: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'JR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'jr_flags', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 150, 'alias': 'jr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 170: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'JP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 151, 'alias': 'jrjp', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 171: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'JR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 152, 'alias': 'jrjp', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 172: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'CALL', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 153, 'alias': 'jrjp', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 173: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'DJNZ', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 154, 'alias': 'jrjp', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 174: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'JP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 155, 'alias': 'jrjp', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 175: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'JR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 156, 'alias': 'jrjp', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 176: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'CALL', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 157, 'alias': 'jrjp', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 177: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'DJNZ', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 158, 'alias': 'jrjp', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 178: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'RST', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 159, 'alias': 'rst', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 179: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'IM', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 160, 'alias': 'im', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 180: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'LP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'C', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'RP', 'filter_out': False, '__type__': 'Terminal'}], 'order': 161, 'alias': 'in_op', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 181: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'LB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'C', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'RB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 162, 'alias': 'in_op', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 182: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'LP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'C', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'RP', 'filter_out': False, '__type__': 'Terminal'}], 'order': 163, 'alias': 'in_op', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 183: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'LB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'C', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'RB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 164, 'alias': 'in_op', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 184: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'OUT', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'LP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'C', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'RP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 165, 'alias': 'out_op', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 185: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'OUT', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'LB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'C', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'RB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 166, 'alias': 'out_op', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 186: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'OUT', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'LP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'C', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'RP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8', '__type__': 'NonTerminal'}], 'order': 167, 'alias': 'out_op', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 187: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'OUT', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'LB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'C', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'RB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'reg8', '__type__': 'NonTerminal'}], 'order': 168, 'alias': 'out_op', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 188: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'mem_indir', '__type__': 'NonTerminal'}], 'order': 169, 'alias': 'in_expr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 189: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 170, 'alias': 'in_expr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 190: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'OUT', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'mem_indir', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 171, 'alias': 'out_expr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 191: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'OUT', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 172, 'alias': 'out_expr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 192: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'NOP', 'filter_out': False, '__type__': 'Terminal'}], 'order': 173, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 193: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'EXX', 'filter_out': False, '__type__': 'Terminal'}], 'order': 174, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 194: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'CCF', 'filter_out': False, '__type__': 'Terminal'}], 'order': 175, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 195: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'SCF', 'filter_out': False, '__type__': 'Terminal'}], 'order': 176, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 196: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LDIR', 'filter_out': False, '__type__': 'Terminal'}], 'order': 177, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 197: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LDI', 'filter_out': False, '__type__': 'Terminal'}], 'order': 178, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 198: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LDDR', 'filter_out': False, '__type__': 'Terminal'}], 'order': 179, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 199: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LDD', 'filter_out': False, '__type__': 'Terminal'}], 'order': 180, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 200: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'CPIR', 'filter_out': False, '__type__': 'Terminal'}], 'order': 181, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 201: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'CPI', 'filter_out': False, '__type__': 'Terminal'}], 'order': 182, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 202: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'CPDR', 'filter_out': False, '__type__': 'Terminal'}], 'order': 183, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 203: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'CPD', 'filter_out': False, '__type__': 'Terminal'}], 'order': 184, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 204: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'DAA', 'filter_out': False, '__type__': 'Terminal'}], 'order': 185, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 205: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'NEG', 'filter_out': False, '__type__': 'Terminal'}], 'order': 186, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 206: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'CPL', 'filter_out': False, '__type__': 'Terminal'}], 'order': 187, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 207: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'HALT', 'filter_out': False, '__type__': 'Terminal'}], 'order': 188, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 208: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'EI', 'filter_out': False, '__type__': 'Terminal'}], 'order': 189, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 209: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'DI', 'filter_out': False, '__type__': 'Terminal'}], 'order': 190, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 210: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'OUTD', 'filter_out': False, '__type__': 'Terminal'}], 'order': 191, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 211: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'OUTI', 'filter_out': False, '__type__': 'Terminal'}], 'order': 192, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 212: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'OTDR', 'filter_out': False, '__type__': 'Terminal'}], 'order': 193, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 213: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'OTIR', 'filter_out': False, '__type__': 'Terminal'}], 'order': 194, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 214: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'IND', 'filter_out': False, '__type__': 'Terminal'}], 'order': 195, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 215: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'INI', 'filter_out': False, '__type__': 'Terminal'}], 'order': 196, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 216: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'INDR', 'filter_out': False, '__type__': 'Terminal'}], 'order': 197, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 217: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'INIR', 'filter_out': False, '__type__': 'Terminal'}], 'order': 198, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 218: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'RET', 'filter_out': False, '__type__': 'Terminal'}], 'order': 199, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 219: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'RETI', 'filter_out': False, '__type__': 'Terminal'}], 'order': 200, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 220: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'RETN', 'filter_out': False, '__type__': 'Terminal'}], 'order': 201, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 221: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'RLA', 'filter_out': False, '__type__': 'Terminal'}], 'order': 202, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 222: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'RLCA', 'filter_out': False, '__type__': 'Terminal'}], 'order': 203, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 223: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'RRA', 'filter_out': False, '__type__': 'Terminal'}], 'order': 204, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 224: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'RRCA', 'filter_out': False, '__type__': 'Terminal'}], 'order': 205, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 225: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'RLD', 'filter_out': False, '__type__': 'Terminal'}], 'order': 206, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 226: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'RRD', 'filter_out': False, '__type__': 'Terminal'}], 'order': 207, 'alias': 'single', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 227: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'MUL', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'D', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'E', 'filter_out': False, '__type__': 'Terminal'}], 'order': 208, 'alias': 'mul_d_e', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 228: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LDIX', 'filter_out': False, '__type__': 'Terminal'}], 'order': 209, 'alias': 'simple_instruction', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 229: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LDWS', 'filter_out': False, '__type__': 'Terminal'}], 'order': 210, 'alias': 'simple_instruction', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 230: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LDIRX', 'filter_out': False, '__type__': 'Terminal'}], 'order': 211, 'alias': 'simple_instruction', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 231: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LDDX', 'filter_out': False, '__type__': 'Terminal'}], 'order': 212, 'alias': 'simple_instruction', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 232: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LDDRX', 'filter_out': False, '__type__': 'Terminal'}], 'order': 213, 'alias': 'simple_instruction', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 233: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LDPIRX', 'filter_out': False, '__type__': 'Terminal'}], 'order': 214, 'alias': 'simple_instruction', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 234: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'OUTINB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 215, 'alias': 'simple_instruction', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 235: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'SWAPNIB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 216, 'alias': 'simple_instruction', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 236: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'MIRROR', 'filter_out': False, '__type__': 'Terminal'}], 'order': 217, 'alias': 'simple_instruction', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 237: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'PIXELDN', 'filter_out': False, '__type__': 'Terminal'}], 'order': 218, 'alias': 'simple_instruction', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 238: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'PIXELAD', 'filter_out': False, '__type__': 'Terminal'}], 'order': 219, 'alias': 'simple_instruction', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 239: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'SETAE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 220, 'alias': 'simple_instruction', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 240: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'HL', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 221, 'alias': 'add_reg16_a', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 241: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'DE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 222, 'alias': 'add_reg16_a', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 242: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'BC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 223, 'alias': 'add_reg16_a', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 243: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'JP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'LP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'C', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'RP', 'filter_out': False, '__type__': 'Terminal'}], 'order': 224, 'alias': 'jp_c', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 244: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'JP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'LB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'C', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'RB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 225, 'alias': 'jp_c', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 245: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'BSLA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'DE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'B', 'filter_out': False, '__type__': 'Terminal'}], 'order': 226, 'alias': 'bxxxx_de_b', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 246: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'BSRA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'DE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'B', 'filter_out': False, '__type__': 'Terminal'}], 'order': 227, 'alias': 'bxxxx_de_b', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 247: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'BSRL', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'DE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'B', 'filter_out': False, '__type__': 'Terminal'}], 'order': 228, 'alias': 'bxxxx_de_b', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 248: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'BSRF', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'DE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'B', 'filter_out': False, '__type__': 'Terminal'}], 'order': 229, 'alias': 'bxxxx_de_b', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 249: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'BRLC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'DE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'B', 'filter_out': False, '__type__': 'Terminal'}], 'order': 230, 'alias': 'bxxxx_de_b', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 250: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'HL', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 231, 'alias': 'add_reg_nn', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 251: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'DE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 232, 'alias': 'add_reg_nn', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 252: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'BC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 233, 'alias': 'add_reg_nn', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 253: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'HL', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 234, 'alias': 'add_reg_nn', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 254: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'DE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 235, 'alias': 'add_reg_nn', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 255: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'BC', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 236, 'alias': 'add_reg_nn', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 256: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'TEST', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 237, 'alias': 'test_nn', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 257: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'TEST', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 238, 'alias': 'test_nn', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 258: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'NEXTREG', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 239, 'alias': 'nextreg_expr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 259: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'NEXTREG', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 240, 'alias': 'nextreg_expr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 260: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'NEXTREG', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 241, 'alias': 'nextreg_expr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 261: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'NEXTREG', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 242, 'alias': 'nextreg_expr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 262: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'NEXTREG', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 243, 'alias': 'nextreg_a', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 263: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'NEXTREG', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 244, 'alias': 'nextreg_a', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 264: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'PUSH', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 245, 'alias': 'push_imm', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 265: {'origin': {'name': 'asm', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'PUSH', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 246, 'alias': 'push_imm', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 266: {'origin': {'name': 'id_list', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ID', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': 'idlist', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 267: {'origin': {'name': 'id_list', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'id_list', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'ID', 'filter_out': False, '__type__': 'Terminal'}], 'order': 1, 'alias': 'idlist_id', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 268: {'origin': {'name': 'expr_list', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'STRING', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': 'expr_list_from_string', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 269: {'origin': {'name': 'expr_list', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr', '__type__': 'NonTerminal'}], 'order': 1, 'alias': 'expr_list_from_num', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 270: {'origin': {'name': 'expr_list', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 2, 'alias': 'expr_list_from_num', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 271: {'origin': {'name': 'expr_list', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_list', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 3, 'alias': 'expr_list_plus_expr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 272: {'origin': {'name': 'expr_list', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_list', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 4, 'alias': 'expr_list_plus_expr', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 273: {'origin': {'name': 'expr_list', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_list', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'STRING', 'filter_out': False, '__type__': 'Terminal'}], 'order': 5, 'alias': 'expr_list_plus_string', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 274: {'origin': {'name': 'number_list', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr', '__type__': 'NonTerminal'}], 'order': 0, 'alias': 'number_list', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 275: {'origin': {'name': 'number_list', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 1, 'alias': 'number_list', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 276: {'origin': {'name': 'number_list', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'number_list', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}], 'order': 2, 'alias': 'number_list_number', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 277: {'origin': {'name': 'number_list', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'number_list', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 3, 'alias': 'number_list_number', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 278: {'origin': {'name': 'reg8_hl', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'HL', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'RP', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': 'reg8_hl', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 279: {'origin': {'name': 'reg8_hl', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'HL', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'RB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 1, 'alias': 'reg8_hl', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 280: {'origin': {'name': 'reg8_i', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'IX', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}, {'name': 'RP', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': 'ind8_i', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 281: {'origin': {'name': 'reg8_i', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'IY', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}, {'name': 'RP', 'filter_out': False, '__type__': 'Terminal'}], 'order': 1, 'alias': 'ind8_i', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 282: {'origin': {'name': 'reg8_i', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'IX', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'PLUS', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}, {'name': 'RP', 'filter_out': False, '__type__': 'Terminal'}], 'order': 2, 'alias': 'ind8_i', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 283: {'origin': {'name': 'reg8_i', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'IX', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'MINUS', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}, {'name': 'RP', 'filter_out': False, '__type__': 'Terminal'}], 'order': 3, 'alias': 'ind8_i', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 284: {'origin': {'name': 'reg8_i', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'IY', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'PLUS', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}, {'name': 'RP', 'filter_out': False, '__type__': 'Terminal'}], 'order': 4, 'alias': 'ind8_i', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 285: {'origin': {'name': 'reg8_i', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'IY', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'MINUS', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}, {'name': 'RP', 'filter_out': False, '__type__': 'Terminal'}], 'order': 5, 'alias': 'ind8_i', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 286: {'origin': {'name': 'reg8_i', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'IX', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}, {'name': 'RB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 6, 'alias': 'ind8_i', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 287: {'origin': {'name': 'reg8_i', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'IY', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}, {'name': 'RB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 7, 'alias': 'ind8_i', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 288: {'origin': {'name': 'reg8_i', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'IX', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'PLUS', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}, {'name': 'RB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 8, 'alias': 'ind8_i', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 289: {'origin': {'name': 'reg8_i', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'IX', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'MINUS', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}, {'name': 'RB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 9, 'alias': 'ind8_i', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 290: {'origin': {'name': 'reg8_i', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'IY', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'PLUS', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}, {'name': 'RB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 10, 'alias': 'ind8_i', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 291: {'origin': {'name': 'reg8_i', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'IY', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'MINUS', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}, {'name': 'RB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 11, 'alias': 'ind8_i', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 292: {'origin': {'name': 'bitwiseop', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'OR', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': 'bitwise', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 293: {'origin': {'name': 'bitwiseop', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'AND', 'filter_out': False, '__type__': 'Terminal'}], 'order': 1, 'alias': 'bitwise', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 294: {'origin': {'name': 'bitwiseop', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'XOR', 'filter_out': False, '__type__': 'Terminal'}], 'order': 2, 'alias': 'bitwise', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 295: {'origin': {'name': 'bitwiseop', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'SUB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 3, 'alias': 'bitwise', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 296: {'origin': {'name': 'bitwiseop', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'CP', 'filter_out': False, '__type__': 'Terminal'}], 'order': 4, 'alias': 'bitwise', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 297: {'origin': {'name': 'bitop', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'BIT', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': 'bitop', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 298: {'origin': {'name': 'bitop', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'RES', 'filter_out': False, '__type__': 'Terminal'}], 'order': 1, 'alias': 'bitop', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 299: {'origin': {'name': 'bitop', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'SET', 'filter_out': False, '__type__': 'Terminal'}], 'order': 2, 'alias': 'bitop', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 300: {'origin': {'name': 'rotation', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'RR', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': 'rotation', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 301: {'origin': {'name': 'rotation', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'RL', 'filter_out': False, '__type__': 'Terminal'}], 'order': 1, 'alias': 'rotation', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 302: {'origin': {'name': 'rotation', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'RRC', 'filter_out': False, '__type__': 'Terminal'}], 'order': 2, 'alias': 'rotation', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 303: {'origin': {'name': 'rotation', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'RLC', 'filter_out': False, '__type__': 'Terminal'}], 'order': 3, 'alias': 'rotation', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 304: {'origin': {'name': 'rotation', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'SLA', 'filter_out': False, '__type__': 'Terminal'}], 'order': 4, 'alias': 'rotation', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 305: {'origin': {'name': 'rotation', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'SLL', 'filter_out': False, '__type__': 'Terminal'}], 'order': 5, 'alias': 'rotation', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 306: {'origin': {'name': 'rotation', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'SRA', 'filter_out': False, '__type__': 'Terminal'}], 'order': 6, 'alias': 'rotation', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 307: {'origin': {'name': 'rotation', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'SRL', 'filter_out': False, '__type__': 'Terminal'}], 'order': 7, 'alias': 'rotation', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 308: {'origin': {'name': 'inc_reg', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'SP', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': 'reg_inc', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 309: {'origin': {'name': 'inc_reg', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'reg8', '__type__': 'NonTerminal'}], 'order': 1, 'alias': 'reg_inc', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 310: {'origin': {'name': 'inc_reg', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'reg16', '__type__': 'NonTerminal'}], 'order': 2, 'alias': 'reg_inc', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 311: {'origin': {'name': 'inc_reg', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'reg8_hl', '__type__': 'NonTerminal'}], 'order': 3, 'alias': 'reg_inc', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 312: {'origin': {'name': 'inc_reg', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'A', 'filter_out': False, '__type__': 'Terminal'}], 'order': 4, 'alias': 'reg_inc', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 313: {'origin': {'name': 'inc_reg', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'reg8i', '__type__': 'NonTerminal'}], 'order': 5, 'alias': 'reg_inc', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 314: {'origin': {'name': 'reg8', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'H', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': 'reg8', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 315: {'origin': {'name': 'reg8', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'L', 'filter_out': False, '__type__': 'Terminal'}], 'order': 1, 'alias': 'reg8', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 316: {'origin': {'name': 'reg8', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'reg_bcde', '__type__': 'NonTerminal'}], 'order': 2, 'alias': 'reg8', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 317: {'origin': {'name': 'reg_bcde', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'B', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': 'reg_bcde', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 318: {'origin': {'name': 'reg_bcde', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'C', 'filter_out': False, '__type__': 'Terminal'}], 'order': 1, 'alias': 'reg_bcde', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 319: {'origin': {'name': 'reg_bcde', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'D', 'filter_out': False, '__type__': 'Terminal'}], 'order': 2, 'alias': 'reg_bcde', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 320: {'origin': {'name': 'reg_bcde', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'E', 'filter_out': False, '__type__': 'Terminal'}], 'order': 3, 'alias': 'reg_bcde', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 321: {'origin': {'name': 'reg8i', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'IXH', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': 'reg8i', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 322: {'origin': {'name': 'reg8i', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'IXL', 'filter_out': False, '__type__': 'Terminal'}], 'order': 1, 'alias': 'reg8i', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 323: {'origin': {'name': 'reg8i', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'IYH', 'filter_out': False, '__type__': 'Terminal'}], 'order': 2, 'alias': 'reg8i', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 324: {'origin': {'name': 'reg8i', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'IYL', 'filter_out': False, '__type__': 'Terminal'}], 'order': 3, 'alias': 'reg8i', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 325: {'origin': {'name': 'reg16', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'BC', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': 'reg16', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 326: {'origin': {'name': 'reg16', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'DE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 1, 'alias': 'reg16', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 327: {'origin': {'name': 'reg16', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'HL', 'filter_out': False, '__type__': 'Terminal'}], 'order': 2, 'alias': 'reg16', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 328: {'origin': {'name': 'reg16', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'reg16i', '__type__': 'NonTerminal'}], 'order': 3, 'alias': 'reg16', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 329: {'origin': {'name': 'reg16i', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'IX', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': 'reg16i', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 330: {'origin': {'name': 'reg16i', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'IY', 'filter_out': False, '__type__': 'Terminal'}], 'order': 1, 'alias': 'reg16i', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 331: {'origin': {'name': 'jp_flags', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'P', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': 'jpflags_other', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 332: {'origin': {'name': 'jp_flags', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'M', 'filter_out': False, '__type__': 'Terminal'}], 'order': 1, 'alias': 'jpflags_other', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 333: {'origin': {'name': 'jp_flags', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'PO', 'filter_out': False, '__type__': 'Terminal'}], 'order': 2, 'alias': 'jpflags_other', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 334: {'origin': {'name': 'jp_flags', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'PE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 3, 'alias': 'jpflags_other', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 335: {'origin': {'name': 'jp_flags', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'jr_flags', '__type__': 'NonTerminal'}], 'order': 4, 'alias': 'jpflags_other', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 336: {'origin': {'name': 'jr_flags', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'Z', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': 'jr_flags', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 337: {'origin': {'name': 'jr_flags', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'C', 'filter_out': False, '__type__': 'Terminal'}], 'order': 1, 'alias': 'jr_flags', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 338: {'origin': {'name': 'jr_flags', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'NZ', 'filter_out': False, '__type__': 'Terminal'}], 'order': 2, 'alias': 'jr_flags', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 339: {'origin': {'name': 'jr_flags', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'NC', 'filter_out': False, '__type__': 'Terminal'}], 'order': 3, 'alias': 'jr_flags', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 340: {'origin': {'name': 'mem_indir', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}, {'name': 'RB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': 'mem_indir', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 341: {'origin': {'name': 'expr_bitwise_operand', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_bitwise', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 342: {'origin': {'name': 'expr_bitwise_operand', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 343: {'origin': {'name': 'expr_add_operand', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_add', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 344: {'origin': {'name': 'expr_add_operand', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 345: {'origin': {'name': 'expr_mul_operand', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_mul', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 346: {'origin': {'name': 'expr_mul_operand', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 347: {'origin': {'name': 'expr_unary_operand', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_unary', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 348: {'origin': {'name': 'expr_unary_operand', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 349: {'origin': {'name': 'expr_pow_operand', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_pow', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 350: {'origin': {'name': 'expr_pow_operand', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 351: {'origin': {'name': 'expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_bitwise', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 352: {'origin': {'name': 'expr_bitwise', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_bitwise_operand', '__type__': 'NonTerminal'}, {'name': 'RSHIFT', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr_add_operand', '__type__': 'NonTerminal'}], 'order': 0, 'alias': 'expr_div_expr', 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 353: {'origin': {'name': 'expr_bitwise', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_bitwise_operand', '__type__': 'NonTerminal'}, {'name': 'LSHIFT', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr_add_operand', '__type__': 'NonTerminal'}], 'order': 1, 'alias': 'expr_div_expr', 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 354: {'origin': {'name': 'expr_bitwise', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_bitwise_operand', '__type__': 'NonTerminal'}, {'name': 'BAND', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr_add_operand', '__type__': 'NonTerminal'}], 'order': 2, 'alias': 'expr_div_expr', 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 355: {'origin': {'name': 'expr_bitwise', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_bitwise_operand', '__type__': 'NonTerminal'}, {'name': 'BOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr_add_operand', '__type__': 'NonTerminal'}], 'order': 3, 'alias': 'expr_div_expr', 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 356: {'origin': {'name': 'expr_bitwise', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_bitwise_operand', '__type__': 'NonTerminal'}, {'name': 'BXOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr_add_operand', '__type__': 'NonTerminal'}], 'order': 4, 'alias': 'expr_div_expr', 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 357: {'origin': {'name': 'expr_bitwise', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_add', '__type__': 'NonTerminal'}], 'order': 5, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 358: {'origin': {'name': 'expr_add', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_add_operand', '__type__': 'NonTerminal'}, {'name': 'PLUS', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr_mul_operand', '__type__': 'NonTerminal'}], 'order': 0, 'alias': 'expr_div_expr', 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 359: {'origin': {'name': 'expr_add', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_add_operand', '__type__': 'NonTerminal'}, {'name': 'MINUS', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr_mul_operand', '__type__': 'NonTerminal'}], 'order': 1, 'alias': 'expr_div_expr', 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 360: {'origin': {'name': 'expr_add', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_mul', '__type__': 'NonTerminal'}], 'order': 2, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 361: {'origin': {'name': 'expr_mul', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_mul_operand', '__type__': 'NonTerminal'}, {'name': 'MUL', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr_pow_operand', '__type__': 'NonTerminal'}], 'order': 0, 'alias': 'expr_div_expr', 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 362: {'origin': {'name': 'expr_mul', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_mul_operand', '__type__': 'NonTerminal'}, {'name': 'DIV', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr_pow_operand', '__type__': 'NonTerminal'}], 'order': 1, 'alias': 'expr_div_expr', 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 363: {'origin': {'name': 'expr_mul', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_mul_operand', '__type__': 'NonTerminal'}, {'name': 'MOD', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr_pow_operand', '__type__': 'NonTerminal'}], 'order': 2, 'alias': 'expr_div_expr', 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 364: {'origin': {'name': 'expr_mul', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_pow', '__type__': 'NonTerminal'}], 'order': 3, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 365: {'origin': {'name': 'expr_pow', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_unary_operand', '__type__': 'NonTerminal'}, {'name': 'POW', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr_pow_operand', '__type__': 'NonTerminal'}], 'order': 0, 'alias': 'expr_div_expr', 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 366: {'origin': {'name': 'expr_pow', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_unary', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 367: {'origin': {'name': 'expr_unary', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'MINUS', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr_unary', '__type__': 'NonTerminal'}], 'order': 0, 'alias': 'expr_uminus', 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 368: {'origin': {'name': 'expr_unary', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'PLUS', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr_unary', '__type__': 'NonTerminal'}], 'order': 1, 'alias': 'expr_uplus', 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 369: {'origin': {'name': 'expr_unary', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'MINUS', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 2, 'alias': 'expr_uminus', 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 370: {'origin': {'name': 'expr_unary', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'PLUS', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}], 'order': 3, 'alias': 'expr_uplus', 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 371: {'origin': {'name': 'expr_unary', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_atom', '__type__': 'NonTerminal'}], 'order': 4, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 372: {'origin': {'name': 'pexpr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}, {'name': 'RP', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': 'expr_lprp', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 373: {'origin': {'name': 'pexpr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'pexpr', '__type__': 'NonTerminal'}, {'name': 'RP', 'filter_out': False, '__type__': 'Terminal'}], 'order': 1, 'alias': 'expr_lprp', 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 374: {'origin': {'name': 'expr_atom', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'INTEGER', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': 'expr_int', 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 375: {'origin': {'name': 'expr_atom', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ID', 'filter_out': False, '__type__': 'Terminal'}], 'order': 1, 'alias': 'expr_label', 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 376: {'origin': {'name': 'expr_atom', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LPP', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr', '__type__': 'NonTerminal'}, {'name': 'RPP', 'filter_out': False, '__type__': 'Terminal'}], 'order': 2, 'alias': 'expr_paren', 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 377: {'origin': {'name': 'expr_atom', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'ADDR', 'filter_out': False, '__type__': 'Terminal'}], 'order': 3, 'alias': 'expr_addr', 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}}
)
Shift = 0
Reduce = 1
def Lark_StandAlone(**kwargs):
  return Lark._load_from_dict(DATA, MEMO, **kwargs)
