Module runflow.hcl2_parser
Expand source code
# The file was automatically generated by Lark v0.11.3
__version__ = "0.11.3"
#
#
# Lark Stand-alone Generator Tool
# ----------------------------------
# Generates a stand-alone LALR(1) parser with a standard lexer
#
# 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 io import open
class LarkError(Exception):
pass
class ConfigurationError(LarkError, ValueError):
pass
def assert_config(value, options, 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
class UnexpectedInput(LarkError):
#--
pos_in_stream = None
_terminals_by_name = None
def get_context(self, text, span=40):
#--
assert self.pos_in_stream is not None, self
pos = self.pos_in_stream
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, examples, token_type_match_fallback=False, use_accepts=False):
#--
assert self.state is not None, "Not supported for this exception"
if isinstance(examples, dict):
examples = examples.items()
candidate = (None, False)
for i, (label, example) in enumerate(examples):
assert not isinstance(example, STRING_TYPE)
for j, malformed in enumerate(example):
try:
parse_fn(malformed)
except UnexpectedInput as ut:
if ut.state == self.state:
if use_accepts and hasattr(self, 'accepts') 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
try:
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
except AttributeError:
pass
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):
def __init__(self, expected, state=None, terminals_by_name=None):
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
super(UnexpectedEOF, self).__init__()
def __str__(self):
message = "Unexpected end-of-input. "
message += self._format_expected(self.expected)
return message
class UnexpectedCharacters(LexError, UnexpectedInput):
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):
##
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)
super(UnexpectedCharacters, self).__init__()
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):
#--
def __init__(self, token, expected, considered_rules=None, state=None, interactive_parser=None, terminals_by_name=None, token_history=None):
##
self.line = getattr(token, 'line', '?')
self.column = getattr(token, 'column', '?')
self.pos_in_stream = getattr(token, 'pos_in_stream', 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
super(UnexpectedToken, self).__init__()
@property
def accepts(self):
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
@property
def puppet(self):
warn("UnexpectedToken.puppet attribute has been renamed to interactive_parser", DeprecationWarning)
return self.interactive_parser
class VisitError(LarkError):
#--
def __init__(self, rule, obj, orig_exc):
self.obj = obj
self.orig_exc = orig_exc
message = 'Error trying to process rule "%s":\n\n%s' % (rule, orig_exc)
super(VisitError, self).__init__(message)
import sys, re
import logging
from io import open
logger = logging.getLogger("lark")
logger.addHandler(logging.StreamHandler())
##
##
logger.setLevel(logging.CRITICAL)
if sys.version_info[0]>2:
from abc import ABC, abstractmethod
else:
from abc import ABCMeta, abstractmethod
class ABC(object): ##
__slots__ = ()
__metclass__ = ABCMeta
Py36 = (sys.version_info[:2] >= (3, 6))
NO_VALUE = object()
def classify(seq, key=None, value=None):
d = {}
for item in seq:
k = key(item) if (key is not None) else item
v = value(item) if (value is not None) else item
if k in d:
d[k].append(v)
else:
d[k] = [v]
return d
def _deserialize(data, namespace, memo):
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
class Serialize(object):
#--
def memo_serialize(self, types_to_memoize):
memo = SerializeMemoizer(types_to_memoize)
return self.serialize(memo), memo.serialize()
def serialize(self, memo=None):
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__
postprocess = getattr(self, '_serialize', None)
if postprocess:
postprocess(res, memo)
return res
@classmethod
def deserialize(cls, data, memo):
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)
postprocess = getattr(inst, '_deserialize', None)
if postprocess:
postprocess()
return inst
class SerializeMemoizer(Serialize):
#--
__serialize_fields__ = 'memoized',
def __init__(self, types_to_memoize):
self.types_to_memoize = tuple(types_to_memoize)
self.memoized = Enumerator()
def in_types(self, value):
return isinstance(value, self.types_to_memoize)
def serialize(self):
return _serialize(self.memoized.reversed(), None)
@classmethod
def deserialize(cls, data, namespace, memo):
return _deserialize(data, namespace, memo)
try:
STRING_TYPE = basestring
except NameError: ##
STRING_TYPE = str
import types
from functools import wraps, partial
from contextlib import contextmanager
Str = type(u'')
try:
classtype = types.ClassType ##
except AttributeError:
classtype = type ##
def smart_decorator(f, create_decorator):
if isinstance(f, types.FunctionType):
return wraps(f)(create_decorator(f, True))
elif isinstance(f, (classtype, type, types.BuiltinFunctionType)):
return wraps(f)(create_decorator(f, False))
elif isinstance(f, types.MethodType):
return wraps(f)(create_decorator(f.__func__, True))
elif isinstance(f, partial):
##
return wraps(f.func)(create_decorator(lambda *args, **kw: f(*args[1:], **kw), True))
else:
return create_decorator(f.__func__.__call__, True)
try:
import regex
except ImportError:
regex = None
import sre_parse
import sre_constants
categ_pattern = re.compile(r'\\p{[A-Za-z_]+}')
def get_regexp_width(expr):
if 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:
raise ValueError(expr)
from collections import OrderedDict
class Meta:
def __init__(self):
self.empty = True
class Tree(object):
#--
def __init__(self, data, children, meta=None):
self.data = data
self.children = children
self._meta = meta
@property
def meta(self):
if self._meta is None:
self._meta = Meta()
return self._meta
def __repr__(self):
return 'Tree(%r, %r)' % (self.data, self.children)
def _pretty_label(self):
return self.data
def _pretty(self, level, indent_str):
if len(self.children) == 1 and not isinstance(self.children[0], Tree):
return [indent_str*level, self._pretty_label(), '\t', '%s' % (self.children[0],), '\n']
l = [indent_str*level, self._pretty_label(), '\n']
for n in self.children:
if isinstance(n, Tree):
l += n._pretty(level+1, indent_str)
else:
l += [indent_str*(level+1), '%s' % (n,), '\n']
return l
def pretty(self, indent_str=' '):
#--
return ''.join(self._pretty(0, indent_str))
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):
return hash((self.data, tuple(self.children)))
def iter_subtrees(self):
#--
queue = [self]
subtrees = OrderedDict()
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 find_pred(self, pred):
#--
return filter(pred, self.iter_subtrees())
def find_data(self, data):
#--
return self.find_pred(lambda t: t.data == data)
from inspect import getmembers, getmro
class Discard(Exception):
#--
pass
##
class _Decoratable:
#--
@classmethod
def _apply_decorator(cls, decorator, **kwargs):
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 hasattr(cls.__dict__[name], 'vargs_applied') or hasattr(value, 'vargs_applied'):
continue
static = isinstance(cls.__dict__[name], (staticmethod, classmethod))
setattr(cls, name, decorator(value, static=static, **kwargs))
return cls
def __class_getitem__(cls, _):
return cls
class Transformer(_Decoratable):
#--
__visit_tokens__ = True ##
def __init__(self, visit_tokens=True):
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, Discard):
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, Discard):
raise
except Exception as e:
raise VisitError(token.type, token, e)
def _transform_children(self, children):
for c in children:
try:
if isinstance(c, Tree):
yield self._transform_tree(c)
elif self.__visit_tokens__ and isinstance(c, Token):
yield self._call_userfunc_token(c)
else:
yield c
except Discard:
pass
def _transform_tree(self, tree):
children = list(self._transform_children(tree.children))
return self._call_userfunc(tree, children)
def transform(self, tree):
#--
return self._transform_tree(tree)
def __mul__(self, other):
#--
return TransformerChain(self, other)
def __default__(self, data, children, meta):
#--
return Tree(data, children, meta)
def __default_token__(self, token):
#--
return token
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(object):
def __init__(self, *transformers):
self.transformers = transformers
def transform(self, tree):
for t in self.transformers:
tree = t.transform(tree)
return tree
def __mul__(self, other):
return TransformerChain(*self.transformers + (other,))
class Transformer_InPlace(Transformer):
#--
def _transform_tree(self, tree): ##
return self._call_userfunc(tree)
def transform(self, tree):
for subtree in tree.iter_subtrees():
subtree.children = list(self._transform_children(subtree.children))
return self._transform_tree(tree)
class Transformer_NonRecursive(Transformer):
#--
def transform(self, tree):
##
rev_postfix = []
q = [tree]
while q:
t = q.pop()
rev_postfix.append(t)
if isinstance(t, Tree):
q += t.children
##
stack = []
for x in reversed(rev_postfix):
if isinstance(x, Tree):
size = len(x.children)
if size:
args = stack[-size:]
del stack[-size:]
else:
args = []
stack.append(self._call_userfunc(x, args))
elif self.__visit_tokens__ and isinstance(x, Token):
stack.append(self._call_userfunc_token(x))
else:
stack.append(x)
t ,= stack ##
return t
class Transformer_InPlaceRecursive(Transformer):
#--
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):
#--
def visit(self, tree):
#--
for subtree in tree.iter_subtrees():
self._call_userfunc(subtree)
return tree
def visit_topdown(self,tree):
#--
for subtree in tree.iter_subtrees_topdown():
self._call_userfunc(subtree)
return tree
class Visitor_Recursive(VisitorBase):
#--
def visit(self, tree):
#--
for child in tree.children:
if isinstance(child, Tree):
self.visit(child)
self._call_userfunc(tree)
return tree
def visit_topdown(self,tree):
#--
self._call_userfunc(tree)
for child in tree.children:
if isinstance(child, Tree):
self.visit_topdown(child)
return tree
def visit_children_decor(func):
#--
@wraps(func)
def inner(cls, tree):
values = cls.visit_children(tree)
return func(cls, values)
return inner
class Interpreter(_Decoratable):
#--
def visit(self, tree):
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):
return [self.visit(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)
##
def _apply_decorator(obj, decorator, **kwargs):
try:
_apply = obj._apply_decorator
except AttributeError:
return decorator(obj, **kwargs)
else:
return _apply(decorator, **kwargs)
def _inline_args__func(func):
@wraps(func)
def create_decorator(_f, with_self):
if with_self:
def f(self, children):
return _f(self, *children)
else:
def f(self, children):
return _f(*children)
return f
return smart_decorator(func, create_decorator)
def inline_args(obj): ##
return _apply_decorator(obj, _inline_args__func)
def _visitor_args_func_dec(func, visit_wrapper=None, static=False):
def create_decorator(_f, with_self):
if with_self:
def f(self, *args, **kwargs):
return _f(self, *args, **kwargs)
else:
def f(self, *args, **kwargs):
return _f(*args, **kwargs)
return f
if static:
f = wraps(func)(create_decorator(func, False))
else:
f = smart_decorator(func, create_decorator)
f.vargs_applied = True
f.visit_wrapper = visit_wrapper
return f
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(children, meta) ##
def _vargs_tree(f, data, children, meta):
return f(Tree(data, children, meta))
def v_args(inline=False, meta=False, tree=False, wrapper=None):
#--
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_decorator(obj, _visitor_args_func_dec, visit_wrapper=func)
return _visitor_args_dec
class Symbol(Serialize):
__slots__ = ('name',)
is_term = NotImplemented
def __init__(self, name):
self.name = name
def __eq__(self, other):
assert isinstance(other, Symbol), other
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__)
class Terminal(Symbol):
__serialize_fields__ = 'name', 'filter_out'
is_term = True
def __init__(self, name, filter_out=False):
self.name = name
self.filter_out = filter_out
@property
def fullrepr(self):
return '%s(%r, %r)' % (type(self).__name__, self.name, self.filter_out)
class NonTerminal(Symbol):
__serialize_fields__ = 'name',
is_term = False
class RuleOptions(Serialize):
__serialize_fields__ = 'keep_all_tokens', 'expand1', 'priority', 'template_source', 'empty_indices'
def __init__(self, keep_all_tokens=False, expand1=False, priority=None, template_source=None, empty_indices=()):
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
def __init__(self, origin, expansion, order=0, alias=None, options=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 copy import copy
class Pattern(Serialize):
raw = None
type = None
def __init__(self, value, flags=(), raw=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
def to_regexp(self):
raise NotImplementedError()
def min_width(self):
raise NotImplementedError()
def max_width(self):
raise NotImplementedError()
if Py36:
##
def _get_flags(self, value):
for f in self.flags:
value = ('(?%s:%s)' % (f, value))
return value
else:
def _get_flags(self, value):
for f in self.flags:
value = ('(?%s)' % f) + value
return value
class PatternStr(Pattern):
__serialize_fields__ = 'value', 'flags'
type = "str"
def to_regexp(self):
return self._get_flags(re.escape(self.value))
@property
def min_width(self):
return len(self.value)
max_width = min_width
class PatternRE(Pattern):
__serialize_fields__ = 'value', 'flags', '_width'
type = "re"
def to_regexp(self):
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):
return self._get_width()[0]
@property
def max_width(self):
return self._get_width()[1]
class TerminalDef(Serialize):
__serialize_fields__ = 'name', 'pattern', 'priority'
__serialize_namespace__ = PatternStr, PatternRE
def __init__(self, name, pattern, priority=1):
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):
if self.name.startswith('__'): ##
return self.pattern.raw or self.name
else:
return self.name
class Token(Str):
#--
__slots__ = ('type', 'pos_in_stream', 'value', 'line', 'column', 'end_line', 'end_column', 'end_pos')
def __new__(cls, type_, value, pos_in_stream=None, line=None, column=None, end_line=None, end_column=None, end_pos=None):
try:
self = super(Token, cls).__new__(cls, value)
except UnicodeDecodeError:
value = value.decode('latin1')
self = super(Token, cls).__new__(cls, value)
self.type = type_
self.pos_in_stream = pos_in_stream
self.value = value
self.line = line
self.column = column
self.end_line = end_line
self.end_column = end_column
self.end_pos = end_pos
return self
def update(self, type_=None, value=None):
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_, value, borrow_t):
return cls(type_, value, borrow_t.pos_in_stream, 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.pos_in_stream, 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.pos_in_stream, 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, 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, mres):
self.mres = mres
def __call__(self, t):
for mre, type_from_index in self.mres:
m = mre.match(t.value)
if m:
t.type = type_from_index[m.lastindex]
break
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 _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
m = re_.match(retok.pattern.to_regexp(), s, g_regex_flags)
if m and m.group(0) == s:
unless.append(strtok)
if strtok.pattern.flags <= retok.pattern.flags:
embedded_strs.add(strtok)
if unless:
callback[retok.name] = UnlessCallback(build_mres(unless, g_regex_flags, re_, match_whole=True, use_bytes=use_bytes))
terminals = [t for t in terminals if t not in embedded_strs]
return terminals, callback
def _build_mres(terminals, max_size, g_regex_flags, match_whole, re_, use_bytes):
##
##
##
postfix = '$' if match_whole else ''
mres = []
while terminals:
pattern = u'|'.join(u'(?P<%s>%s)' % (t.name, t.pattern.to_regexp() + postfix) for t in terminals[:max_size])
if use_bytes:
pattern = pattern.encode('latin-1')
try:
mre = re_.compile(pattern, g_regex_flags)
except AssertionError: ##
return _build_mres(terminals, max_size//2, g_regex_flags, match_whole, re_, use_bytes)
mres.append((mre, {i: n for n, i in mre.groupindex.items()}))
terminals = terminals[max_size:]
return mres
def build_mres(terminals, g_regex_flags, re_, use_bytes, match_whole=False):
return _build_mres(terminals, len(terminals), g_regex_flags, match_whole, re_, use_bytes)
def _regexp_has_newline(r):
#--
return '\n' in r or '\\n' in r or '\\s' in r or '[^' in r or ('(?s' in r and '.' in r)
class Lexer(object):
#--
lex = NotImplemented
def make_lexer_state(self, text):
line_ctr = LineCounter(b'\n' if isinstance(text, bytes) else '\n')
return LexerState(text, line_ctr)
class TraditionalLexer(Lexer):
def __init__(self, conf):
terminals = list(conf.terminals)
assert all(isinstance(t, TerminalDef) for t in terminals), terminals
self.re = conf.re_module
if not conf.skip_validation:
##
for t in terminals:
try:
self.re.compile(t.pattern.to_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 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}))
##
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._mres = None
def _build(self):
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
self._mres = build_mres(terminals, self.g_regex_flags, self.re, self.use_bytes)
@property
def mres(self):
if self._mres is None:
self._build()
return self._mres
def match(self, text, pos):
for mre, type_from_index in self.mres:
m = mre.match(text, pos)
if m:
return m.group(0), type_from_index[m.lastindex]
def lex(self, state, parser_state):
with suppress(EOFError):
while True:
yield self.next_token(state, parser_state)
def next_token(self, lex_state, parser_state=None):
line_ctr = lex_state.line_ctr
while line_ctr.char_pos < len(lex_state.text):
res = self.match(lex_state.text, line_ctr.char_pos)
if not res:
allowed = {v for m, tfi in self.mres for v in tfi.values()} - self.ignore_types
if not allowed:
allowed = {"<END-OF-FILE>"}
raise UnexpectedCharacters(lex_state.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
if type_ not in self.ignore_types:
t = Token(type_, value, line_ctr.char_pos, line_ctr.line, line_ctr.column)
line_ctr.feed(value, type_ in self.newline_types)
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 isinstance(t, Token):
raise LexError("Callbacks must return a token (returned %r)" % t)
lex_state.last_token = t
return t
else:
if type_ in self.callback:
t2 = Token(type_, value, line_ctr.char_pos, line_ctr.line, line_ctr.column)
self.callback[type_](t2)
line_ctr.feed(value, type_ in self.newline_types)
##
raise EOFError(self)
class LexerState(object):
__slots__ = 'text', 'line_ctr', 'last_token'
def __init__(self, text, line_ctr, last_token=None):
self.text = text
self.line_ctr = line_ctr
self.last_token = last_token
def __eq__(self, other):
if not isinstance(other, LexerState):
return NotImplemented
return self.text is 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 ContextualLexer(Lexer):
def __init__(self, conf, states, always_accept=()):
terminals = list(conf.terminals)
terminals_by_name = conf.terminals_by_name
trad_conf = copy(conf)
trad_conf.terminals = terminals
lexer_by_tokens = {}
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 = TraditionalLexer(lexer_conf)
lexer_by_tokens[key] = lexer
self.lexers[state] = lexer
assert trad_conf.terminals is terminals
self.root_lexer = TraditionalLexer(trad_conf)
def make_lexer_state(self, text):
return self.root_lexer.make_lexer_state(text)
def lex(self, lexer_state, parser_state):
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 ##
class LexerThread(object):
#--
def __init__(self, lexer, text):
self.lexer = lexer
self.state = lexer.make_lexer_state(text)
def lex(self, parser_state):
return self.lexer.lex(self.state, parser_state)
def __copy__(self):
copied = object.__new__(LexerThread)
copied.lexer = self.lexer
copied.state = copy(self.state)
return copied
class LexerConf(Serialize):
__serialize_fields__ = 'terminals', 'ignore', 'g_regex_flags', 'use_bytes', 'lexer_type'
__serialize_namespace__ = TerminalDef,
def __init__(self, terminals, re_module, ignore=(), postlex=None, callbacks=None, g_regex_flags=0, skip_validation=False, use_bytes=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.lexer_type = None
@property
def tokens(self):
warn("LexerConf.tokens is deprecated. Use LexerConf.terminals instead", DeprecationWarning)
return self.terminals
def _deserialize(self):
self.terminals_by_name = {t.name: t for t in self.terminals}
class ParserConf(Serialize):
__serialize_fields__ = 'rules', 'start', 'parser_type'
def __init__(self, rules, callbacks, start):
assert isinstance(start, list)
self.rules = rules
self.callbacks = callbacks
self.start = start
self.parser_type = None
from functools import partial, wraps
from itertools import repeat, 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):
self.node_builder = node_builder
def __call__(self, children):
res = self.node_builder(children)
##
if isinstance(res, Tree):
res_meta = res.meta
for c in children:
if isinstance(c, Tree):
child_meta = c.meta
if not child_meta.empty:
res_meta.line = child_meta.line
res_meta.column = child_meta.column
res_meta.start_pos = child_meta.start_pos
res_meta.empty = False
break
elif isinstance(c, Token):
res_meta.line = c.line
res_meta.column = c.column
res_meta.start_pos = c.pos_in_stream
res_meta.empty = False
break
for c in reversed(children):
if isinstance(c, Tree):
child_meta = c.meta
if not child_meta.empty:
res_meta.end_line = child_meta.end_line
res_meta.end_column = child_meta.end_column
res_meta.end_pos = child_meta.end_pos
res_meta.empty = False
break
elif isinstance(c, Token):
res_meta.end_line = c.end_line
res_meta.end_column = c.end_column
res_meta.end_pos = c.end_pos
res_meta.empty = False
break
return res
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):
##
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)
to_expand = [j for j, grandchild in enumerate(child.children) if _is_ambig_tree(grandchild)]
child.expand_kids_by_index(*to_expand)
if not ambiguous:
return self.node_builder(children)
expand = [iter(child.children) if i in ambiguous else repeat(child) for i, child in enumerate(children)]
return self.tree_class('_ambig', [self.node_builder(list(f[0])) for f in product(zip(*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 ptb_inline_args(func):
@wraps(func)
def f(children):
return func(*children)
return f
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")
@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):
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),
self.propagate_positions and PropagatePositions,
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 = {}
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)
else:
if isinstance(transformer, InlineTransformer):
f = ptb_inline_args(f)
elif isinstance(transformer, Transformer_InPlace):
f = inplace_transformer(f)
except AttributeError:
f = partial(self.tree_class, 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 LALR_Parser(Serialize):
def __init__(self, parser_conf, debug=False):
analysis = LALR_Analyzer(parser_conf, debug=debug)
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):
return self._parse_table.serialize(memo)
def parse_interactive(self, lexer, start):
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_state.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[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 ParseConf(object):
__slots__ = 'parse_table', 'callbacks', 'start', 'start_state', 'end_state', 'states'
def __init__(self, parse_table, callbacks, start):
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(object):
__slots__ = 'parse_conf', 'lexer', 'state_stack', 'value_stack'
def __init__(self, parse_conf, lexer, 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):
return self.state_stack[-1]
##
def __eq__(self, other):
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 type(self)(
self.parse_conf,
self.lexer, ##
copy(self.state_stack),
deepcopy(self.value_stack),
)
def copy(self):
return copy(self)
def feed_token(self, token, is_end=False):
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)
_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 _Parser(object):
def __init__(self, parse_table, callbacks, debug=False):
self.parse_table = parse_table
self.callbacks = callbacks
self.debug = debug
def parse(self, lexer, start, 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):
##
try:
token = None
for token in state.lexer.lex(state):
state.feed_token(token)
token = Token.new_borrow_pos('$END', '', token) if token else Token('$END', '', 0, 1, 1)
return state.feed_token(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 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')
class ParseTable:
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()
rules = 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 IntParseTable(ParseTable):
@classmethod
def from_ParseTable(cls, parse_table):
enum = list(parse_table.states)
state_to_idx = {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)
def _wrap_lexer(lexer_class):
future_interface = getattr(lexer_class, '__future_interface__', False)
if future_interface:
return lexer_class
else:
class CustomLexerWrapper(Lexer):
def __init__(self, lexer_conf):
self.lexer = lexer_class(lexer_conf)
def lex(self, lexer_state, parser_state):
return self.lexer.lex(lexer_state.text)
return CustomLexerWrapper
class MakeParsingFrontend:
def __init__(self, parser_type, lexer_type):
self.parser_type = parser_type
self.lexer_type = lexer_type
def __call__(self, lexer_conf, parser_conf, options):
assert isinstance(lexer_conf, LexerConf)
assert isinstance(parser_conf, ParserConf)
parser_conf.parser_type = self.parser_type
lexer_conf.lexer_type = self.lexer_type
return ParsingFrontend(lexer_conf, parser_conf, options)
@classmethod
def deserialize(cls, data, memo, lexer_conf, callbacks, options):
parser_conf = ParserConf.deserialize(data['parser_conf'], memo)
parser = LALR_Parser.deserialize(data['parser'], memo, callbacks, options.debug)
parser_conf.callbacks = callbacks
return ParsingFrontend(lexer_conf, parser_conf, options, parser=parser)
class ParsingFrontend(Serialize):
__serialize_fields__ = 'lexer_conf', 'parser_conf', 'parser', 'options'
def __init__(self, lexer_conf, parser_conf, options, parser=None):
self.parser_conf = parser_conf
self.lexer_conf = lexer_conf
self.options = options
##
if parser: ##
self.parser = parser
else:
create_parser = {
'lalr': create_lalr_parser,
'earley': create_earley_parser,
'cyk': CYK_FrontEnd,
}[parser_conf.parser_type]
self.parser = create_parser(lexer_conf, parser_conf, options)
##
lexer_type = 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
try:
create_lexer = {
'standard': create_traditional_lexer,
'contextual': create_contextual_lexer,
}[lexer_type]
except KeyError:
assert issubclass(lexer_type, Lexer), lexer_type
self.lexer = _wrap_lexer(lexer_type)(lexer_conf)
else:
self.lexer = create_lexer(lexer_conf, self.parser, lexer_conf.postlex)
if lexer_conf.postlex:
self.lexer = PostLexConnector(self.lexer, lexer_conf.postlex)
def _verify_start(self, start=None):
if start is None:
start = self.parser_conf.start
if len(start) > 1:
raise ConfigurationError("Lark initialized with more than 1 possible start rule. Must specify which start rule to parse", start)
start ,= start
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 parse(self, text, start=None, on_error=None):
start = self._verify_start(start)
stream = text if self.skip_lexer else LexerThread(self.lexer, text)
kw = {} if on_error is None else {'on_error': on_error}
return self.parser.parse(stream, start, **kw)
def parse_interactive(self, text=None, start=None):
start = self._verify_start(start)
if self.parser_conf.parser_type != 'lalr':
raise ConfigurationError("parse_interactive() currently only works with parser='lalr' ")
stream = text if self.skip_lexer else LexerThread(self.lexer, text)
return self.parser.parse_interactive(stream, start)
def get_frontend(parser, lexer):
assert_config(parser, ('lalr', 'earley', 'cyk'))
if not isinstance(lexer, type): ##
expected = {
'lalr': ('standard', 'contextual'),
'earley': ('standard', 'dynamic', 'dynamic_complete'),
'cyk': ('standard', ),
}[parser]
assert_config(lexer, expected, 'Parser %r does not support lexer %%r, expected one of %%s' % parser)
return MakeParsingFrontend(parser, lexer)
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 make_lexer_state(self, text):
return self.lexer.make_lexer_state(text)
def lex(self, lexer_state, parser_state):
i = self.lexer.lex(lexer_state, parser_state)
return self.postlexer.process(i)
def create_traditional_lexer(lexer_conf, parser, postlex):
return TraditionalLexer(lexer_conf)
def create_contextual_lexer(lexer_conf, parser, postlex):
states = {idx:list(t.keys()) for idx, t in parser._parse_table.states.items()}
always_accept = postlex.always_accept if postlex else ()
return ContextualLexer(lexer_conf, states, always_accept=always_accept)
def create_lalr_parser(lexer_conf, parser_conf, options=None):
debug = options.debug if options else False
return LALR_Parser(parser_conf, debug=debug)
create_earley_parser = NotImplemented
CYK_FrontEnd = NotImplemented
class LarkOptions(Serialize):
#--
OPTIONS_DOC = """
**=== 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.
transformer
Applies the transformer to every parse tree (equivalent to applying it after the parse, but faster)
propagate_positions
Propagates (line, column, end_line, end_column) attributes into all tree branches.
maybe_placeholders
When True, the ``[]`` operator returns ``None`` when not matched.
When ``False``, ``[]`` behaves like the ``?`` operator, and returns no value at all.
(default= ``False``. Recommended to set to ``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
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
- "standard": Use a standard 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 standard 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`` (Python 3 only).
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 Options ===**
"""
if __doc__:
__doc__ += OPTIONS_DOC
##
##
##
##
##
##
##
##
_defaults = {
'debug': False,
'keep_all_tokens': False,
'tree_class': None,
'cache': False,
'postlex': None,
'parser': 'earley',
'lexer': 'auto',
'transformer': None,
'start': 'start',
'priority': 'auto',
'ambiguity': 'auto',
'regex': False,
'propagate_positions': False,
'lexer_callbacks': {},
'maybe_placeholders': False,
'edit_terminals': None,
'g_regex_flags': 0,
'use_bytes': False,
'import_paths': [],
'source_path': None,
}
def __init__(self, options_dict):
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'):
value = bool(value)
else:
value = default
options[name] = value
if isinstance(options['start'], STRING_TYPE):
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 o:
raise ConfigurationError("Unknown options: %s" % o.keys())
def __getattr__(self, name):
try:
return self.__dict__['options'][name]
except KeyError as e:
raise AttributeError(e)
def __setattr__(self, name, value):
assert_config(name, self.options.keys(), "%r isn't a valid option. Expected one of: %s")
self.options[name] = value
def serialize(self, memo):
return self.options
@classmethod
def deserialize(cls, data, memo):
return cls(data)
##
##
_LOAD_ALLOWED_OPTIONS = {'postlex', 'transformer', 'lexer_callbacks', 'use_bytes', 'debug', 'g_regex_flags', 'regex', 'propagate_positions', 'tree_class'}
_VALID_PRIORITY_OPTIONS = ('auto', 'normal', 'invert', None)
_VALID_AMBIGUITY_OPTIONS = ('auto', 'resolve', 'explicit', 'forest')
class PostLex(ABC):
@abstractmethod
def process(self, stream):
return stream
always_accept = ()
class Lark(Serialize):
#--
def __init__(self, grammar, **options):
self.options = LarkOptions(options)
##
use_regex = self.options.regex
if use_regex:
if 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_md5 = None
if isinstance(grammar, STRING_TYPE):
self.source_grammar = grammar
if self.options.use_bytes:
if not isascii(grammar):
raise ConfigurationError("Grammar must be ascii only, when use_bytes=True")
if sys.version_info[0] == 2 and self.options.use_bytes != 'force':
raise ConfigurationError("`use_bytes=True` may have issues on python2."
"Use `use_bytes='force'` to use it at your own risk.")
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')
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_md5 = hashlib.md5(s.encode('utf8')).hexdigest()
if isinstance(self.options.cache, STRING_TYPE):
cache_fn = self.options.cache
else:
if self.options.cache is not True:
raise ConfigurationError("cache argument must be bool or str")
##
cache_fn = tempfile.gettempdir() + '/.lark_cache_%s_%s_%s.tmp' % ((cache_md5,) + sys.version_info[:2])
if FS.exists(cache_fn):
logger.debug('Loading grammar from cache: %s', cache_fn)
##
for name in (set(options) - _LOAD_ALLOWED_OPTIONS):
del options[name]
with FS.open(cache_fn, 'rb') as f:
old_options = self.options
try:
file_md5 = f.readline().rstrip(b'\n')
cached_used_files = pickle.load(f)
if file_md5 == cache_md5.encode('utf8') and verify_used_files(cached_used_files):
cached_parser_data = pickle.load(f)
self._load(cached_parser_data, **options)
return
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 standard instead. "
"Consider using lalr with contextual instead of earley")
self.options.lexer = 'standard'
else:
self.options.lexer = 'dynamic'
elif self.options.parser == 'cyk':
self.options.lexer = 'standard'
else:
assert False, self.options.parser
lexer = self.options.lexer
if isinstance(lexer, type):
assert issubclass(lexer, Lexer) ##
else:
assert_config(lexer, ('standard', '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 standard 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))
assert self.options.ambiguity not in ('resolve__antiscore_sum', ), 'resolve__antiscore_sum has been replaced with the option priority="invert"'
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.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
##
##
##
elif self.options.priority is None:
for rule in self.rules:
if rule.options.priority is not None:
rule.options.priority = None
##
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
)
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)
with FS.open(cache_fn, 'wb') as f:
f.write(cache_md5.encode('utf8') + b'\n')
pickle.dump(used_files, f)
self.save(f)
if __doc__:
__doc__ += "\n\n" + LarkOptions.OPTIONS_DOC
__serialize_fields__ = 'parser', 'rules', 'options'
def _build_lexer(self, dont_ignore=False):
lexer_conf = self.lexer_conf
if dont_ignore:
from copy import copy
lexer_conf = copy(lexer_conf)
lexer_conf.ignore = ()
return TraditionalLexer(lexer_conf)
def _prepare_callbacks(self):
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):
self._prepare_callbacks()
parser_class = get_frontend(self.options.parser, self.options.lexer)
parser_conf = ParserConf(self.rules, self._callbacks, self.options.start)
return parser_class(self.lexer_conf, parser_conf, options=self.options)
def save(self, f):
#--
data, m = self.memo_serialize([TerminalDef, Rule])
pickle.dump({'data': data, 'memo': m}, f, protocol=pickle.HIGHEST_PROTOCOL)
@classmethod
def load(cls, f):
#--
inst = cls.__new__(cls)
return inst._load(f)
def _deserialize_lexer_conf(self, data, memo, options):
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, f, **kwargs):
if isinstance(f, dict):
d = f
else:
d = pickle.load(f)
memo = d['memo']
data = d['data']
assert memo
memo = SerializeMemoizer.deserialize(memo, {'Rule': Rule, 'TerminalDef': TerminalDef}, {})
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>'
parser_class = get_frontend(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 = parser_class.deserialize(
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, grammar_filename, rel_to=None, **options):
#--
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, package, grammar_path, search_paths=("",), **options):
#--
package = FromPackageLoader(package, search_paths)
full_path, text = package(None, grammar_path)
options.setdefault('source_path', full_path)
options.setdefault('import_paths', [])
options['import_paths'].append(package)
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, dont_ignore=False):
#--
if not hasattr(self, 'lexer') or dont_ignore:
lexer = self._build_lexer(dont_ignore)
else:
lexer = self.lexer
lexer_thread = LexerThread(lexer, text)
stream = lexer_thread.lex(None)
if self.options.postlex:
return self.options.postlex.process(stream)
return stream
def get_terminal(self, name):
#--
return self._terminals_dict[name]
def parse_interactive(self, text=None, start=None):
return self.parser.parse_interactive(text, start=start)
def parse(self, text, start=None, on_error=None):
#--
return self.parser.parse(text, start=start, on_error=on_error)
@property
def source(self):
warn("Lark.source attribute has been renamed to Lark.source_path", DeprecationWarning)
return self.source_path
@source.setter
def source(self, value):
self.source_path = value
@property
def grammar_source(self):
warn("Lark.grammar_source attribute has been renamed to Lark.source_grammar", DeprecationWarning)
return self.source_grammar
@grammar_source.setter
def grammar_source(self, value):
self.source_grammar = value
class DedentError(LarkError):
pass
class Indenter(PostLex):
def __init__(self):
self.paren_level = None
self.indent_level = None
assert self.tab_len > 0
def handle_NL(self, 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):
for token in stream:
if token.type == self.NL_type:
for t in self.handle_NL(token):
yield t
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(self.DEDENT_type, '')
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,)
import pickle, zlib, base64
DATA = (
{'parser': {'lexer_conf': {'terminals': [{'@': 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}], 'ignore': ['__IGNORE_0', '__IGNORE_1'], 'g_regex_flags': 0, 'use_bytes': False, 'lexer_type': 'contextual', '__type__': 'LexerConf'}, 'parser_conf': {'rules': [{'@': 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}], 'start': ['eval', 'module'], 'parser_type': 'lalr', '__type__': 'ParserConf'}, 'parser': {'tokens': {0: 'full_splat', 1: 'LSQB', 2: 'index', 3: '__ANON_13', 4: 'get_attr', 5: 'DOT', 6: 'attr_splat', 7: 'COLON', 8: 'RSQB', 9: 'IF', 10: '__ANON_8', 11: '__ANON_5', 12: '__ANON_1', 13: 'EQUAL', 14: 'RPAR', 15: '__ANON_7', 16: 'RBRACE', 17: 'STAR', 18: 'PLUS', 19: '$END', 20: '__ANON_14', 21: '__ANON_2', 22: '__ANON_6', 23: 'LESSTHAN', 24: '__ANON_4', 25: '__ANON_9', 26: '__ANON_12', 27: 'COMMA', 28: 'MINUS', 29: '__ANON_3', 30: 'MORETHAN', 31: '__ANON_0', 32: 'PERCENT', 33: 'QMARK', 34: 'SLASH', 35: 'LBRACE', 36: 'expression', 37: 'identifier', 38: 'get_attr_expr_term', 39: 'expr_term', 40: 'LPAR', 41: 'operation', 42: 'binary_factor_op', 43: 'binary_test_op', 44: 'heredoc_template_trim', 45: 'binary_and_op', 46: 'tuple', 47: 'heredoc_template', 48: 'full_splat_expr_term', 49: '__ANON_10', 50: 'quoted_template_expr', 51: '__int_lit_plus_9', 52: 'binary_eq_op', 53: 'binary_term_op', 54: '__ANON_11', 55: 'STRING_LIT', 56: 'int_lit', 57: 'object', 58: 'attr_splat_expr_term', 59: 'unary_op', 60: 'for_object_expr', 61: 'function_call', 62: 'BANG', 63: 'for_tuple_expr', 64: 'DECIMAL', 65: 'index_expr_term', 66: 'float_lit', 67: 'conditional', 68: 'binary_or_op', 69: '__new_line_or_comment_plus_2', 70: 'new_line_or_comment', 71: '__tuple_star_10', 72: 'kwarg', 73: 'binary_term_operator', 74: '__binary_term_op_star_7', 75: '__block_star_1', 76: 'string_lit', 77: 'object_elem', 78: 'arguments', 79: 'for_cond', 80: '__body_star_0', 81: 'attribute', 82: 'block', 83: 'body', 84: '__full_splat_star_13', 85: 'EXP_MARK', 86: 'IN', 87: 'FOR', 88: 'for_intro', 89: '__binary_eq_op_star_5', 90: 'binary_eq_operator', 91: 'binary_and_operator', 92: '__binary_and_op_star_4', 93: 'binary_or_operator', 94: '__binary_or_op_star_3', 95: '__object_star_11', 96: 'new_line_and_or_comma', 97: 'binary_factor_operator', 98: 'eval', 99: 'module', 100: '__binary_factor_op_star_8', 101: '__attr_splat_star_12', 102: 'binary_test_operator', 103: '__binary_test_op_star_6'}, 'states': {0: {0: (0, 402), 1: (0, 264), 2: (0, 376), 3: (0, 358), 4: (0, 335), 5: (0, 337), 6: (0, 322), 7: (1, {'@': 326}), 8: (1, {'@': 326}), 9: (1, {'@': 326}), 10: (1, {'@': 326}), 11: (1, {'@': 326}), 12: (1, {'@': 326}), 13: (1, {'@': 326}), 14: (1, {'@': 326}), 15: (1, {'@': 326}), 16: (1, {'@': 326}), 17: (1, {'@': 326}), 18: (1, {'@': 326}), 19: (1, {'@': 326}), 20: (1, {'@': 326}), 21: (1, {'@': 326}), 22: (1, {'@': 326}), 23: (1, {'@': 326}), 24: (1, {'@': 326}), 25: (1, {'@': 326}), 26: (1, {'@': 326}), 27: (1, {'@': 326}), 28: (1, {'@': 326}), 29: (1, {'@': 326}), 30: (1, {'@': 326}), 31: (1, {'@': 326}), 32: (1, {'@': 326}), 33: (1, {'@': 326}), 34: (1, {'@': 326})}, 1: {8: (0, 50)}, 2: {20: (1, {'@': 173}), 22: (1, {'@': 173}), 1: (1, {'@': 173}), 23: (1, {'@': 173}), 24: (1, {'@': 173}), 25: (1, {'@': 173}), 10: (1, {'@': 173}), 11: (1, {'@': 173}), 3: (1, {'@': 173}), 28: (1, {'@': 173}), 15: (1, {'@': 173}), 30: (1, {'@': 173}), 5: (1, {'@': 173}), 32: (1, {'@': 173}), 17: (1, {'@': 173}), 18: (1, {'@': 173}), 33: (1, {'@': 173}), 34: (1, {'@': 173}), 21: (1, {'@': 173}), 8: (1, {'@': 173}), 12: (1, {'@': 173}), 27: (1, {'@': 173}), 31: (1, {'@': 173}), 7: (1, {'@': 173}), 9: (1, {'@': 173}), 26: (1, {'@': 173}), 13: (1, {'@': 173}), 14: (1, {'@': 173}), 29: (1, {'@': 173}), 16: (1, {'@': 173}), 19: (1, {'@': 173})}, 3: {1: (0, 540), 35: (0, 174), 36: (0, 461), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 4: {27: (0, 463), 69: (0, 514), 12: (0, 532), 70: (0, 55), 31: (0, 524), 8: (0, 219), 21: (0, 486)}, 5: {27: (0, 105), 71: (0, 468), 70: (0, 471), 12: (0, 532), 72: (0, 472), 69: (0, 514), 26: (0, 474), 21: (0, 486), 31: (0, 524), 14: (1, {'@': 188})}, 6: {28: (1, {'@': 100}), 20: (1, {'@': 100}), 15: (1, {'@': 100}), 22: (1, {'@': 100}), 30: (1, {'@': 100}), 1: (1, {'@': 100}), 23: (1, {'@': 100}), 5: (1, {'@': 100}), 24: (1, {'@': 100}), 25: (1, {'@': 100}), 32: (1, {'@': 100}), 10: (1, {'@': 100}), 11: (1, {'@': 100}), 17: (1, {'@': 100}), 18: (1, {'@': 100}), 3: (1, {'@': 100}), 33: (1, {'@': 100}), 34: (1, {'@': 100}), 21: (1, {'@': 100}), 8: (1, {'@': 100}), 12: (1, {'@': 100}), 27: (1, {'@': 100}), 31: (1, {'@': 100}), 7: (1, {'@': 100}), 9: (1, {'@': 100}), 26: (1, {'@': 100}), 13: (1, {'@': 100}), 14: (1, {'@': 100}), 29: (1, {'@': 100}), 16: (1, {'@': 100}), 19: (1, {'@': 100})}, 7: {20: (1, {'@': 147}), 22: (1, {'@': 147}), 1: (1, {'@': 147}), 23: (1, {'@': 147}), 24: (1, {'@': 147}), 25: (1, {'@': 147}), 10: (1, {'@': 147}), 11: (1, {'@': 147}), 3: (1, {'@': 147}), 28: (1, {'@': 147}), 15: (1, {'@': 147}), 30: (1, {'@': 147}), 5: (1, {'@': 147}), 32: (1, {'@': 147}), 17: (1, {'@': 147}), 18: (1, {'@': 147}), 33: (1, {'@': 147}), 34: (1, {'@': 147}), 21: (1, {'@': 147}), 8: (1, {'@': 147}), 12: (1, {'@': 147}), 27: (1, {'@': 147}), 31: (1, {'@': 147}), 7: (1, {'@': 147}), 9: (1, {'@': 147}), 26: (1, {'@': 147}), 13: (1, {'@': 147}), 14: (1, {'@': 147}), 29: (1, {'@': 147}), 16: (1, {'@': 147}), 19: (1, {'@': 147})}, 8: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 69: (0, 514), 38: (0, 241), 39: (0, 325), 21: (0, 486), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 8: (0, 124), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 70: (0, 129), 64: (0, 511), 65: (0, 211), 66: (0, 214), 36: (0, 163), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 9: {14: (0, 360)}, 10: {69: (0, 514), 8: (0, 125), 12: (0, 532), 31: (0, 524), 21: (0, 486), 70: (0, 447)}, 11: {20: (1, {'@': 198}), 21: (1, {'@': 198}), 22: (1, {'@': 198}), 1: (1, {'@': 198}), 23: (1, {'@': 198}), 7: (1, {'@': 198}), 8: (1, {'@': 198}), 9: (1, {'@': 198}), 24: (1, {'@': 198}), 10: (1, {'@': 198}), 11: (1, {'@': 198}), 12: (1, {'@': 198}), 25: (1, {'@': 198}), 26: (1, {'@': 198}), 3: (1, {'@': 198}), 27: (1, {'@': 198}), 13: (1, {'@': 198}), 14: (1, {'@': 198}), 28: (1, {'@': 198}), 29: (1, {'@': 198}), 15: (1, {'@': 198}), 30: (1, {'@': 198}), 31: (1, {'@': 198}), 5: (1, {'@': 198}), 16: (1, {'@': 198}), 32: (1, {'@': 198}), 17: (1, {'@': 198}), 18: (1, {'@': 198}), 19: (1, {'@': 198}), 33: (1, {'@': 198}), 34: (1, {'@': 198})}, 12: {69: (0, 514), 12: (0, 532), 70: (0, 394), 31: (0, 524), 8: (0, 120), 21: (0, 486)}, 13: {18: (0, 145), 28: (0, 93), 73: (0, 356), 74: (0, 383), 20: (1, {'@': 83}), 15: (1, {'@': 83}), 22: (1, {'@': 83}), 30: (1, {'@': 83}), 23: (1, {'@': 83}), 24: (1, {'@': 83}), 25: (1, {'@': 83}), 10: (1, {'@': 83}), 11: (1, {'@': 83}), 33: (1, {'@': 83}), 21: (1, {'@': 83}), 31: (1, {'@': 83}), 8: (1, {'@': 83}), 27: (1, {'@': 83}), 12: (1, {'@': 83}), 7: (1, {'@': 83}), 9: (1, {'@': 83}), 26: (1, {'@': 83}), 13: (1, {'@': 83}), 14: (1, {'@': 83}), 29: (1, {'@': 83}), 16: (1, {'@': 83}), 19: (1, {'@': 83})}, 14: {20: (1, {'@': 152}), 22: (1, {'@': 152}), 1: (1, {'@': 152}), 23: (1, {'@': 152}), 24: (1, {'@': 152}), 25: (1, {'@': 152}), 10: (1, {'@': 152}), 11: (1, {'@': 152}), 3: (1, {'@': 152}), 28: (1, {'@': 152}), 15: (1, {'@': 152}), 30: (1, {'@': 152}), 5: (1, {'@': 152}), 32: (1, {'@': 152}), 17: (1, {'@': 152}), 18: (1, {'@': 152}), 33: (1, {'@': 152}), 34: (1, {'@': 152}), 21: (1, {'@': 152}), 8: (1, {'@': 152}), 12: (1, {'@': 152}), 27: (1, {'@': 152}), 31: (1, {'@': 152}), 7: (1, {'@': 152}), 9: (1, {'@': 152}), 26: (1, {'@': 152}), 13: (1, {'@': 152}), 14: (1, {'@': 152}), 29: (1, {'@': 152}), 16: (1, {'@': 152}), 19: (1, {'@': 152})}, 15: {16: (1, {'@': 49}), 29: (1, {'@': 49}), 31: (1, {'@': 49}), 21: (1, {'@': 49}), 12: (1, {'@': 49}), 19: (1, {'@': 49})}, 16: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 36: (0, 10), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 17: {28: (1, {'@': 57}), 40: (1, {'@': 57}), 29: (1, {'@': 57}), 1: (1, {'@': 57}), 62: (1, {'@': 57}), 55: (1, {'@': 57}), 35: (1, {'@': 57}), 16: (1, {'@': 57}), 64: (1, {'@': 57}), 49: (1, {'@': 57}), 54: (1, {'@': 57})}, 18: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 69: (0, 514), 38: (0, 241), 39: (0, 325), 21: (0, 486), 40: (0, 475), 36: (0, 97), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 70: (0, 101), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 8: (0, 106), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 19: {35: (0, 177), 75: (0, 498), 29: (0, 491), 55: (0, 492), 37: (0, 479), 13: (0, 481), 76: (0, 487)}, 20: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 38: (0, 241), 69: (0, 514), 39: (0, 325), 21: (0, 486), 40: (0, 475), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 41: (0, 183), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 70: (0, 184), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 28: (0, 523), 68: (0, 109)}, 21: {69: (0, 514), 70: (0, 54), 12: (0, 532), 31: (0, 524), 21: (0, 486), 8: (0, 171)}, 22: {1: (0, 540), 77: (0, 340), 35: (0, 174), 37: (0, 284), 38: (0, 241), 39: (0, 325), 40: (0, 475), 36: (0, 42), 16: (0, 191), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 23: {43: (0, 30), 1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 42: (0, 13), 44: (0, 224), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 60: (0, 490), 61: (0, 544), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214)}, 24: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 38: (0, 241), 69: (0, 514), 39: (0, 325), 21: (0, 486), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 36: (0, 69), 47: (0, 205), 70: (0, 71), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 25: {28: (1, {'@': 101}), 20: (1, {'@': 101}), 15: (1, {'@': 101}), 22: (1, {'@': 101}), 30: (1, {'@': 101}), 1: (1, {'@': 101}), 23: (1, {'@': 101}), 5: (1, {'@': 101}), 24: (1, {'@': 101}), 25: (1, {'@': 101}), 32: (1, {'@': 101}), 10: (1, {'@': 101}), 11: (1, {'@': 101}), 17: (1, {'@': 101}), 18: (1, {'@': 101}), 3: (1, {'@': 101}), 33: (1, {'@': 101}), 34: (1, {'@': 101}), 21: (1, {'@': 101}), 8: (1, {'@': 101}), 12: (1, {'@': 101}), 27: (1, {'@': 101}), 31: (1, {'@': 101}), 7: (1, {'@': 101}), 9: (1, {'@': 101}), 26: (1, {'@': 101}), 13: (1, {'@': 101}), 14: (1, {'@': 101}), 29: (1, {'@': 101}), 16: (1, {'@': 101}), 19: (1, {'@': 101})}, 26: {7: (0, 352)}, 27: {7: (1, {'@': 325}), 8: (1, {'@': 325}), 9: (1, {'@': 325}), 10: (1, {'@': 325}), 11: (1, {'@': 325}), 12: (1, {'@': 325}), 13: (1, {'@': 325}), 14: (1, {'@': 325}), 15: (1, {'@': 325}), 16: (1, {'@': 325}), 18: (1, {'@': 325}), 19: (1, {'@': 325}), 20: (1, {'@': 325}), 21: (1, {'@': 325}), 22: (1, {'@': 325}), 23: (1, {'@': 325}), 24: (1, {'@': 325}), 25: (1, {'@': 325}), 26: (1, {'@': 325}), 27: (1, {'@': 325}), 28: (1, {'@': 325}), 29: (1, {'@': 325}), 30: (1, {'@': 325}), 31: (1, {'@': 325}), 33: (1, {'@': 325})}, 28: {7: (1, {'@': 324}), 8: (1, {'@': 324}), 9: (1, {'@': 324}), 10: (1, {'@': 324}), 11: (1, {'@': 324}), 12: (1, {'@': 324}), 13: (1, {'@': 324}), 14: (1, {'@': 324}), 15: (1, {'@': 324}), 16: (1, {'@': 324}), 18: (1, {'@': 324}), 19: (1, {'@': 324}), 20: (1, {'@': 324}), 21: (1, {'@': 324}), 22: (1, {'@': 324}), 23: (1, {'@': 324}), 24: (1, {'@': 324}), 25: (1, {'@': 324}), 26: (1, {'@': 324}), 27: (1, {'@': 324}), 28: (1, {'@': 324}), 29: (1, {'@': 324}), 30: (1, {'@': 324}), 31: (1, {'@': 324}), 33: (1, {'@': 324})}, 29: {69: (0, 514), 70: (0, 387), 12: (0, 532), 31: (0, 524), 7: (0, 389), 21: (0, 486)}, 30: {20: (1, {'@': 320}), 21: (1, {'@': 320}), 24: (1, {'@': 320}), 25: (1, {'@': 320}), 7: (1, {'@': 320}), 9: (1, {'@': 320}), 10: (1, {'@': 320}), 11: (1, {'@': 320}), 12: (1, {'@': 320}), 8: (1, {'@': 320}), 26: (1, {'@': 320}), 27: (1, {'@': 320}), 13: (1, {'@': 320}), 14: (1, {'@': 320}), 29: (1, {'@': 320}), 31: (1, {'@': 320}), 16: (1, {'@': 320}), 19: (1, {'@': 320}), 33: (1, {'@': 320})}, 31: {20: (1, {'@': 321}), 21: (1, {'@': 321}), 24: (1, {'@': 321}), 25: (1, {'@': 321}), 7: (1, {'@': 321}), 9: (1, {'@': 321}), 10: (1, {'@': 321}), 11: (1, {'@': 321}), 12: (1, {'@': 321}), 8: (1, {'@': 321}), 26: (1, {'@': 321}), 27: (1, {'@': 321}), 13: (1, {'@': 321}), 14: (1, {'@': 321}), 29: (1, {'@': 321}), 31: (1, {'@': 321}), 16: (1, {'@': 321}), 19: (1, {'@': 321}), 33: (1, {'@': 321})}, 32: {14: (1, {'@': 332}), 21: (1, {'@': 332}), 31: (1, {'@': 332}), 12: (1, {'@': 332}), 26: (1, {'@': 332}), 27: (1, {'@': 332}), 8: (1, {'@': 332})}, 33: {7: (1, {'@': 323}), 8: (1, {'@': 323}), 9: (1, {'@': 323}), 10: (1, {'@': 323}), 11: (1, {'@': 323}), 12: (1, {'@': 323}), 13: (1, {'@': 323}), 14: (1, {'@': 323}), 15: (1, {'@': 323}), 16: (1, {'@': 323}), 19: (1, {'@': 323}), 20: (1, {'@': 323}), 21: (1, {'@': 323}), 22: (1, {'@': 323}), 23: (1, {'@': 323}), 24: (1, {'@': 323}), 25: (1, {'@': 323}), 26: (1, {'@': 323}), 27: (1, {'@': 323}), 29: (1, {'@': 323}), 30: (1, {'@': 323}), 31: (1, {'@': 323}), 33: (1, {'@': 323})}, 34: {19: (1, {'@': 42})}, 35: {69: (0, 514), 12: (0, 532), 31: (0, 524), 21: (0, 486), 70: (0, 419), 19: (1, {'@': 45})}, 36: {64: (0, 444), 1: (1, {'@': 120}), 7: (1, {'@': 120}), 8: (1, {'@': 120}), 9: (1, {'@': 120}), 10: (1, {'@': 120}), 11: (1, {'@': 120}), 12: (1, {'@': 120}), 13: (1, {'@': 120}), 14: (1, {'@': 120}), 15: (1, {'@': 120}), 5: (1, {'@': 120}), 16: (1, {'@': 120}), 17: (1, {'@': 120}), 18: (1, {'@': 120}), 19: (1, {'@': 120}), 20: (1, {'@': 120}), 21: (1, {'@': 120}), 22: (1, {'@': 120}), 23: (1, {'@': 120}), 24: (1, {'@': 120}), 25: (1, {'@': 120}), 26: (1, {'@': 120}), 3: (1, {'@': 120}), 27: (1, {'@': 120}), 28: (1, {'@': 120}), 29: (1, {'@': 120}), 30: (1, {'@': 120}), 31: (1, {'@': 120}), 32: (1, {'@': 120}), 33: (1, {'@': 120}), 34: (1, {'@': 120})}, 37: {20: (1, {'@': 317}), 21: (1, {'@': 317}), 24: (1, {'@': 317}), 7: (1, {'@': 317}), 9: (1, {'@': 317}), 8: (1, {'@': 317}), 12: (1, {'@': 317}), 26: (1, {'@': 317}), 27: (1, {'@': 317}), 13: (1, {'@': 317}), 14: (1, {'@': 317}), 29: (1, {'@': 317}), 31: (1, {'@': 317}), 16: (1, {'@': 317}), 19: (1, {'@': 317}), 33: (1, {'@': 317})}, 38: {1: (0, 540), 36: (0, 5), 35: (0, 174), 12: (0, 532), 37: (0, 268), 38: (0, 241), 69: (0, 514), 39: (0, 325), 21: (0, 486), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 78: (0, 465), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 70: (0, 476), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 14: (0, 2), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 39: {16: (0, 462)}, 40: {20: (1, {'@': 319}), 21: (1, {'@': 319}), 24: (1, {'@': 319}), 7: (1, {'@': 319}), 8: (1, {'@': 319}), 9: (1, {'@': 319}), 11: (1, {'@': 319}), 12: (1, {'@': 319}), 26: (1, {'@': 319}), 27: (1, {'@': 319}), 13: (1, {'@': 319}), 14: (1, {'@': 319}), 29: (1, {'@': 319}), 31: (1, {'@': 319}), 16: (1, {'@': 319}), 19: (1, {'@': 319}), 33: (1, {'@': 319})}, 41: {70: (0, 122), 9: (0, 147), 69: (0, 514), 12: (0, 532), 79: (0, 148), 8: (0, 157), 31: (0, 524), 21: (0, 486)}, 42: {13: (0, 309), 7: (0, 315)}, 43: {1: (0, 540), 35: (0, 174), 36: (0, 369), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 44: {69: (0, 514), 70: (0, 442), 12: (0, 532), 31: (0, 524), 14: (0, 441), 21: (0, 486)}, 45: {16: (0, 126)}, 46: {80: (0, 548), 37: (0, 19), 29: (0, 491), 81: (0, 518), 82: (0, 537), 83: (0, 339), 16: (1, {'@': 48})}, 47: {20: (1, {'@': 176}), 22: (1, {'@': 176}), 1: (1, {'@': 176}), 23: (1, {'@': 176}), 24: (1, {'@': 176}), 25: (1, {'@': 176}), 10: (1, {'@': 176}), 11: (1, {'@': 176}), 3: (1, {'@': 176}), 28: (1, {'@': 176}), 15: (1, {'@': 176}), 30: (1, {'@': 176}), 5: (1, {'@': 176}), 32: (1, {'@': 176}), 17: (1, {'@': 176}), 18: (1, {'@': 176}), 33: (1, {'@': 176}), 34: (1, {'@': 176}), 21: (1, {'@': 176}), 8: (1, {'@': 176}), 12: (1, {'@': 176}), 27: (1, {'@': 176}), 31: (1, {'@': 176}), 7: (1, {'@': 176}), 9: (1, {'@': 176}), 26: (1, {'@': 176}), 13: (1, {'@': 176}), 14: (1, {'@': 176}), 29: (1, {'@': 176}), 16: (1, {'@': 176}), 19: (1, {'@': 176})}, 48: {8: (0, 247)}, 49: {1: (0, 540), 35: (0, 174), 39: (0, 231), 37: (0, 268), 38: (0, 241), 40: (0, 475), 44: (0, 224), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 60: (0, 490), 61: (0, 544), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214)}, 50: {84: (0, 364), 1: (0, 370), 5: (0, 337), 4: (0, 379), 2: (0, 382), 20: (1, {'@': 203}), 21: (1, {'@': 203}), 22: (1, {'@': 203}), 23: (1, {'@': 203}), 7: (1, {'@': 203}), 8: (1, {'@': 203}), 9: (1, {'@': 203}), 24: (1, {'@': 203}), 10: (1, {'@': 203}), 11: (1, {'@': 203}), 12: (1, {'@': 203}), 25: (1, {'@': 203}), 26: (1, {'@': 203}), 3: (1, {'@': 203}), 27: (1, {'@': 203}), 13: (1, {'@': 203}), 14: (1, {'@': 203}), 28: (1, {'@': 203}), 29: (1, {'@': 203}), 15: (1, {'@': 203}), 30: (1, {'@': 203}), 31: (1, {'@': 203}), 16: (1, {'@': 203}), 32: (1, {'@': 203}), 17: (1, {'@': 203}), 18: (1, {'@': 203}), 19: (1, {'@': 203}), 33: (1, {'@': 203}), 34: (1, {'@': 203})}, 51: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 42: (0, 13), 44: (0, 224), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 60: (0, 490), 61: (0, 544), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 43: (0, 31)}, 52: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 52: (0, 90), 39: (0, 325), 40: (0, 475), 42: (0, 13), 43: (0, 206), 44: (0, 224), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 60: (0, 490), 61: (0, 544), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214)}, 53: {70: (0, 536), 37: (0, 278), 12: (0, 532), 69: (0, 514), 31: (0, 524), 21: (0, 486), 29: (0, 491)}, 54: {8: (0, 62)}, 55: {8: (0, 316)}, 56: {69: (0, 514), 14: (0, 6), 12: (0, 532), 70: (0, 9), 31: (0, 524), 21: (0, 486)}, 57: {8: (0, 366)}, 58: {20: (1, {'@': 155}), 22: (1, {'@': 155}), 1: (1, {'@': 155}), 23: (1, {'@': 155}), 24: (1, {'@': 155}), 25: (1, {'@': 155}), 10: (1, {'@': 155}), 11: (1, {'@': 155}), 3: (1, {'@': 155}), 28: (1, {'@': 155}), 15: (1, {'@': 155}), 30: (1, {'@': 155}), 5: (1, {'@': 155}), 32: (1, {'@': 155}), 17: (1, {'@': 155}), 18: (1, {'@': 155}), 33: (1, {'@': 155}), 34: (1, {'@': 155}), 21: (1, {'@': 155}), 8: (1, {'@': 155}), 12: (1, {'@': 155}), 27: (1, {'@': 155}), 31: (1, {'@': 155}), 7: (1, {'@': 155}), 9: (1, {'@': 155}), 26: (1, {'@': 155}), 13: (1, {'@': 155}), 14: (1, {'@': 155}), 29: (1, {'@': 155}), 16: (1, {'@': 155}), 19: (1, {'@': 155})}, 59: {16: (1, {'@': 304}), 29: (1, {'@': 304}), 31: (1, {'@': 304}), 21: (1, {'@': 304}), 12: (1, {'@': 304}), 19: (1, {'@': 304})}, 60: {85: (0, 503), 64: (0, 444), 20: (1, {'@': 122}), 22: (1, {'@': 122}), 1: (1, {'@': 122}), 23: (1, {'@': 122}), 24: (1, {'@': 122}), 25: (1, {'@': 122}), 10: (1, {'@': 122}), 11: (1, {'@': 122}), 3: (1, {'@': 122}), 28: (1, {'@': 122}), 15: (1, {'@': 122}), 30: (1, {'@': 122}), 5: (1, {'@': 122}), 32: (1, {'@': 122}), 17: (1, {'@': 122}), 18: (1, {'@': 122}), 33: (1, {'@': 122}), 34: (1, {'@': 122}), 21: (1, {'@': 122}), 8: (1, {'@': 122}), 12: (1, {'@': 122}), 27: (1, {'@': 122}), 31: (1, {'@': 122}), 7: (1, {'@': 122}), 9: (1, {'@': 122}), 26: (1, {'@': 122}), 13: (1, {'@': 122}), 14: (1, {'@': 122}), 29: (1, {'@': 122}), 16: (1, {'@': 122}), 19: (1, {'@': 122})}, 61: {14: (0, 144)}, 62: {20: (1, {'@': 196}), 21: (1, {'@': 196}), 22: (1, {'@': 196}), 1: (1, {'@': 196}), 23: (1, {'@': 196}), 7: (1, {'@': 196}), 8: (1, {'@': 196}), 9: (1, {'@': 196}), 24: (1, {'@': 196}), 10: (1, {'@': 196}), 11: (1, {'@': 196}), 12: (1, {'@': 196}), 25: (1, {'@': 196}), 26: (1, {'@': 196}), 3: (1, {'@': 196}), 27: (1, {'@': 196}), 13: (1, {'@': 196}), 14: (1, {'@': 196}), 28: (1, {'@': 196}), 29: (1, {'@': 196}), 15: (1, {'@': 196}), 30: (1, {'@': 196}), 31: (1, {'@': 196}), 5: (1, {'@': 196}), 16: (1, {'@': 196}), 32: (1, {'@': 196}), 17: (1, {'@': 196}), 18: (1, {'@': 196}), 19: (1, {'@': 196}), 33: (1, {'@': 196}), 34: (1, {'@': 196})}, 63: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 38: (0, 241), 69: (0, 514), 39: (0, 325), 21: (0, 486), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 36: (0, 194), 59: (0, 496), 70: (0, 195), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 64: {28: (1, {'@': 55}), 40: (1, {'@': 55}), 29: (1, {'@': 55}), 1: (1, {'@': 55}), 62: (1, {'@': 55}), 55: (1, {'@': 55}), 35: (1, {'@': 55}), 16: (1, {'@': 55}), 64: (1, {'@': 55}), 49: (1, {'@': 55}), 54: (1, {'@': 55})}, 65: {64: (0, 444), 20: (1, {'@': 123}), 22: (1, {'@': 123}), 1: (1, {'@': 123}), 23: (1, {'@': 123}), 24: (1, {'@': 123}), 25: (1, {'@': 123}), 10: (1, {'@': 123}), 11: (1, {'@': 123}), 3: (1, {'@': 123}), 28: (1, {'@': 123}), 15: (1, {'@': 123}), 30: (1, {'@': 123}), 5: (1, {'@': 123}), 32: (1, {'@': 123}), 17: (1, {'@': 123}), 18: (1, {'@': 123}), 33: (1, {'@': 123}), 34: (1, {'@': 123}), 21: (1, {'@': 123}), 8: (1, {'@': 123}), 12: (1, {'@': 123}), 27: (1, {'@': 123}), 31: (1, {'@': 123}), 7: (1, {'@': 123}), 9: (1, {'@': 123}), 26: (1, {'@': 123}), 13: (1, {'@': 123}), 14: (1, {'@': 123}), 29: (1, {'@': 123}), 16: (1, {'@': 123}), 19: (1, {'@': 123})}, 66: {86: (0, 180)}, 67: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 41: (0, 29), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 28: (0, 523), 68: (0, 109)}, 68: {70: (0, 175), 9: (0, 147), 69: (0, 514), 12: (0, 532), 8: (0, 327), 31: (0, 524), 79: (0, 329), 21: (0, 486)}, 69: {7: (0, 368)}, 70: {20: (1, {'@': 231}), 22: (1, {'@': 231}), 1: (1, {'@': 231}), 23: (1, {'@': 231}), 24: (1, {'@': 231}), 25: (1, {'@': 231}), 10: (1, {'@': 231}), 11: (1, {'@': 231}), 3: (1, {'@': 231}), 28: (1, {'@': 231}), 15: (1, {'@': 231}), 30: (1, {'@': 231}), 5: (1, {'@': 231}), 32: (1, {'@': 231}), 17: (1, {'@': 231}), 18: (1, {'@': 231}), 33: (1, {'@': 231}), 34: (1, {'@': 231}), 21: (1, {'@': 231}), 8: (1, {'@': 231}), 12: (1, {'@': 231}), 27: (1, {'@': 231}), 31: (1, {'@': 231}), 7: (1, {'@': 231}), 9: (1, {'@': 231}), 26: (1, {'@': 231}), 13: (1, {'@': 231}), 14: (1, {'@': 231}), 29: (1, {'@': 231}), 16: (1, {'@': 231}), 19: (1, {'@': 231})}, 71: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 36: (0, 198), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 72: {80: (0, 548), 83: (0, 493), 37: (0, 19), 29: (0, 491), 81: (0, 518), 82: (0, 537), 19: (1, {'@': 48}), 31: (1, {'@': 48}), 21: (1, {'@': 48}), 12: (1, {'@': 48})}, 73: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 69: (0, 514), 38: (0, 241), 39: (0, 325), 21: (0, 486), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 8: (0, 85), 54: (0, 483), 55: (0, 499), 29: (0, 491), 70: (0, 112), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 36: (0, 118), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 74: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 36: (0, 262), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 75: {69: (0, 514), 70: (0, 26), 12: (0, 532), 7: (0, 20), 31: (0, 524), 21: (0, 486)}, 76: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 42: (0, 13), 43: (0, 206), 44: (0, 224), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 60: (0, 490), 61: (0, 544), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 45: (0, 134)}, 77: {31: (1, {'@': 185}), 21: (1, {'@': 185}), 12: (1, {'@': 185}), 14: (1, {'@': 185})}, 78: {20: (1, {'@': 149}), 22: (1, {'@': 149}), 1: (1, {'@': 149}), 23: (1, {'@': 149}), 24: (1, {'@': 149}), 25: (1, {'@': 149}), 10: (1, {'@': 149}), 11: (1, {'@': 149}), 3: (1, {'@': 149}), 28: (1, {'@': 149}), 15: (1, {'@': 149}), 30: (1, {'@': 149}), 5: (1, {'@': 149}), 32: (1, {'@': 149}), 17: (1, {'@': 149}), 18: (1, {'@': 149}), 33: (1, {'@': 149}), 34: (1, {'@': 149}), 21: (1, {'@': 149}), 8: (1, {'@': 149}), 12: (1, {'@': 149}), 27: (1, {'@': 149}), 31: (1, {'@': 149}), 7: (1, {'@': 149}), 9: (1, {'@': 149}), 26: (1, {'@': 149}), 13: (1, {'@': 149}), 14: (1, {'@': 149}), 29: (1, {'@': 149}), 16: (1, {'@': 149}), 19: (1, {'@': 149})}, 79: {86: (0, 98)}, 80: {20: (1, {'@': 141}), 22: (1, {'@': 141}), 1: (1, {'@': 141}), 23: (1, {'@': 141}), 24: (1, {'@': 141}), 25: (1, {'@': 141}), 10: (1, {'@': 141}), 11: (1, {'@': 141}), 3: (1, {'@': 141}), 28: (1, {'@': 141}), 15: (1, {'@': 141}), 30: (1, {'@': 141}), 5: (1, {'@': 141}), 32: (1, {'@': 141}), 17: (1, {'@': 141}), 18: (1, {'@': 141}), 33: (1, {'@': 141}), 34: (1, {'@': 141}), 21: (1, {'@': 141}), 8: (1, {'@': 141}), 12: (1, {'@': 141}), 27: (1, {'@': 141}), 31: (1, {'@': 141}), 7: (1, {'@': 141}), 9: (1, {'@': 141}), 26: (1, {'@': 141}), 13: (1, {'@': 141}), 14: (1, {'@': 141}), 29: (1, {'@': 141}), 16: (1, {'@': 141}), 19: (1, {'@': 141})}, 81: {20: (1, {'@': 208}), 22: (1, {'@': 208}), 1: (1, {'@': 208}), 23: (1, {'@': 208}), 24: (1, {'@': 208}), 25: (1, {'@': 208}), 10: (1, {'@': 208}), 11: (1, {'@': 208}), 3: (1, {'@': 208}), 28: (1, {'@': 208}), 15: (1, {'@': 208}), 30: (1, {'@': 208}), 5: (1, {'@': 208}), 32: (1, {'@': 208}), 17: (1, {'@': 208}), 18: (1, {'@': 208}), 33: (1, {'@': 208}), 34: (1, {'@': 208}), 21: (1, {'@': 208}), 8: (1, {'@': 208}), 12: (1, {'@': 208}), 27: (1, {'@': 208}), 31: (1, {'@': 208}), 7: (1, {'@': 208}), 9: (1, {'@': 208}), 26: (1, {'@': 208}), 13: (1, {'@': 208}), 14: (1, {'@': 208}), 29: (1, {'@': 208}), 16: (1, {'@': 208}), 19: (1, {'@': 208})}, 82: {40: (1, {'@': 97}), 29: (1, {'@': 97}), 1: (1, {'@': 97}), 55: (1, {'@': 97}), 35: (1, {'@': 97}), 64: (1, {'@': 97}), 49: (1, {'@': 97}), 54: (1, {'@': 97})}, 83: {20: (1, {'@': 204}), 22: (1, {'@': 204}), 1: (1, {'@': 204}), 23: (1, {'@': 204}), 24: (1, {'@': 204}), 25: (1, {'@': 204}), 10: (1, {'@': 204}), 11: (1, {'@': 204}), 3: (1, {'@': 204}), 28: (1, {'@': 204}), 15: (1, {'@': 204}), 30: (1, {'@': 204}), 5: (1, {'@': 204}), 32: (1, {'@': 204}), 17: (1, {'@': 204}), 18: (1, {'@': 204}), 33: (1, {'@': 204}), 34: (1, {'@': 204}), 21: (1, {'@': 204}), 8: (1, {'@': 204}), 12: (1, {'@': 204}), 27: (1, {'@': 204}), 31: (1, {'@': 204}), 7: (1, {'@': 204}), 9: (1, {'@': 204}), 26: (1, {'@': 204}), 13: (1, {'@': 204}), 14: (1, {'@': 204}), 29: (1, {'@': 204}), 16: (1, {'@': 204}), 19: (1, {'@': 204})}, 84: {83: (0, 45), 37: (0, 19), 80: (0, 548), 69: (0, 514), 12: (0, 532), 82: (0, 537), 70: (0, 46), 29: (0, 491), 81: (0, 518), 31: (0, 524), 21: (0, 486), 16: (1, {'@': 48})}, 85: {20: (1, {'@': 146}), 22: (1, {'@': 146}), 1: (1, {'@': 146}), 23: (1, {'@': 146}), 24: (1, {'@': 146}), 25: (1, {'@': 146}), 10: (1, {'@': 146}), 11: (1, {'@': 146}), 3: (1, {'@': 146}), 28: (1, {'@': 146}), 15: (1, {'@': 146}), 30: (1, {'@': 146}), 5: (1, {'@': 146}), 32: (1, {'@': 146}), 17: (1, {'@': 146}), 18: (1, {'@': 146}), 33: (1, {'@': 146}), 34: (1, {'@': 146}), 21: (1, {'@': 146}), 8: (1, {'@': 146}), 12: (1, {'@': 146}), 27: (1, {'@': 146}), 31: (1, {'@': 146}), 7: (1, {'@': 146}), 9: (1, {'@': 146}), 26: (1, {'@': 146}), 13: (1, {'@': 146}), 14: (1, {'@': 146}), 29: (1, {'@': 146}), 16: (1, {'@': 146}), 19: (1, {'@': 146})}, 86: {20: (1, {'@': 163}), 22: (1, {'@': 163}), 1: (1, {'@': 163}), 23: (1, {'@': 163}), 24: (1, {'@': 163}), 25: (1, {'@': 163}), 10: (1, {'@': 163}), 11: (1, {'@': 163}), 3: (1, {'@': 163}), 28: (1, {'@': 163}), 15: (1, {'@': 163}), 30: (1, {'@': 163}), 5: (1, {'@': 163}), 32: (1, {'@': 163}), 17: (1, {'@': 163}), 18: (1, {'@': 163}), 33: (1, {'@': 163}), 34: (1, {'@': 163}), 21: (1, {'@': 163}), 8: (1, {'@': 163}), 12: (1, {'@': 163}), 27: (1, {'@': 163}), 31: (1, {'@': 163}), 7: (1, {'@': 163}), 9: (1, {'@': 163}), 26: (1, {'@': 163}), 13: (1, {'@': 163}), 14: (1, {'@': 163}), 29: (1, {'@': 163}), 16: (1, {'@': 163}), 19: (1, {'@': 163})}, 87: {1: (0, 540), 35: (0, 174), 37: (0, 268), 36: (0, 68), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 88: {20: (1, {'@': 172}), 22: (1, {'@': 172}), 1: (1, {'@': 172}), 23: (1, {'@': 172}), 24: (1, {'@': 172}), 25: (1, {'@': 172}), 10: (1, {'@': 172}), 11: (1, {'@': 172}), 3: (1, {'@': 172}), 28: (1, {'@': 172}), 15: (1, {'@': 172}), 30: (1, {'@': 172}), 5: (1, {'@': 172}), 32: (1, {'@': 172}), 17: (1, {'@': 172}), 18: (1, {'@': 172}), 33: (1, {'@': 172}), 34: (1, {'@': 172}), 21: (1, {'@': 172}), 8: (1, {'@': 172}), 12: (1, {'@': 172}), 27: (1, {'@': 172}), 31: (1, {'@': 172}), 7: (1, {'@': 172}), 9: (1, {'@': 172}), 26: (1, {'@': 172}), 13: (1, {'@': 172}), 14: (1, {'@': 172}), 29: (1, {'@': 172}), 16: (1, {'@': 172}), 19: (1, {'@': 172})}, 89: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 69: (0, 514), 38: (0, 241), 39: (0, 325), 21: (0, 486), 40: (0, 475), 36: (0, 97), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 8: (0, 226), 46: (0, 185), 47: (0, 205), 70: (0, 228), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 90: {20: (1, {'@': 318}), 21: (1, {'@': 318}), 24: (1, {'@': 318}), 7: (1, {'@': 318}), 8: (1, {'@': 318}), 9: (1, {'@': 318}), 11: (1, {'@': 318}), 12: (1, {'@': 318}), 26: (1, {'@': 318}), 27: (1, {'@': 318}), 13: (1, {'@': 318}), 14: (1, {'@': 318}), 29: (1, {'@': 318}), 31: (1, {'@': 318}), 16: (1, {'@': 318}), 19: (1, {'@': 318}), 33: (1, {'@': 318})}, 91: {8: (1, {'@': 301}), 31: (1, {'@': 301}), 21: (1, {'@': 301}), 12: (1, {'@': 301}), 16: (1, {'@': 301})}, 92: {7: (0, 128)}, 93: {40: (1, {'@': 89}), 29: (1, {'@': 89}), 1: (1, {'@': 89}), 55: (1, {'@': 89}), 35: (1, {'@': 89}), 64: (1, {'@': 89}), 49: (1, {'@': 89}), 54: (1, {'@': 89})}, 94: {7: (1, {'@': 322}), 8: (1, {'@': 322}), 9: (1, {'@': 322}), 10: (1, {'@': 322}), 11: (1, {'@': 322}), 12: (1, {'@': 322}), 13: (1, {'@': 322}), 14: (1, {'@': 322}), 15: (1, {'@': 322}), 16: (1, {'@': 322}), 19: (1, {'@': 322}), 20: (1, {'@': 322}), 21: (1, {'@': 322}), 22: (1, {'@': 322}), 23: (1, {'@': 322}), 24: (1, {'@': 322}), 25: (1, {'@': 322}), 26: (1, {'@': 322}), 27: (1, {'@': 322}), 29: (1, {'@': 322}), 30: (1, {'@': 322}), 31: (1, {'@': 322}), 33: (1, {'@': 322})}, 95: {20: (1, {'@': 130}), 22: (1, {'@': 130}), 1: (1, {'@': 130}), 23: (1, {'@': 130}), 24: (1, {'@': 130}), 25: (1, {'@': 130}), 10: (1, {'@': 130}), 11: (1, {'@': 130}), 3: (1, {'@': 130}), 28: (1, {'@': 130}), 15: (1, {'@': 130}), 30: (1, {'@': 130}), 5: (1, {'@': 130}), 32: (1, {'@': 130}), 17: (1, {'@': 130}), 18: (1, {'@': 130}), 33: (1, {'@': 130}), 34: (1, {'@': 130}), 21: (1, {'@': 130}), 8: (1, {'@': 130}), 12: (1, {'@': 130}), 27: (1, {'@': 130}), 31: (1, {'@': 130}), 7: (1, {'@': 130}), 9: (1, {'@': 130}), 26: (1, {'@': 130}), 13: (1, {'@': 130}), 14: (1, {'@': 130}), 29: (1, {'@': 130}), 16: (1, {'@': 130}), 19: (1, {'@': 130})}, 96: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 36: (0, 361), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 97: {14: (1, {'@': 337}), 21: (1, {'@': 337}), 31: (1, {'@': 337}), 12: (1, {'@': 337}), 26: (1, {'@': 337}), 27: (1, {'@': 337}), 8: (1, {'@': 337})}, 98: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 38: (0, 241), 69: (0, 514), 36: (0, 422), 39: (0, 325), 21: (0, 486), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 70: (0, 423), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 99: {16: (0, 454)}, 100: {20: (1, {'@': 246}), 22: (1, {'@': 246}), 1: (1, {'@': 246}), 23: (1, {'@': 246}), 24: (1, {'@': 246}), 25: (1, {'@': 246}), 10: (1, {'@': 246}), 11: (1, {'@': 246}), 3: (1, {'@': 246}), 28: (1, {'@': 246}), 15: (1, {'@': 246}), 30: (1, {'@': 246}), 5: (1, {'@': 246}), 32: (1, {'@': 246}), 17: (1, {'@': 246}), 18: (1, {'@': 246}), 33: (1, {'@': 246}), 34: (1, {'@': 246}), 21: (1, {'@': 246}), 8: (1, {'@': 246}), 12: (1, {'@': 246}), 27: (1, {'@': 246}), 31: (1, {'@': 246}), 7: (1, {'@': 246}), 9: (1, {'@': 246}), 26: (1, {'@': 246}), 13: (1, {'@': 246}), 14: (1, {'@': 246}), 29: (1, {'@': 246}), 16: (1, {'@': 246}), 19: (1, {'@': 246})}, 101: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 36: (0, 187), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 8: (0, 197), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 102: {80: (0, 548), 37: (0, 19), 29: (0, 491), 83: (0, 39), 81: (0, 518), 82: (0, 537), 16: (1, {'@': 48})}, 103: {70: (0, 193), 86: (0, 190), 69: (0, 514), 12: (0, 532), 31: (0, 524), 21: (0, 486)}, 104: {7: (0, 395)}, 105: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 69: (0, 514), 38: (0, 241), 39: (0, 325), 21: (0, 486), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 70: (0, 349), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 36: (0, 163), 67: (0, 227), 28: (0, 523), 68: (0, 109), 14: (1, {'@': 184})}, 106: {20: (1, {'@': 143}), 22: (1, {'@': 143}), 1: (1, {'@': 143}), 23: (1, {'@': 143}), 24: (1, {'@': 143}), 25: (1, {'@': 143}), 10: (1, {'@': 143}), 11: (1, {'@': 143}), 3: (1, {'@': 143}), 28: (1, {'@': 143}), 15: (1, {'@': 143}), 30: (1, {'@': 143}), 5: (1, {'@': 143}), 32: (1, {'@': 143}), 17: (1, {'@': 143}), 18: (1, {'@': 143}), 33: (1, {'@': 143}), 34: (1, {'@': 143}), 21: (1, {'@': 143}), 8: (1, {'@': 143}), 12: (1, {'@': 143}), 27: (1, {'@': 143}), 31: (1, {'@': 143}), 7: (1, {'@': 143}), 9: (1, {'@': 143}), 26: (1, {'@': 143}), 13: (1, {'@': 143}), 14: (1, {'@': 143}), 29: (1, {'@': 143}), 16: (1, {'@': 143}), 19: (1, {'@': 143})}, 107: {7: (0, 341)}, 108: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 38: (0, 241), 69: (0, 514), 39: (0, 325), 21: (0, 486), 40: (0, 475), 41: (0, 152), 42: (0, 13), 70: (0, 203), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 36: (0, 207), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 109: {20: (1, {'@': 71}), 33: (1, {'@': 71}), 8: (1, {'@': 71}), 21: (1, {'@': 71}), 12: (1, {'@': 71}), 27: (1, {'@': 71}), 31: (1, {'@': 71}), 7: (1, {'@': 71}), 9: (1, {'@': 71}), 26: (1, {'@': 71}), 13: (1, {'@': 71}), 14: (1, {'@': 71}), 29: (1, {'@': 71}), 16: (1, {'@': 71}), 19: (1, {'@': 71})}, 110: {1: (0, 540), 16: (0, 342), 87: (0, 53), 35: (0, 174), 37: (0, 284), 77: (0, 527), 38: (0, 241), 39: (0, 325), 40: (0, 475), 36: (0, 42), 41: (0, 152), 88: (0, 3), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 111: {35: (1, {'@': 308}), 55: (1, {'@': 308}), 29: (1, {'@': 308})}, 112: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 8: (0, 213), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 36: (0, 215), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 113: {28: (1, {'@': 102}), 20: (1, {'@': 102}), 15: (1, {'@': 102}), 22: (1, {'@': 102}), 30: (1, {'@': 102}), 1: (1, {'@': 102}), 23: (1, {'@': 102}), 5: (1, {'@': 102}), 24: (1, {'@': 102}), 25: (1, {'@': 102}), 32: (1, {'@': 102}), 10: (1, {'@': 102}), 11: (1, {'@': 102}), 17: (1, {'@': 102}), 18: (1, {'@': 102}), 3: (1, {'@': 102}), 33: (1, {'@': 102}), 34: (1, {'@': 102}), 21: (1, {'@': 102}), 8: (1, {'@': 102}), 12: (1, {'@': 102}), 27: (1, {'@': 102}), 31: (1, {'@': 102}), 7: (1, {'@': 102}), 9: (1, {'@': 102}), 26: (1, {'@': 102}), 13: (1, {'@': 102}), 14: (1, {'@': 102}), 29: (1, {'@': 102}), 16: (1, {'@': 102}), 19: (1, {'@': 102})}, 114: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 38: (0, 241), 69: (0, 514), 39: (0, 325), 21: (0, 486), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 70: (0, 305), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 36: (0, 118), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 115: {28: (1, {'@': 270}), 40: (1, {'@': 270}), 29: (1, {'@': 270}), 1: (1, {'@': 270}), 62: (1, {'@': 270}), 55: (1, {'@': 270}), 35: (1, {'@': 270}), 64: (1, {'@': 270}), 49: (1, {'@': 270}), 54: (1, {'@': 270}), 21: (1, {'@': 270}), 31: (1, {'@': 270}), 12: (1, {'@': 270})}, 116: {35: (1, {'@': 309}), 55: (1, {'@': 309}), 29: (1, {'@': 309})}, 117: {28: (1, {'@': 294}), 40: (1, {'@': 294}), 29: (1, {'@': 294}), 1: (1, {'@': 294}), 62: (1, {'@': 294}), 55: (1, {'@': 294}), 35: (1, {'@': 294}), 64: (1, {'@': 294}), 49: (1, {'@': 294}), 54: (1, {'@': 294}), 21: (1, {'@': 294}), 31: (1, {'@': 294}), 12: (1, {'@': 294})}, 118: {14: (1, {'@': 331}), 21: (1, {'@': 331}), 31: (1, {'@': 331}), 12: (1, {'@': 331}), 26: (1, {'@': 331}), 27: (1, {'@': 331}), 8: (1, {'@': 331})}, 119: {7: (0, 333)}, 120: {20: (1, {'@': 226}), 22: (1, {'@': 226}), 1: (1, {'@': 226}), 23: (1, {'@': 226}), 24: (1, {'@': 226}), 25: (1, {'@': 226}), 10: (1, {'@': 226}), 11: (1, {'@': 226}), 3: (1, {'@': 226}), 28: (1, {'@': 226}), 15: (1, {'@': 226}), 30: (1, {'@': 226}), 5: (1, {'@': 226}), 32: (1, {'@': 226}), 17: (1, {'@': 226}), 18: (1, {'@': 226}), 33: (1, {'@': 226}), 34: (1, {'@': 226}), 21: (1, {'@': 226}), 8: (1, {'@': 226}), 12: (1, {'@': 226}), 27: (1, {'@': 226}), 31: (1, {'@': 226}), 7: (1, {'@': 226}), 9: (1, {'@': 226}), 26: (1, {'@': 226}), 13: (1, {'@': 226}), 14: (1, {'@': 226}), 29: (1, {'@': 226}), 16: (1, {'@': 226}), 19: (1, {'@': 226})}, 121: {20: (1, {'@': 150}), 22: (1, {'@': 150}), 1: (1, {'@': 150}), 23: (1, {'@': 150}), 24: (1, {'@': 150}), 25: (1, {'@': 150}), 10: (1, {'@': 150}), 11: (1, {'@': 150}), 3: (1, {'@': 150}), 28: (1, {'@': 150}), 15: (1, {'@': 150}), 30: (1, {'@': 150}), 5: (1, {'@': 150}), 32: (1, {'@': 150}), 17: (1, {'@': 150}), 18: (1, {'@': 150}), 33: (1, {'@': 150}), 34: (1, {'@': 150}), 21: (1, {'@': 150}), 8: (1, {'@': 150}), 12: (1, {'@': 150}), 27: (1, {'@': 150}), 31: (1, {'@': 150}), 7: (1, {'@': 150}), 9: (1, {'@': 150}), 26: (1, {'@': 150}), 13: (1, {'@': 150}), 14: (1, {'@': 150}), 29: (1, {'@': 150}), 16: (1, {'@': 150}), 19: (1, {'@': 150})}, 122: {79: (0, 209), 69: (0, 514), 9: (0, 147), 12: (0, 532), 8: (0, 222), 31: (0, 524), 21: (0, 486), 70: (0, 225)}, 123: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 36: (0, 375), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 124: {20: (1, {'@': 136}), 22: (1, {'@': 136}), 1: (1, {'@': 136}), 23: (1, {'@': 136}), 24: (1, {'@': 136}), 25: (1, {'@': 136}), 10: (1, {'@': 136}), 11: (1, {'@': 136}), 3: (1, {'@': 136}), 28: (1, {'@': 136}), 15: (1, {'@': 136}), 30: (1, {'@': 136}), 5: (1, {'@': 136}), 32: (1, {'@': 136}), 17: (1, {'@': 136}), 18: (1, {'@': 136}), 33: (1, {'@': 136}), 34: (1, {'@': 136}), 21: (1, {'@': 136}), 8: (1, {'@': 136}), 12: (1, {'@': 136}), 27: (1, {'@': 136}), 31: (1, {'@': 136}), 7: (1, {'@': 136}), 9: (1, {'@': 136}), 26: (1, {'@': 136}), 13: (1, {'@': 136}), 14: (1, {'@': 136}), 29: (1, {'@': 136}), 16: (1, {'@': 136}), 19: (1, {'@': 136})}, 125: {20: (1, {'@': 195}), 21: (1, {'@': 195}), 22: (1, {'@': 195}), 1: (1, {'@': 195}), 23: (1, {'@': 195}), 7: (1, {'@': 195}), 8: (1, {'@': 195}), 9: (1, {'@': 195}), 24: (1, {'@': 195}), 10: (1, {'@': 195}), 11: (1, {'@': 195}), 12: (1, {'@': 195}), 25: (1, {'@': 195}), 26: (1, {'@': 195}), 3: (1, {'@': 195}), 27: (1, {'@': 195}), 13: (1, {'@': 195}), 14: (1, {'@': 195}), 28: (1, {'@': 195}), 29: (1, {'@': 195}), 15: (1, {'@': 195}), 30: (1, {'@': 195}), 31: (1, {'@': 195}), 5: (1, {'@': 195}), 16: (1, {'@': 195}), 32: (1, {'@': 195}), 17: (1, {'@': 195}), 18: (1, {'@': 195}), 19: (1, {'@': 195}), 33: (1, {'@': 195}), 34: (1, {'@': 195})}, 126: {69: (0, 514), 70: (0, 298), 12: (0, 532), 31: (0, 524), 21: (0, 486)}, 127: {20: (1, {'@': 144}), 22: (1, {'@': 144}), 1: (1, {'@': 144}), 23: (1, {'@': 144}), 24: (1, {'@': 144}), 25: (1, {'@': 144}), 10: (1, {'@': 144}), 11: (1, {'@': 144}), 3: (1, {'@': 144}), 28: (1, {'@': 144}), 15: (1, {'@': 144}), 30: (1, {'@': 144}), 5: (1, {'@': 144}), 32: (1, {'@': 144}), 17: (1, {'@': 144}), 18: (1, {'@': 144}), 33: (1, {'@': 144}), 34: (1, {'@': 144}), 21: (1, {'@': 144}), 8: (1, {'@': 144}), 12: (1, {'@': 144}), 27: (1, {'@': 144}), 31: (1, {'@': 144}), 7: (1, {'@': 144}), 9: (1, {'@': 144}), 26: (1, {'@': 144}), 13: (1, {'@': 144}), 14: (1, {'@': 144}), 29: (1, {'@': 144}), 16: (1, {'@': 144}), 19: (1, {'@': 144})}, 128: {69: (0, 514), 12: (0, 532), 31: (0, 524), 21: (0, 486), 70: (0, 115), 28: (1, {'@': 271}), 40: (1, {'@': 271}), 29: (1, {'@': 271}), 1: (1, {'@': 271}), 62: (1, {'@': 271}), 55: (1, {'@': 271}), 35: (1, {'@': 271}), 64: (1, {'@': 271}), 49: (1, {'@': 271}), 54: (1, {'@': 271})}, 129: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 36: (0, 32), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 8: (0, 218), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 130: {20: (1, {'@': 216}), 22: (1, {'@': 216}), 1: (1, {'@': 216}), 23: (1, {'@': 216}), 24: (1, {'@': 216}), 25: (1, {'@': 216}), 10: (1, {'@': 216}), 11: (1, {'@': 216}), 3: (1, {'@': 216}), 28: (1, {'@': 216}), 15: (1, {'@': 216}), 30: (1, {'@': 216}), 5: (1, {'@': 216}), 32: (1, {'@': 216}), 17: (1, {'@': 216}), 18: (1, {'@': 216}), 33: (1, {'@': 216}), 34: (1, {'@': 216}), 21: (1, {'@': 216}), 8: (1, {'@': 216}), 12: (1, {'@': 216}), 27: (1, {'@': 216}), 31: (1, {'@': 216}), 7: (1, {'@': 216}), 9: (1, {'@': 216}), 26: (1, {'@': 216}), 13: (1, {'@': 216}), 14: (1, {'@': 216}), 29: (1, {'@': 216}), 16: (1, {'@': 216}), 19: (1, {'@': 216})}, 131: {8: (0, 83)}, 132: {69: (0, 514), 70: (0, 15), 12: (0, 532), 31: (0, 524), 21: (0, 486), 16: (1, {'@': 50}), 29: (1, {'@': 50}), 19: (1, {'@': 50})}, 133: {20: (1, {'@': 206}), 22: (1, {'@': 206}), 1: (1, {'@': 206}), 23: (1, {'@': 206}), 24: (1, {'@': 206}), 25: (1, {'@': 206}), 10: (1, {'@': 206}), 11: (1, {'@': 206}), 3: (1, {'@': 206}), 28: (1, {'@': 206}), 15: (1, {'@': 206}), 30: (1, {'@': 206}), 5: (1, {'@': 206}), 32: (1, {'@': 206}), 17: (1, {'@': 206}), 18: (1, {'@': 206}), 33: (1, {'@': 206}), 34: (1, {'@': 206}), 21: (1, {'@': 206}), 8: (1, {'@': 206}), 12: (1, {'@': 206}), 27: (1, {'@': 206}), 31: (1, {'@': 206}), 7: (1, {'@': 206}), 9: (1, {'@': 206}), 26: (1, {'@': 206}), 13: (1, {'@': 206}), 14: (1, {'@': 206}), 29: (1, {'@': 206}), 16: (1, {'@': 206}), 19: (1, {'@': 206})}, 134: {20: (1, {'@': 316}), 21: (1, {'@': 316}), 24: (1, {'@': 316}), 7: (1, {'@': 316}), 9: (1, {'@': 316}), 8: (1, {'@': 316}), 12: (1, {'@': 316}), 26: (1, {'@': 316}), 27: (1, {'@': 316}), 13: (1, {'@': 316}), 14: (1, {'@': 316}), 29: (1, {'@': 316}), 31: (1, {'@': 316}), 16: (1, {'@': 316}), 19: (1, {'@': 316}), 33: (1, {'@': 316})}, 135: {69: (0, 514), 70: (0, 48), 8: (0, 300), 12: (0, 532), 31: (0, 524), 21: (0, 486)}, 136: {8: (0, 446)}, 137: {20: (1, {'@': 205}), 22: (1, {'@': 205}), 1: (1, {'@': 205}), 23: (1, {'@': 205}), 24: (1, {'@': 205}), 25: (1, {'@': 205}), 10: (1, {'@': 205}), 11: (1, {'@': 205}), 3: (1, {'@': 205}), 28: (1, {'@': 205}), 15: (1, {'@': 205}), 30: (1, {'@': 205}), 5: (1, {'@': 205}), 32: (1, {'@': 205}), 17: (1, {'@': 205}), 18: (1, {'@': 205}), 33: (1, {'@': 205}), 34: (1, {'@': 205}), 21: (1, {'@': 205}), 8: (1, {'@': 205}), 12: (1, {'@': 205}), 27: (1, {'@': 205}), 31: (1, {'@': 205}), 7: (1, {'@': 205}), 9: (1, {'@': 205}), 26: (1, {'@': 205}), 13: (1, {'@': 205}), 14: (1, {'@': 205}), 29: (1, {'@': 205}), 16: (1, {'@': 205}), 19: (1, {'@': 205})}, 138: {20: (1, {'@': 134}), 22: (1, {'@': 134}), 1: (1, {'@': 134}), 23: (1, {'@': 134}), 24: (1, {'@': 134}), 25: (1, {'@': 134}), 10: (1, {'@': 134}), 11: (1, {'@': 134}), 3: (1, {'@': 134}), 28: (1, {'@': 134}), 15: (1, {'@': 134}), 30: (1, {'@': 134}), 5: (1, {'@': 134}), 32: (1, {'@': 134}), 17: (1, {'@': 134}), 18: (1, {'@': 134}), 33: (1, {'@': 134}), 34: (1, {'@': 134}), 21: (1, {'@': 134}), 8: (1, {'@': 134}), 12: (1, {'@': 134}), 27: (1, {'@': 134}), 31: (1, {'@': 134}), 7: (1, {'@': 134}), 9: (1, {'@': 134}), 26: (1, {'@': 134}), 13: (1, {'@': 134}), 14: (1, {'@': 134}), 29: (1, {'@': 134}), 16: (1, {'@': 134}), 19: (1, {'@': 134})}, 139: {20: (1, {'@': 124}), 22: (1, {'@': 124}), 1: (1, {'@': 124}), 23: (1, {'@': 124}), 24: (1, {'@': 124}), 25: (1, {'@': 124}), 10: (1, {'@': 124}), 11: (1, {'@': 124}), 3: (1, {'@': 124}), 28: (1, {'@': 124}), 15: (1, {'@': 124}), 30: (1, {'@': 124}), 5: (1, {'@': 124}), 32: (1, {'@': 124}), 17: (1, {'@': 124}), 18: (1, {'@': 124}), 33: (1, {'@': 124}), 34: (1, {'@': 124}), 21: (1, {'@': 124}), 8: (1, {'@': 124}), 12: (1, {'@': 124}), 27: (1, {'@': 124}), 31: (1, {'@': 124}), 7: (1, {'@': 124}), 9: (1, {'@': 124}), 26: (1, {'@': 124}), 13: (1, {'@': 124}), 14: (1, {'@': 124}), 29: (1, {'@': 124}), 16: (1, {'@': 124}), 19: (1, {'@': 124})}, 140: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 69: (0, 514), 38: (0, 241), 39: (0, 325), 21: (0, 486), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 8: (0, 121), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 70: (0, 159), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 36: (0, 163), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 141: {79: (0, 12), 70: (0, 57), 69: (0, 514), 9: (0, 147), 12: (0, 532), 31: (0, 524), 21: (0, 486), 8: (0, 448)}, 142: {8: (0, 528)}, 143: {20: (1, {'@': 218}), 22: (1, {'@': 218}), 1: (1, {'@': 218}), 23: (1, {'@': 218}), 24: (1, {'@': 218}), 25: (1, {'@': 218}), 10: (1, {'@': 218}), 11: (1, {'@': 218}), 3: (1, {'@': 218}), 28: (1, {'@': 218}), 15: (1, {'@': 218}), 30: (1, {'@': 218}), 5: (1, {'@': 218}), 32: (1, {'@': 218}), 17: (1, {'@': 218}), 18: (1, {'@': 218}), 33: (1, {'@': 218}), 34: (1, {'@': 218}), 21: (1, {'@': 218}), 8: (1, {'@': 218}), 12: (1, {'@': 218}), 27: (1, {'@': 218}), 31: (1, {'@': 218}), 7: (1, {'@': 218}), 9: (1, {'@': 218}), 26: (1, {'@': 218}), 13: (1, {'@': 218}), 14: (1, {'@': 218}), 29: (1, {'@': 218}), 16: (1, {'@': 218}), 19: (1, {'@': 218})}, 144: {20: (1, {'@': 170}), 22: (1, {'@': 170}), 1: (1, {'@': 170}), 23: (1, {'@': 170}), 24: (1, {'@': 170}), 25: (1, {'@': 170}), 10: (1, {'@': 170}), 11: (1, {'@': 170}), 3: (1, {'@': 170}), 28: (1, {'@': 170}), 15: (1, {'@': 170}), 30: (1, {'@': 170}), 5: (1, {'@': 170}), 32: (1, {'@': 170}), 17: (1, {'@': 170}), 18: (1, {'@': 170}), 33: (1, {'@': 170}), 34: (1, {'@': 170}), 21: (1, {'@': 170}), 8: (1, {'@': 170}), 12: (1, {'@': 170}), 27: (1, {'@': 170}), 31: (1, {'@': 170}), 7: (1, {'@': 170}), 9: (1, {'@': 170}), 26: (1, {'@': 170}), 13: (1, {'@': 170}), 14: (1, {'@': 170}), 29: (1, {'@': 170}), 16: (1, {'@': 170}), 19: (1, {'@': 170})}, 145: {40: (1, {'@': 88}), 29: (1, {'@': 88}), 1: (1, {'@': 88}), 55: (1, {'@': 88}), 35: (1, {'@': 88}), 64: (1, {'@': 88}), 49: (1, {'@': 88}), 54: (1, {'@': 88})}, 146: {20: (1, {'@': 257}), 22: (1, {'@': 257}), 1: (1, {'@': 257}), 23: (1, {'@': 257}), 24: (1, {'@': 257}), 25: (1, {'@': 257}), 10: (1, {'@': 257}), 11: (1, {'@': 257}), 3: (1, {'@': 257}), 28: (1, {'@': 257}), 15: (1, {'@': 257}), 30: (1, {'@': 257}), 5: (1, {'@': 257}), 32: (1, {'@': 257}), 17: (1, {'@': 257}), 18: (1, {'@': 257}), 33: (1, {'@': 257}), 34: (1, {'@': 257}), 21: (1, {'@': 257}), 8: (1, {'@': 257}), 12: (1, {'@': 257}), 27: (1, {'@': 257}), 31: (1, {'@': 257}), 7: (1, {'@': 257}), 9: (1, {'@': 257}), 26: (1, {'@': 257}), 13: (1, {'@': 257}), 14: (1, {'@': 257}), 29: (1, {'@': 257}), 16: (1, {'@': 257}), 19: (1, {'@': 257})}, 147: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 69: (0, 514), 38: (0, 241), 39: (0, 325), 70: (0, 74), 21: (0, 486), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 36: (0, 91), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 148: {69: (0, 514), 12: (0, 532), 21: (0, 486), 31: (0, 524), 70: (0, 142), 8: (0, 130)}, 149: {16: (1, {'@': 165}), 21: (1, {'@': 165}), 12: (1, {'@': 165}), 31: (1, {'@': 165}), 27: (1, {'@': 165})}, 150: {69: (0, 514), 70: (0, 365), 12: (0, 532), 31: (0, 524), 21: (0, 486), 28: (1, {'@': 293}), 40: (1, {'@': 293}), 29: (1, {'@': 293}), 1: (1, {'@': 293}), 62: (1, {'@': 293}), 55: (1, {'@': 293}), 35: (1, {'@': 293}), 64: (1, {'@': 293}), 49: (1, {'@': 293}), 54: (1, {'@': 293})}, 151: {16: (0, 373)}, 152: {33: (0, 319), 20: (1, {'@': 69}), 8: (1, {'@': 69}), 21: (1, {'@': 69}), 12: (1, {'@': 69}), 31: (1, {'@': 69}), 27: (1, {'@': 69}), 13: (1, {'@': 69}), 7: (1, {'@': 69}), 14: (1, {'@': 69}), 26: (1, {'@': 69}), 16: (1, {'@': 69}), 9: (1, {'@': 69}), 19: (1, {'@': 69}), 29: (1, {'@': 69})}, 153: {37: (0, 297), 29: (0, 491)}, 154: {86: (0, 108)}, 155: {16: (0, 374)}, 156: {1: (0, 540), 35: (0, 174), 36: (0, 331), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 157: {20: (1, {'@': 217}), 22: (1, {'@': 217}), 1: (1, {'@': 217}), 23: (1, {'@': 217}), 24: (1, {'@': 217}), 25: (1, {'@': 217}), 10: (1, {'@': 217}), 11: (1, {'@': 217}), 3: (1, {'@': 217}), 28: (1, {'@': 217}), 15: (1, {'@': 217}), 30: (1, {'@': 217}), 5: (1, {'@': 217}), 32: (1, {'@': 217}), 17: (1, {'@': 217}), 18: (1, {'@': 217}), 33: (1, {'@': 217}), 34: (1, {'@': 217}), 21: (1, {'@': 217}), 8: (1, {'@': 217}), 12: (1, {'@': 217}), 27: (1, {'@': 217}), 31: (1, {'@': 217}), 7: (1, {'@': 217}), 9: (1, {'@': 217}), 26: (1, {'@': 217}), 13: (1, {'@': 217}), 14: (1, {'@': 217}), 29: (1, {'@': 217}), 16: (1, {'@': 217}), 19: (1, {'@': 217})}, 158: {20: (1, {'@': 251}), 22: (1, {'@': 251}), 1: (1, {'@': 251}), 23: (1, {'@': 251}), 24: (1, {'@': 251}), 25: (1, {'@': 251}), 10: (1, {'@': 251}), 11: (1, {'@': 251}), 3: (1, {'@': 251}), 28: (1, {'@': 251}), 15: (1, {'@': 251}), 30: (1, {'@': 251}), 5: (1, {'@': 251}), 32: (1, {'@': 251}), 17: (1, {'@': 251}), 18: (1, {'@': 251}), 33: (1, {'@': 251}), 34: (1, {'@': 251}), 21: (1, {'@': 251}), 8: (1, {'@': 251}), 12: (1, {'@': 251}), 27: (1, {'@': 251}), 31: (1, {'@': 251}), 7: (1, {'@': 251}), 9: (1, {'@': 251}), 26: (1, {'@': 251}), 13: (1, {'@': 251}), 14: (1, {'@': 251}), 29: (1, {'@': 251}), 16: (1, {'@': 251}), 19: (1, {'@': 251})}, 159: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 36: (0, 32), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 8: (0, 78), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 160: {16: (0, 281)}, 161: {14: (0, 25)}, 162: {9: (0, 147), 79: (0, 249), 70: (0, 255), 8: (0, 260), 69: (0, 514), 12: (0, 532), 31: (0, 524), 21: (0, 486)}, 163: {14: (1, {'@': 333}), 21: (1, {'@': 333}), 31: (1, {'@': 333}), 12: (1, {'@': 333}), 26: (1, {'@': 333}), 27: (1, {'@': 333}), 8: (1, {'@': 333})}, 164: {16: (0, 367)}, 165: {69: (0, 514), 70: (0, 371), 16: (0, 390), 12: (0, 532), 31: (0, 524), 21: (0, 486)}, 166: {8: (0, 7)}, 167: {0: (0, 402), 1: (0, 264), 2: (0, 376), 3: (0, 358), 4: (0, 335), 5: (0, 337), 6: (0, 322), 20: (1, {'@': 72}), 33: (1, {'@': 72}), 8: (1, {'@': 72}), 21: (1, {'@': 72}), 12: (1, {'@': 72}), 27: (1, {'@': 72}), 31: (1, {'@': 72}), 13: (1, {'@': 72}), 14: (1, {'@': 72}), 29: (1, {'@': 72}), 7: (1, {'@': 72}), 9: (1, {'@': 72}), 16: (1, {'@': 72}), 19: (1, {'@': 72}), 26: (1, {'@': 72})}, 168: {20: (1, {'@': 148}), 22: (1, {'@': 148}), 1: (1, {'@': 148}), 23: (1, {'@': 148}), 24: (1, {'@': 148}), 25: (1, {'@': 148}), 10: (1, {'@': 148}), 11: (1, {'@': 148}), 3: (1, {'@': 148}), 28: (1, {'@': 148}), 15: (1, {'@': 148}), 30: (1, {'@': 148}), 5: (1, {'@': 148}), 32: (1, {'@': 148}), 17: (1, {'@': 148}), 18: (1, {'@': 148}), 33: (1, {'@': 148}), 34: (1, {'@': 148}), 21: (1, {'@': 148}), 8: (1, {'@': 148}), 12: (1, {'@': 148}), 27: (1, {'@': 148}), 31: (1, {'@': 148}), 7: (1, {'@': 148}), 9: (1, {'@': 148}), 26: (1, {'@': 148}), 13: (1, {'@': 148}), 14: (1, {'@': 148}), 29: (1, {'@': 148}), 16: (1, {'@': 148}), 19: (1, {'@': 148})}, 169: {20: (1, {'@': 156}), 22: (1, {'@': 156}), 1: (1, {'@': 156}), 23: (1, {'@': 156}), 24: (1, {'@': 156}), 25: (1, {'@': 156}), 10: (1, {'@': 156}), 11: (1, {'@': 156}), 3: (1, {'@': 156}), 28: (1, {'@': 156}), 15: (1, {'@': 156}), 30: (1, {'@': 156}), 5: (1, {'@': 156}), 32: (1, {'@': 156}), 17: (1, {'@': 156}), 18: (1, {'@': 156}), 33: (1, {'@': 156}), 34: (1, {'@': 156}), 21: (1, {'@': 156}), 8: (1, {'@': 156}), 12: (1, {'@': 156}), 27: (1, {'@': 156}), 31: (1, {'@': 156}), 7: (1, {'@': 156}), 9: (1, {'@': 156}), 26: (1, {'@': 156}), 13: (1, {'@': 156}), 14: (1, {'@': 156}), 29: (1, {'@': 156}), 16: (1, {'@': 156}), 19: (1, {'@': 156})}, 170: {20: (1, {'@': 249}), 22: (1, {'@': 249}), 1: (1, {'@': 249}), 23: (1, {'@': 249}), 24: (1, {'@': 249}), 25: (1, {'@': 249}), 10: (1, {'@': 249}), 11: (1, {'@': 249}), 3: (1, {'@': 249}), 28: (1, {'@': 249}), 15: (1, {'@': 249}), 30: (1, {'@': 249}), 5: (1, {'@': 249}), 32: (1, {'@': 249}), 17: (1, {'@': 249}), 18: (1, {'@': 249}), 33: (1, {'@': 249}), 34: (1, {'@': 249}), 21: (1, {'@': 249}), 8: (1, {'@': 249}), 12: (1, {'@': 249}), 27: (1, {'@': 249}), 31: (1, {'@': 249}), 7: (1, {'@': 249}), 9: (1, {'@': 249}), 26: (1, {'@': 249}), 13: (1, {'@': 249}), 14: (1, {'@': 249}), 29: (1, {'@': 249}), 16: (1, {'@': 249}), 19: (1, {'@': 249})}, 171: {20: (1, {'@': 197}), 21: (1, {'@': 197}), 22: (1, {'@': 197}), 1: (1, {'@': 197}), 23: (1, {'@': 197}), 7: (1, {'@': 197}), 8: (1, {'@': 197}), 9: (1, {'@': 197}), 24: (1, {'@': 197}), 10: (1, {'@': 197}), 11: (1, {'@': 197}), 12: (1, {'@': 197}), 25: (1, {'@': 197}), 26: (1, {'@': 197}), 3: (1, {'@': 197}), 27: (1, {'@': 197}), 13: (1, {'@': 197}), 14: (1, {'@': 197}), 28: (1, {'@': 197}), 29: (1, {'@': 197}), 15: (1, {'@': 197}), 30: (1, {'@': 197}), 31: (1, {'@': 197}), 5: (1, {'@': 197}), 16: (1, {'@': 197}), 32: (1, {'@': 197}), 17: (1, {'@': 197}), 18: (1, {'@': 197}), 19: (1, {'@': 197}), 33: (1, {'@': 197}), 34: (1, {'@': 197})}, 172: {27: (0, 201), 31: (1, {'@': 181}), 21: (1, {'@': 181}), 12: (1, {'@': 181}), 14: (1, {'@': 181})}, 173: {20: (1, {'@': 254}), 22: (1, {'@': 254}), 1: (1, {'@': 254}), 23: (1, {'@': 254}), 24: (1, {'@': 254}), 25: (1, {'@': 254}), 10: (1, {'@': 254}), 11: (1, {'@': 254}), 3: (1, {'@': 254}), 28: (1, {'@': 254}), 15: (1, {'@': 254}), 30: (1, {'@': 254}), 5: (1, {'@': 254}), 32: (1, {'@': 254}), 17: (1, {'@': 254}), 18: (1, {'@': 254}), 33: (1, {'@': 254}), 34: (1, {'@': 254}), 21: (1, {'@': 254}), 8: (1, {'@': 254}), 12: (1, {'@': 254}), 27: (1, {'@': 254}), 31: (1, {'@': 254}), 7: (1, {'@': 254}), 9: (1, {'@': 254}), 26: (1, {'@': 254}), 13: (1, {'@': 254}), 14: (1, {'@': 254}), 29: (1, {'@': 254}), 16: (1, {'@': 254}), 19: (1, {'@': 254})}, 174: {1: (0, 540), 87: (0, 53), 35: (0, 174), 12: (0, 532), 37: (0, 284), 38: (0, 241), 69: (0, 514), 39: (0, 325), 21: (0, 486), 40: (0, 475), 36: (0, 42), 88: (0, 43), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 70: (0, 110), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 77: (0, 229), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 16: (0, 86), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 175: {79: (0, 270), 69: (0, 514), 9: (0, 147), 12: (0, 532), 31: (0, 524), 70: (0, 273), 21: (0, 486), 8: (0, 275)}, 176: {70: (0, 4), 69: (0, 514), 12: (0, 532), 27: (0, 89), 8: (0, 95), 31: (0, 524), 21: (0, 486)}, 177: {37: (0, 19), 83: (0, 99), 80: (0, 548), 69: (0, 514), 12: (0, 532), 82: (0, 537), 29: (0, 491), 81: (0, 518), 70: (0, 102), 31: (0, 524), 21: (0, 486), 16: (1, {'@': 48})}, 178: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 42: (0, 13), 43: (0, 206), 44: (0, 224), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 45: (0, 37), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 60: (0, 490), 61: (0, 544), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214)}, 179: {20: (1, {'@': 160}), 22: (1, {'@': 160}), 1: (1, {'@': 160}), 23: (1, {'@': 160}), 24: (1, {'@': 160}), 25: (1, {'@': 160}), 10: (1, {'@': 160}), 11: (1, {'@': 160}), 3: (1, {'@': 160}), 28: (1, {'@': 160}), 15: (1, {'@': 160}), 30: (1, {'@': 160}), 5: (1, {'@': 160}), 32: (1, {'@': 160}), 17: (1, {'@': 160}), 18: (1, {'@': 160}), 33: (1, {'@': 160}), 34: (1, {'@': 160}), 21: (1, {'@': 160}), 8: (1, {'@': 160}), 12: (1, {'@': 160}), 27: (1, {'@': 160}), 31: (1, {'@': 160}), 7: (1, {'@': 160}), 9: (1, {'@': 160}), 26: (1, {'@': 160}), 13: (1, {'@': 160}), 14: (1, {'@': 160}), 29: (1, {'@': 160}), 16: (1, {'@': 160}), 19: (1, {'@': 160})}, 180: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 38: (0, 241), 69: (0, 514), 39: (0, 325), 21: (0, 486), 40: (0, 475), 36: (0, 517), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 70: (0, 519), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 181: {70: (0, 437), 69: (0, 514), 12: (0, 532), 31: (0, 524), 21: (0, 486), 28: (1, {'@': 283}), 40: (1, {'@': 283}), 29: (1, {'@': 283}), 1: (1, {'@': 283}), 62: (1, {'@': 283}), 55: (1, {'@': 283}), 35: (1, {'@': 283}), 64: (1, {'@': 283}), 49: (1, {'@': 283}), 54: (1, {'@': 283})}, 182: {69: (0, 514), 9: (0, 147), 12: (0, 532), 31: (0, 524), 16: (0, 397), 79: (0, 399), 70: (0, 404), 21: (0, 486)}, 183: {20: (1, {'@': 68}), 8: (1, {'@': 68}), 21: (1, {'@': 68}), 12: (1, {'@': 68}), 31: (1, {'@': 68}), 27: (1, {'@': 68}), 13: (1, {'@': 68}), 7: (1, {'@': 68}), 14: (1, {'@': 68}), 26: (1, {'@': 68}), 16: (1, {'@': 68}), 9: (1, {'@': 68}), 19: (1, {'@': 68}), 29: (1, {'@': 68})}, 184: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 41: (0, 482), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 28: (0, 523), 68: (0, 109)}, 185: {28: (1, {'@': 106}), 20: (1, {'@': 106}), 15: (1, {'@': 106}), 22: (1, {'@': 106}), 30: (1, {'@': 106}), 1: (1, {'@': 106}), 23: (1, {'@': 106}), 5: (1, {'@': 106}), 24: (1, {'@': 106}), 25: (1, {'@': 106}), 32: (1, {'@': 106}), 10: (1, {'@': 106}), 11: (1, {'@': 106}), 17: (1, {'@': 106}), 18: (1, {'@': 106}), 3: (1, {'@': 106}), 33: (1, {'@': 106}), 34: (1, {'@': 106}), 21: (1, {'@': 106}), 8: (1, {'@': 106}), 12: (1, {'@': 106}), 27: (1, {'@': 106}), 31: (1, {'@': 106}), 7: (1, {'@': 106}), 9: (1, {'@': 106}), 26: (1, {'@': 106}), 13: (1, {'@': 106}), 14: (1, {'@': 106}), 29: (1, {'@': 106}), 16: (1, {'@': 106}), 19: (1, {'@': 106})}, 186: {20: (1, {'@': 213}), 22: (1, {'@': 213}), 1: (1, {'@': 213}), 23: (1, {'@': 213}), 24: (1, {'@': 213}), 25: (1, {'@': 213}), 10: (1, {'@': 213}), 11: (1, {'@': 213}), 3: (1, {'@': 213}), 28: (1, {'@': 213}), 15: (1, {'@': 213}), 30: (1, {'@': 213}), 5: (1, {'@': 213}), 32: (1, {'@': 213}), 17: (1, {'@': 213}), 18: (1, {'@': 213}), 33: (1, {'@': 213}), 34: (1, {'@': 213}), 21: (1, {'@': 213}), 8: (1, {'@': 213}), 12: (1, {'@': 213}), 27: (1, {'@': 213}), 31: (1, {'@': 213}), 7: (1, {'@': 213}), 9: (1, {'@': 213}), 26: (1, {'@': 213}), 13: (1, {'@': 213}), 14: (1, {'@': 213}), 29: (1, {'@': 213}), 16: (1, {'@': 213}), 19: (1, {'@': 213})}, 187: {14: (1, {'@': 336}), 21: (1, {'@': 336}), 31: (1, {'@': 336}), 12: (1, {'@': 336}), 26: (1, {'@': 336}), 27: (1, {'@': 336}), 8: (1, {'@': 336})}, 188: {69: (0, 514), 70: (0, 509), 12: (0, 532), 31: (0, 524), 21: (0, 486)}, 189: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 38: (0, 241), 69: (0, 514), 39: (0, 325), 21: (0, 486), 40: (0, 475), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 41: (0, 263), 47: (0, 205), 70: (0, 285), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 28: (0, 523), 68: (0, 109)}, 190: {1: (0, 540), 35: (0, 174), 70: (0, 530), 12: (0, 532), 37: (0, 268), 38: (0, 241), 69: (0, 514), 36: (0, 534), 39: (0, 325), 21: (0, 486), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 191: {20: (1, {'@': 154}), 22: (1, {'@': 154}), 1: (1, {'@': 154}), 23: (1, {'@': 154}), 24: (1, {'@': 154}), 25: (1, {'@': 154}), 10: (1, {'@': 154}), 11: (1, {'@': 154}), 3: (1, {'@': 154}), 28: (1, {'@': 154}), 15: (1, {'@': 154}), 30: (1, {'@': 154}), 5: (1, {'@': 154}), 32: (1, {'@': 154}), 17: (1, {'@': 154}), 18: (1, {'@': 154}), 33: (1, {'@': 154}), 34: (1, {'@': 154}), 21: (1, {'@': 154}), 8: (1, {'@': 154}), 12: (1, {'@': 154}), 27: (1, {'@': 154}), 31: (1, {'@': 154}), 7: (1, {'@': 154}), 9: (1, {'@': 154}), 26: (1, {'@': 154}), 13: (1, {'@': 154}), 14: (1, {'@': 154}), 29: (1, {'@': 154}), 16: (1, {'@': 154}), 19: (1, {'@': 154})}, 192: {31: (1, {'@': 179}), 21: (1, {'@': 179}), 12: (1, {'@': 179}), 14: (1, {'@': 179})}, 193: {69: (0, 514), 86: (0, 495), 70: (0, 480), 12: (0, 532), 31: (0, 524), 21: (0, 486)}, 194: {7: (0, 469)}, 195: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 36: (0, 512), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 196: {69: (0, 514), 12: (0, 532), 31: (0, 524), 70: (0, 345), 21: (0, 486), 28: (1, {'@': 277}), 40: (1, {'@': 277}), 29: (1, {'@': 277}), 1: (1, {'@': 277}), 62: (1, {'@': 277}), 55: (1, {'@': 277}), 35: (1, {'@': 277}), 64: (1, {'@': 277}), 49: (1, {'@': 277}), 54: (1, {'@': 277})}, 197: {20: (1, {'@': 142}), 22: (1, {'@': 142}), 1: (1, {'@': 142}), 23: (1, {'@': 142}), 24: (1, {'@': 142}), 25: (1, {'@': 142}), 10: (1, {'@': 142}), 11: (1, {'@': 142}), 3: (1, {'@': 142}), 28: (1, {'@': 142}), 15: (1, {'@': 142}), 30: (1, {'@': 142}), 5: (1, {'@': 142}), 32: (1, {'@': 142}), 17: (1, {'@': 142}), 18: (1, {'@': 142}), 33: (1, {'@': 142}), 34: (1, {'@': 142}), 21: (1, {'@': 142}), 8: (1, {'@': 142}), 12: (1, {'@': 142}), 27: (1, {'@': 142}), 31: (1, {'@': 142}), 7: (1, {'@': 142}), 9: (1, {'@': 142}), 26: (1, {'@': 142}), 13: (1, {'@': 142}), 14: (1, {'@': 142}), 29: (1, {'@': 142}), 16: (1, {'@': 142}), 19: (1, {'@': 142})}, 198: {7: (0, 464)}, 199: {28: (1, {'@': 296}), 40: (1, {'@': 296}), 29: (1, {'@': 296}), 1: (1, {'@': 296}), 62: (1, {'@': 296}), 55: (1, {'@': 296}), 35: (1, {'@': 296}), 64: (1, {'@': 296}), 49: (1, {'@': 296}), 54: (1, {'@': 296}), 21: (1, {'@': 296}), 31: (1, {'@': 296}), 12: (1, {'@': 296})}, 200: {16: (1, {'@': 53}), 29: (1, {'@': 53}), 31: (1, {'@': 53}), 21: (1, {'@': 53}), 12: (1, {'@': 53}), 19: (1, {'@': 53})}, 201: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 38: (0, 241), 69: (0, 514), 39: (0, 325), 21: (0, 486), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 70: (0, 277), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 36: (0, 212), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 202: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 36: (0, 506), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 8: (0, 538), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 203: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 36: (0, 529), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 204: {28: (1, {'@': 115}), 20: (1, {'@': 115}), 15: (1, {'@': 115}), 22: (1, {'@': 115}), 30: (1, {'@': 115}), 1: (1, {'@': 115}), 23: (1, {'@': 115}), 5: (1, {'@': 115}), 24: (1, {'@': 115}), 25: (1, {'@': 115}), 32: (1, {'@': 115}), 10: (1, {'@': 115}), 11: (1, {'@': 115}), 17: (1, {'@': 115}), 18: (1, {'@': 115}), 3: (1, {'@': 115}), 33: (1, {'@': 115}), 34: (1, {'@': 115}), 21: (1, {'@': 115}), 8: (1, {'@': 115}), 12: (1, {'@': 115}), 27: (1, {'@': 115}), 31: (1, {'@': 115}), 7: (1, {'@': 115}), 9: (1, {'@': 115}), 26: (1, {'@': 115}), 13: (1, {'@': 115}), 14: (1, {'@': 115}), 29: (1, {'@': 115}), 16: (1, {'@': 115}), 19: (1, {'@': 115})}, 205: {28: (1, {'@': 112}), 20: (1, {'@': 112}), 15: (1, {'@': 112}), 22: (1, {'@': 112}), 30: (1, {'@': 112}), 1: (1, {'@': 112}), 23: (1, {'@': 112}), 5: (1, {'@': 112}), 24: (1, {'@': 112}), 25: (1, {'@': 112}), 32: (1, {'@': 112}), 10: (1, {'@': 112}), 11: (1, {'@': 112}), 17: (1, {'@': 112}), 18: (1, {'@': 112}), 3: (1, {'@': 112}), 33: (1, {'@': 112}), 34: (1, {'@': 112}), 21: (1, {'@': 112}), 8: (1, {'@': 112}), 12: (1, {'@': 112}), 27: (1, {'@': 112}), 31: (1, {'@': 112}), 7: (1, {'@': 112}), 9: (1, {'@': 112}), 26: (1, {'@': 112}), 13: (1, {'@': 112}), 14: (1, {'@': 112}), 29: (1, {'@': 112}), 16: (1, {'@': 112}), 19: (1, {'@': 112})}, 206: {10: (0, 82), 25: (0, 308), 89: (0, 208), 90: (0, 23), 24: (1, {'@': 79}), 20: (1, {'@': 79}), 33: (1, {'@': 79}), 11: (1, {'@': 79}), 21: (1, {'@': 79}), 31: (1, {'@': 79}), 8: (1, {'@': 79}), 27: (1, {'@': 79}), 12: (1, {'@': 79}), 7: (1, {'@': 79}), 9: (1, {'@': 79}), 26: (1, {'@': 79}), 13: (1, {'@': 79}), 14: (1, {'@': 79}), 29: (1, {'@': 79}), 16: (1, {'@': 79}), 19: (1, {'@': 79})}, 207: {7: (0, 313)}, 208: {90: (0, 51), 10: (0, 82), 25: (0, 308), 24: (1, {'@': 78}), 20: (1, {'@': 78}), 33: (1, {'@': 78}), 11: (1, {'@': 78}), 21: (1, {'@': 78}), 31: (1, {'@': 78}), 8: (1, {'@': 78}), 27: (1, {'@': 78}), 12: (1, {'@': 78}), 7: (1, {'@': 78}), 9: (1, {'@': 78}), 26: (1, {'@': 78}), 13: (1, {'@': 78}), 14: (1, {'@': 78}), 29: (1, {'@': 78}), 16: (1, {'@': 78}), 19: (1, {'@': 78})}, 209: {69: (0, 514), 12: (0, 532), 8: (0, 539), 70: (0, 542), 31: (0, 524), 21: (0, 486)}, 210: {20: (1, {'@': 139}), 22: (1, {'@': 139}), 1: (1, {'@': 139}), 23: (1, {'@': 139}), 24: (1, {'@': 139}), 25: (1, {'@': 139}), 10: (1, {'@': 139}), 11: (1, {'@': 139}), 3: (1, {'@': 139}), 28: (1, {'@': 139}), 15: (1, {'@': 139}), 30: (1, {'@': 139}), 5: (1, {'@': 139}), 32: (1, {'@': 139}), 17: (1, {'@': 139}), 18: (1, {'@': 139}), 33: (1, {'@': 139}), 34: (1, {'@': 139}), 21: (1, {'@': 139}), 8: (1, {'@': 139}), 12: (1, {'@': 139}), 27: (1, {'@': 139}), 31: (1, {'@': 139}), 7: (1, {'@': 139}), 9: (1, {'@': 139}), 26: (1, {'@': 139}), 13: (1, {'@': 139}), 14: (1, {'@': 139}), 29: (1, {'@': 139}), 16: (1, {'@': 139}), 19: (1, {'@': 139})}, 211: {28: (1, {'@': 109}), 20: (1, {'@': 109}), 15: (1, {'@': 109}), 22: (1, {'@': 109}), 30: (1, {'@': 109}), 1: (1, {'@': 109}), 23: (1, {'@': 109}), 5: (1, {'@': 109}), 24: (1, {'@': 109}), 25: (1, {'@': 109}), 32: (1, {'@': 109}), 10: (1, {'@': 109}), 11: (1, {'@': 109}), 17: (1, {'@': 109}), 18: (1, {'@': 109}), 3: (1, {'@': 109}), 33: (1, {'@': 109}), 34: (1, {'@': 109}), 21: (1, {'@': 109}), 8: (1, {'@': 109}), 12: (1, {'@': 109}), 27: (1, {'@': 109}), 31: (1, {'@': 109}), 7: (1, {'@': 109}), 9: (1, {'@': 109}), 26: (1, {'@': 109}), 13: (1, {'@': 109}), 14: (1, {'@': 109}), 29: (1, {'@': 109}), 16: (1, {'@': 109}), 19: (1, {'@': 109})}, 212: {14: (1, {'@': 335}), 21: (1, {'@': 335}), 31: (1, {'@': 335}), 12: (1, {'@': 335}), 26: (1, {'@': 335}), 27: (1, {'@': 335}), 8: (1, {'@': 335})}, 213: {20: (1, {'@': 145}), 22: (1, {'@': 145}), 1: (1, {'@': 145}), 23: (1, {'@': 145}), 24: (1, {'@': 145}), 25: (1, {'@': 145}), 10: (1, {'@': 145}), 11: (1, {'@': 145}), 3: (1, {'@': 145}), 28: (1, {'@': 145}), 15: (1, {'@': 145}), 30: (1, {'@': 145}), 5: (1, {'@': 145}), 32: (1, {'@': 145}), 17: (1, {'@': 145}), 18: (1, {'@': 145}), 33: (1, {'@': 145}), 34: (1, {'@': 145}), 21: (1, {'@': 145}), 8: (1, {'@': 145}), 12: (1, {'@': 145}), 27: (1, {'@': 145}), 31: (1, {'@': 145}), 7: (1, {'@': 145}), 9: (1, {'@': 145}), 26: (1, {'@': 145}), 13: (1, {'@': 145}), 14: (1, {'@': 145}), 29: (1, {'@': 145}), 16: (1, {'@': 145}), 19: (1, {'@': 145})}, 214: {28: (1, {'@': 103}), 20: (1, {'@': 103}), 15: (1, {'@': 103}), 22: (1, {'@': 103}), 30: (1, {'@': 103}), 1: (1, {'@': 103}), 23: (1, {'@': 103}), 5: (1, {'@': 103}), 24: (1, {'@': 103}), 25: (1, {'@': 103}), 32: (1, {'@': 103}), 10: (1, {'@': 103}), 11: (1, {'@': 103}), 17: (1, {'@': 103}), 18: (1, {'@': 103}), 3: (1, {'@': 103}), 33: (1, {'@': 103}), 34: (1, {'@': 103}), 21: (1, {'@': 103}), 8: (1, {'@': 103}), 12: (1, {'@': 103}), 27: (1, {'@': 103}), 31: (1, {'@': 103}), 7: (1, {'@': 103}), 9: (1, {'@': 103}), 26: (1, {'@': 103}), 13: (1, {'@': 103}), 14: (1, {'@': 103}), 29: (1, {'@': 103}), 16: (1, {'@': 103}), 19: (1, {'@': 103})}, 215: {14: (1, {'@': 330}), 21: (1, {'@': 330}), 31: (1, {'@': 330}), 12: (1, {'@': 330}), 26: (1, {'@': 330}), 27: (1, {'@': 330}), 8: (1, {'@': 330})}, 216: {91: (0, 52), 92: (0, 436), 11: (0, 424), 24: (1, {'@': 77}), 20: (1, {'@': 77}), 33: (1, {'@': 77}), 8: (1, {'@': 77}), 21: (1, {'@': 77}), 12: (1, {'@': 77}), 31: (1, {'@': 77}), 27: (1, {'@': 77}), 13: (1, {'@': 77}), 14: (1, {'@': 77}), 29: (1, {'@': 77}), 7: (1, {'@': 77}), 9: (1, {'@': 77}), 16: (1, {'@': 77}), 19: (1, {'@': 77}), 26: (1, {'@': 77})}, 217: {20: (1, {'@': 168}), 22: (1, {'@': 168}), 1: (1, {'@': 168}), 23: (1, {'@': 168}), 24: (1, {'@': 168}), 25: (1, {'@': 168}), 10: (1, {'@': 168}), 11: (1, {'@': 168}), 3: (1, {'@': 168}), 28: (1, {'@': 168}), 15: (1, {'@': 168}), 30: (1, {'@': 168}), 5: (1, {'@': 168}), 32: (1, {'@': 168}), 17: (1, {'@': 168}), 18: (1, {'@': 168}), 33: (1, {'@': 168}), 34: (1, {'@': 168}), 21: (1, {'@': 168}), 8: (1, {'@': 168}), 12: (1, {'@': 168}), 27: (1, {'@': 168}), 31: (1, {'@': 168}), 7: (1, {'@': 168}), 9: (1, {'@': 168}), 26: (1, {'@': 168}), 13: (1, {'@': 168}), 14: (1, {'@': 168}), 29: (1, {'@': 168}), 16: (1, {'@': 168}), 19: (1, {'@': 168})}, 218: {20: (1, {'@': 135}), 22: (1, {'@': 135}), 1: (1, {'@': 135}), 23: (1, {'@': 135}), 24: (1, {'@': 135}), 25: (1, {'@': 135}), 10: (1, {'@': 135}), 11: (1, {'@': 135}), 3: (1, {'@': 135}), 28: (1, {'@': 135}), 15: (1, {'@': 135}), 30: (1, {'@': 135}), 5: (1, {'@': 135}), 32: (1, {'@': 135}), 17: (1, {'@': 135}), 18: (1, {'@': 135}), 33: (1, {'@': 135}), 34: (1, {'@': 135}), 21: (1, {'@': 135}), 8: (1, {'@': 135}), 12: (1, {'@': 135}), 27: (1, {'@': 135}), 31: (1, {'@': 135}), 7: (1, {'@': 135}), 9: (1, {'@': 135}), 26: (1, {'@': 135}), 13: (1, {'@': 135}), 14: (1, {'@': 135}), 29: (1, {'@': 135}), 16: (1, {'@': 135}), 19: (1, {'@': 135})}, 219: {20: (1, {'@': 127}), 22: (1, {'@': 127}), 1: (1, {'@': 127}), 23: (1, {'@': 127}), 24: (1, {'@': 127}), 25: (1, {'@': 127}), 10: (1, {'@': 127}), 11: (1, {'@': 127}), 3: (1, {'@': 127}), 28: (1, {'@': 127}), 15: (1, {'@': 127}), 30: (1, {'@': 127}), 5: (1, {'@': 127}), 32: (1, {'@': 127}), 17: (1, {'@': 127}), 18: (1, {'@': 127}), 33: (1, {'@': 127}), 34: (1, {'@': 127}), 21: (1, {'@': 127}), 8: (1, {'@': 127}), 12: (1, {'@': 127}), 27: (1, {'@': 127}), 31: (1, {'@': 127}), 7: (1, {'@': 127}), 9: (1, {'@': 127}), 26: (1, {'@': 127}), 13: (1, {'@': 127}), 14: (1, {'@': 127}), 29: (1, {'@': 127}), 16: (1, {'@': 127}), 19: (1, {'@': 127})}, 220: {70: (0, 500), 86: (0, 504), 69: (0, 514), 12: (0, 532), 31: (0, 524), 21: (0, 486)}, 221: {24: (0, 295), 93: (0, 76), 94: (0, 456), 20: (1, {'@': 75}), 33: (1, {'@': 75}), 8: (1, {'@': 75}), 21: (1, {'@': 75}), 12: (1, {'@': 75}), 27: (1, {'@': 75}), 31: (1, {'@': 75}), 13: (1, {'@': 75}), 14: (1, {'@': 75}), 29: (1, {'@': 75}), 7: (1, {'@': 75}), 9: (1, {'@': 75}), 16: (1, {'@': 75}), 19: (1, {'@': 75}), 26: (1, {'@': 75})}, 222: {20: (1, {'@': 214}), 22: (1, {'@': 214}), 1: (1, {'@': 214}), 23: (1, {'@': 214}), 24: (1, {'@': 214}), 25: (1, {'@': 214}), 10: (1, {'@': 214}), 11: (1, {'@': 214}), 3: (1, {'@': 214}), 28: (1, {'@': 214}), 15: (1, {'@': 214}), 30: (1, {'@': 214}), 5: (1, {'@': 214}), 32: (1, {'@': 214}), 17: (1, {'@': 214}), 18: (1, {'@': 214}), 33: (1, {'@': 214}), 34: (1, {'@': 214}), 21: (1, {'@': 214}), 8: (1, {'@': 214}), 12: (1, {'@': 214}), 27: (1, {'@': 214}), 31: (1, {'@': 214}), 7: (1, {'@': 214}), 9: (1, {'@': 214}), 26: (1, {'@': 214}), 13: (1, {'@': 214}), 14: (1, {'@': 214}), 29: (1, {'@': 214}), 16: (1, {'@': 214}), 19: (1, {'@': 214})}, 223: {16: (0, 286)}, 224: {28: (1, {'@': 113}), 20: (1, {'@': 113}), 15: (1, {'@': 113}), 22: (1, {'@': 113}), 30: (1, {'@': 113}), 1: (1, {'@': 113}), 23: (1, {'@': 113}), 5: (1, {'@': 113}), 24: (1, {'@': 113}), 25: (1, {'@': 113}), 32: (1, {'@': 113}), 10: (1, {'@': 113}), 11: (1, {'@': 113}), 17: (1, {'@': 113}), 18: (1, {'@': 113}), 3: (1, {'@': 113}), 33: (1, {'@': 113}), 34: (1, {'@': 113}), 21: (1, {'@': 113}), 8: (1, {'@': 113}), 12: (1, {'@': 113}), 27: (1, {'@': 113}), 31: (1, {'@': 113}), 7: (1, {'@': 113}), 9: (1, {'@': 113}), 26: (1, {'@': 113}), 13: (1, {'@': 113}), 14: (1, {'@': 113}), 29: (1, {'@': 113}), 16: (1, {'@': 113}), 19: (1, {'@': 113})}, 225: {8: (0, 186)}, 226: {20: (1, {'@': 129}), 22: (1, {'@': 129}), 1: (1, {'@': 129}), 23: (1, {'@': 129}), 24: (1, {'@': 129}), 25: (1, {'@': 129}), 10: (1, {'@': 129}), 11: (1, {'@': 129}), 3: (1, {'@': 129}), 28: (1, {'@': 129}), 15: (1, {'@': 129}), 30: (1, {'@': 129}), 5: (1, {'@': 129}), 32: (1, {'@': 129}), 17: (1, {'@': 129}), 18: (1, {'@': 129}), 33: (1, {'@': 129}), 34: (1, {'@': 129}), 21: (1, {'@': 129}), 8: (1, {'@': 129}), 12: (1, {'@': 129}), 27: (1, {'@': 129}), 31: (1, {'@': 129}), 7: (1, {'@': 129}), 9: (1, {'@': 129}), 26: (1, {'@': 129}), 13: (1, {'@': 129}), 14: (1, {'@': 129}), 29: (1, {'@': 129}), 16: (1, {'@': 129}), 19: (1, {'@': 129})}, 227: {20: (1, {'@': 60}), 8: (1, {'@': 60}), 21: (1, {'@': 60}), 12: (1, {'@': 60}), 31: (1, {'@': 60}), 27: (1, {'@': 60}), 13: (1, {'@': 60}), 7: (1, {'@': 60}), 14: (1, {'@': 60}), 26: (1, {'@': 60}), 16: (1, {'@': 60}), 9: (1, {'@': 60}), 19: (1, {'@': 60}), 29: (1, {'@': 60})}, 228: {1: (0, 540), 35: (0, 174), 37: (0, 268), 8: (0, 516), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 36: (0, 187), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 229: {69: (0, 514), 12: (0, 532), 16: (0, 362), 95: (0, 351), 27: (0, 324), 96: (0, 312), 31: (0, 524), 70: (0, 64), 21: (0, 486)}, 230: {20: (1, {'@': 131}), 22: (1, {'@': 131}), 1: (1, {'@': 131}), 23: (1, {'@': 131}), 24: (1, {'@': 131}), 25: (1, {'@': 131}), 10: (1, {'@': 131}), 11: (1, {'@': 131}), 3: (1, {'@': 131}), 28: (1, {'@': 131}), 15: (1, {'@': 131}), 30: (1, {'@': 131}), 5: (1, {'@': 131}), 32: (1, {'@': 131}), 17: (1, {'@': 131}), 18: (1, {'@': 131}), 33: (1, {'@': 131}), 34: (1, {'@': 131}), 21: (1, {'@': 131}), 8: (1, {'@': 131}), 12: (1, {'@': 131}), 27: (1, {'@': 131}), 31: (1, {'@': 131}), 7: (1, {'@': 131}), 9: (1, {'@': 131}), 26: (1, {'@': 131}), 13: (1, {'@': 131}), 14: (1, {'@': 131}), 29: (1, {'@': 131}), 16: (1, {'@': 131}), 19: (1, {'@': 131})}, 231: {0: (0, 402), 1: (0, 264), 2: (0, 376), 3: (0, 358), 4: (0, 335), 5: (0, 337), 6: (0, 322), 7: (1, {'@': 327}), 8: (1, {'@': 327}), 9: (1, {'@': 327}), 10: (1, {'@': 327}), 11: (1, {'@': 327}), 12: (1, {'@': 327}), 13: (1, {'@': 327}), 14: (1, {'@': 327}), 15: (1, {'@': 327}), 16: (1, {'@': 327}), 17: (1, {'@': 327}), 18: (1, {'@': 327}), 19: (1, {'@': 327}), 20: (1, {'@': 327}), 21: (1, {'@': 327}), 22: (1, {'@': 327}), 23: (1, {'@': 327}), 24: (1, {'@': 327}), 25: (1, {'@': 327}), 26: (1, {'@': 327}), 27: (1, {'@': 327}), 28: (1, {'@': 327}), 29: (1, {'@': 327}), 30: (1, {'@': 327}), 31: (1, {'@': 327}), 32: (1, {'@': 327}), 33: (1, {'@': 327}), 34: (1, {'@': 327})}, 232: {1: (0, 540), 35: (0, 174), 37: (0, 268), 8: (0, 230), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 36: (0, 215), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 233: {8: (0, 81)}, 234: {69: (0, 514), 12: (0, 532), 70: (0, 253), 31: (0, 524), 21: (0, 486), 28: (1, {'@': 261}), 40: (1, {'@': 261}), 29: (1, {'@': 261}), 1: (1, {'@': 261}), 62: (1, {'@': 261}), 55: (1, {'@': 261}), 35: (1, {'@': 261}), 64: (1, {'@': 261}), 49: (1, {'@': 261}), 54: (1, {'@': 261})}, 235: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 36: (0, 451), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 236: {69: (0, 514), 12: (0, 532), 31: (0, 524), 21: (0, 486), 70: (0, 338), 28: (1, {'@': 275}), 40: (1, {'@': 275}), 29: (1, {'@': 275}), 1: (1, {'@': 275}), 62: (1, {'@': 275}), 55: (1, {'@': 275}), 35: (1, {'@': 275}), 64: (1, {'@': 275}), 49: (1, {'@': 275}), 54: (1, {'@': 275})}, 237: {28: (1, {'@': 264}), 40: (1, {'@': 264}), 29: (1, {'@': 264}), 1: (1, {'@': 264}), 62: (1, {'@': 264}), 55: (1, {'@': 264}), 35: (1, {'@': 264}), 64: (1, {'@': 264}), 49: (1, {'@': 264}), 54: (1, {'@': 264}), 21: (1, {'@': 264}), 31: (1, {'@': 264}), 12: (1, {'@': 264})}, 238: {20: (1, {'@': 209}), 22: (1, {'@': 209}), 1: (1, {'@': 209}), 23: (1, {'@': 209}), 24: (1, {'@': 209}), 25: (1, {'@': 209}), 10: (1, {'@': 209}), 11: (1, {'@': 209}), 3: (1, {'@': 209}), 28: (1, {'@': 209}), 15: (1, {'@': 209}), 30: (1, {'@': 209}), 5: (1, {'@': 209}), 32: (1, {'@': 209}), 17: (1, {'@': 209}), 18: (1, {'@': 209}), 33: (1, {'@': 209}), 34: (1, {'@': 209}), 21: (1, {'@': 209}), 8: (1, {'@': 209}), 12: (1, {'@': 209}), 27: (1, {'@': 209}), 31: (1, {'@': 209}), 7: (1, {'@': 209}), 9: (1, {'@': 209}), 26: (1, {'@': 209}), 13: (1, {'@': 209}), 14: (1, {'@': 209}), 29: (1, {'@': 209}), 16: (1, {'@': 209}), 19: (1, {'@': 209})}, 239: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 44: (0, 224), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 60: (0, 490), 61: (0, 544), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 42: (0, 27)}, 240: {28: (1, {'@': 262}), 40: (1, {'@': 262}), 29: (1, {'@': 262}), 1: (1, {'@': 262}), 62: (1, {'@': 262}), 55: (1, {'@': 262}), 35: (1, {'@': 262}), 64: (1, {'@': 262}), 49: (1, {'@': 262}), 54: (1, {'@': 262}), 21: (1, {'@': 262}), 31: (1, {'@': 262}), 12: (1, {'@': 262})}, 241: {28: (1, {'@': 110}), 20: (1, {'@': 110}), 15: (1, {'@': 110}), 22: (1, {'@': 110}), 30: (1, {'@': 110}), 1: (1, {'@': 110}), 23: (1, {'@': 110}), 5: (1, {'@': 110}), 24: (1, {'@': 110}), 25: (1, {'@': 110}), 32: (1, {'@': 110}), 10: (1, {'@': 110}), 11: (1, {'@': 110}), 17: (1, {'@': 110}), 18: (1, {'@': 110}), 3: (1, {'@': 110}), 33: (1, {'@': 110}), 34: (1, {'@': 110}), 21: (1, {'@': 110}), 8: (1, {'@': 110}), 12: (1, {'@': 110}), 27: (1, {'@': 110}), 31: (1, {'@': 110}), 7: (1, {'@': 110}), 9: (1, {'@': 110}), 26: (1, {'@': 110}), 13: (1, {'@': 110}), 14: (1, {'@': 110}), 29: (1, {'@': 110}), 16: (1, {'@': 110}), 19: (1, {'@': 110})}, 242: {20: (1, {'@': 219}), 22: (1, {'@': 219}), 1: (1, {'@': 219}), 23: (1, {'@': 219}), 24: (1, {'@': 219}), 25: (1, {'@': 219}), 10: (1, {'@': 219}), 11: (1, {'@': 219}), 3: (1, {'@': 219}), 28: (1, {'@': 219}), 15: (1, {'@': 219}), 30: (1, {'@': 219}), 5: (1, {'@': 219}), 32: (1, {'@': 219}), 17: (1, {'@': 219}), 18: (1, {'@': 219}), 33: (1, {'@': 219}), 34: (1, {'@': 219}), 21: (1, {'@': 219}), 8: (1, {'@': 219}), 12: (1, {'@': 219}), 27: (1, {'@': 219}), 31: (1, {'@': 219}), 7: (1, {'@': 219}), 9: (1, {'@': 219}), 26: (1, {'@': 219}), 13: (1, {'@': 219}), 14: (1, {'@': 219}), 29: (1, {'@': 219}), 16: (1, {'@': 219}), 19: (1, {'@': 219})}, 243: {9: (0, 147), 70: (0, 141), 69: (0, 514), 12: (0, 532), 79: (0, 135), 8: (0, 70), 31: (0, 524), 21: (0, 486)}, 244: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 42: (0, 13), 44: (0, 224), 46: (0, 185), 53: (0, 33), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 60: (0, 490), 61: (0, 544), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214)}, 245: {20: (1, {'@': 220}), 22: (1, {'@': 220}), 1: (1, {'@': 220}), 23: (1, {'@': 220}), 24: (1, {'@': 220}), 25: (1, {'@': 220}), 10: (1, {'@': 220}), 11: (1, {'@': 220}), 3: (1, {'@': 220}), 28: (1, {'@': 220}), 15: (1, {'@': 220}), 30: (1, {'@': 220}), 5: (1, {'@': 220}), 32: (1, {'@': 220}), 17: (1, {'@': 220}), 18: (1, {'@': 220}), 33: (1, {'@': 220}), 34: (1, {'@': 220}), 21: (1, {'@': 220}), 8: (1, {'@': 220}), 12: (1, {'@': 220}), 27: (1, {'@': 220}), 31: (1, {'@': 220}), 7: (1, {'@': 220}), 9: (1, {'@': 220}), 26: (1, {'@': 220}), 13: (1, {'@': 220}), 14: (1, {'@': 220}), 29: (1, {'@': 220}), 16: (1, {'@': 220}), 19: (1, {'@': 220})}, 246: {20: (1, {'@': 151}), 22: (1, {'@': 151}), 1: (1, {'@': 151}), 23: (1, {'@': 151}), 24: (1, {'@': 151}), 25: (1, {'@': 151}), 10: (1, {'@': 151}), 11: (1, {'@': 151}), 3: (1, {'@': 151}), 28: (1, {'@': 151}), 15: (1, {'@': 151}), 30: (1, {'@': 151}), 5: (1, {'@': 151}), 32: (1, {'@': 151}), 17: (1, {'@': 151}), 18: (1, {'@': 151}), 33: (1, {'@': 151}), 34: (1, {'@': 151}), 21: (1, {'@': 151}), 8: (1, {'@': 151}), 12: (1, {'@': 151}), 27: (1, {'@': 151}), 31: (1, {'@': 151}), 7: (1, {'@': 151}), 9: (1, {'@': 151}), 26: (1, {'@': 151}), 13: (1, {'@': 151}), 14: (1, {'@': 151}), 29: (1, {'@': 151}), 16: (1, {'@': 151}), 19: (1, {'@': 151})}, 247: {20: (1, {'@': 229}), 22: (1, {'@': 229}), 1: (1, {'@': 229}), 23: (1, {'@': 229}), 24: (1, {'@': 229}), 25: (1, {'@': 229}), 10: (1, {'@': 229}), 11: (1, {'@': 229}), 3: (1, {'@': 229}), 28: (1, {'@': 229}), 15: (1, {'@': 229}), 30: (1, {'@': 229}), 5: (1, {'@': 229}), 32: (1, {'@': 229}), 17: (1, {'@': 229}), 18: (1, {'@': 229}), 33: (1, {'@': 229}), 34: (1, {'@': 229}), 21: (1, {'@': 229}), 8: (1, {'@': 229}), 12: (1, {'@': 229}), 27: (1, {'@': 229}), 31: (1, {'@': 229}), 7: (1, {'@': 229}), 9: (1, {'@': 229}), 26: (1, {'@': 229}), 13: (1, {'@': 229}), 14: (1, {'@': 229}), 29: (1, {'@': 229}), 16: (1, {'@': 229}), 19: (1, {'@': 229})}, 248: {20: (1, {'@': 207}), 22: (1, {'@': 207}), 1: (1, {'@': 207}), 23: (1, {'@': 207}), 24: (1, {'@': 207}), 25: (1, {'@': 207}), 10: (1, {'@': 207}), 11: (1, {'@': 207}), 3: (1, {'@': 207}), 28: (1, {'@': 207}), 15: (1, {'@': 207}), 30: (1, {'@': 207}), 5: (1, {'@': 207}), 32: (1, {'@': 207}), 17: (1, {'@': 207}), 18: (1, {'@': 207}), 33: (1, {'@': 207}), 34: (1, {'@': 207}), 21: (1, {'@': 207}), 8: (1, {'@': 207}), 12: (1, {'@': 207}), 27: (1, {'@': 207}), 31: (1, {'@': 207}), 7: (1, {'@': 207}), 9: (1, {'@': 207}), 26: (1, {'@': 207}), 13: (1, {'@': 207}), 14: (1, {'@': 207}), 29: (1, {'@': 207}), 16: (1, {'@': 207}), 19: (1, {'@': 207})}, 249: {69: (0, 514), 70: (0, 233), 12: (0, 532), 31: (0, 524), 21: (0, 486), 8: (0, 238)}, 250: {28: (1, {'@': 280}), 40: (1, {'@': 280}), 29: (1, {'@': 280}), 1: (1, {'@': 280}), 62: (1, {'@': 280}), 55: (1, {'@': 280}), 35: (1, {'@': 280}), 64: (1, {'@': 280}), 49: (1, {'@': 280}), 54: (1, {'@': 280}), 21: (1, {'@': 280}), 31: (1, {'@': 280}), 12: (1, {'@': 280})}, 251: {69: (0, 514), 8: (0, 137), 70: (0, 131), 12: (0, 532), 31: (0, 524), 21: (0, 486)}, 252: {69: (0, 514), 27: (0, 73), 12: (0, 532), 70: (0, 166), 21: (0, 486), 31: (0, 524), 8: (0, 168)}, 253: {28: (1, {'@': 260}), 40: (1, {'@': 260}), 29: (1, {'@': 260}), 1: (1, {'@': 260}), 62: (1, {'@': 260}), 55: (1, {'@': 260}), 35: (1, {'@': 260}), 64: (1, {'@': 260}), 49: (1, {'@': 260}), 54: (1, {'@': 260}), 21: (1, {'@': 260}), 31: (1, {'@': 260}), 12: (1, {'@': 260})}, 254: {8: (1, {'@': 313}), 31: (1, {'@': 313}), 21: (1, {'@': 313}), 12: (1, {'@': 313}), 14: (1, {'@': 313}), 27: (1, {'@': 313}), 28: (1, {'@': 313}), 40: (1, {'@': 313}), 29: (1, {'@': 313}), 1: (1, {'@': 313}), 62: (1, {'@': 313}), 55: (1, {'@': 313}), 35: (1, {'@': 313}), 64: (1, {'@': 313}), 49: (1, {'@': 313}), 54: (1, {'@': 313}), 7: (1, {'@': 313}), 19: (1, {'@': 313}), 9: (1, {'@': 313}), 16: (1, {'@': 313}), 86: (1, {'@': 313}), 87: (1, {'@': 313})}, 255: {69: (0, 514), 9: (0, 147), 8: (0, 248), 12: (0, 532), 79: (0, 251), 21: (0, 486), 31: (0, 524), 70: (0, 257)}, 256: {1: (0, 540), 77: (0, 340), 35: (0, 174), 37: (0, 284), 38: (0, 241), 39: (0, 325), 40: (0, 475), 16: (0, 343), 36: (0, 42), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 257: {8: (0, 133)}, 258: {8: (0, 143)}, 259: {17: (0, 398), 34: (0, 391), 97: (0, 49), 32: (0, 400), 28: (1, {'@': 84}), 20: (1, {'@': 84}), 15: (1, {'@': 84}), 22: (1, {'@': 84}), 30: (1, {'@': 84}), 23: (1, {'@': 84}), 24: (1, {'@': 84}), 25: (1, {'@': 84}), 10: (1, {'@': 84}), 11: (1, {'@': 84}), 18: (1, {'@': 84}), 33: (1, {'@': 84}), 21: (1, {'@': 84}), 8: (1, {'@': 84}), 12: (1, {'@': 84}), 27: (1, {'@': 84}), 31: (1, {'@': 84}), 7: (1, {'@': 84}), 9: (1, {'@': 84}), 26: (1, {'@': 84}), 13: (1, {'@': 84}), 14: (1, {'@': 84}), 29: (1, {'@': 84}), 16: (1, {'@': 84}), 19: (1, {'@': 84})}, 260: {20: (1, {'@': 210}), 22: (1, {'@': 210}), 1: (1, {'@': 210}), 23: (1, {'@': 210}), 24: (1, {'@': 210}), 25: (1, {'@': 210}), 10: (1, {'@': 210}), 11: (1, {'@': 210}), 3: (1, {'@': 210}), 28: (1, {'@': 210}), 15: (1, {'@': 210}), 30: (1, {'@': 210}), 5: (1, {'@': 210}), 32: (1, {'@': 210}), 17: (1, {'@': 210}), 18: (1, {'@': 210}), 33: (1, {'@': 210}), 34: (1, {'@': 210}), 21: (1, {'@': 210}), 8: (1, {'@': 210}), 12: (1, {'@': 210}), 27: (1, {'@': 210}), 31: (1, {'@': 210}), 7: (1, {'@': 210}), 9: (1, {'@': 210}), 26: (1, {'@': 210}), 13: (1, {'@': 210}), 14: (1, {'@': 210}), 29: (1, {'@': 210}), 16: (1, {'@': 210}), 19: (1, {'@': 210})}, 261: {20: (1, {'@': 222}), 22: (1, {'@': 222}), 1: (1, {'@': 222}), 23: (1, {'@': 222}), 24: (1, {'@': 222}), 25: (1, {'@': 222}), 10: (1, {'@': 222}), 11: (1, {'@': 222}), 3: (1, {'@': 222}), 28: (1, {'@': 222}), 15: (1, {'@': 222}), 30: (1, {'@': 222}), 5: (1, {'@': 222}), 32: (1, {'@': 222}), 17: (1, {'@': 222}), 18: (1, {'@': 222}), 33: (1, {'@': 222}), 34: (1, {'@': 222}), 21: (1, {'@': 222}), 8: (1, {'@': 222}), 12: (1, {'@': 222}), 27: (1, {'@': 222}), 31: (1, {'@': 222}), 7: (1, {'@': 222}), 9: (1, {'@': 222}), 26: (1, {'@': 222}), 13: (1, {'@': 222}), 14: (1, {'@': 222}), 29: (1, {'@': 222}), 16: (1, {'@': 222}), 19: (1, {'@': 222})}, 262: {8: (1, {'@': 300}), 31: (1, {'@': 300}), 21: (1, {'@': 300}), 12: (1, {'@': 300}), 16: (1, {'@': 300})}, 263: {20: (1, {'@': 62}), 8: (1, {'@': 62}), 21: (1, {'@': 62}), 12: (1, {'@': 62}), 31: (1, {'@': 62}), 27: (1, {'@': 62}), 13: (1, {'@': 62}), 7: (1, {'@': 62}), 14: (1, {'@': 62}), 26: (1, {'@': 62}), 16: (1, {'@': 62}), 9: (1, {'@': 62}), 19: (1, {'@': 62}), 29: (1, {'@': 62})}, 264: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 38: (0, 241), 69: (0, 514), 39: (0, 325), 17: (0, 1), 21: (0, 486), 40: (0, 475), 41: (0, 152), 42: (0, 13), 70: (0, 16), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 36: (0, 21), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 265: {8: (0, 261)}, 266: {20: (1, {'@': 258}), 22: (1, {'@': 258}), 1: (1, {'@': 258}), 23: (1, {'@': 258}), 24: (1, {'@': 258}), 25: (1, {'@': 258}), 10: (1, {'@': 258}), 11: (1, {'@': 258}), 3: (1, {'@': 258}), 28: (1, {'@': 258}), 15: (1, {'@': 258}), 30: (1, {'@': 258}), 5: (1, {'@': 258}), 32: (1, {'@': 258}), 17: (1, {'@': 258}), 18: (1, {'@': 258}), 33: (1, {'@': 258}), 34: (1, {'@': 258}), 21: (1, {'@': 258}), 8: (1, {'@': 258}), 12: (1, {'@': 258}), 27: (1, {'@': 258}), 31: (1, {'@': 258}), 7: (1, {'@': 258}), 9: (1, {'@': 258}), 26: (1, {'@': 258}), 13: (1, {'@': 258}), 14: (1, {'@': 258}), 29: (1, {'@': 258}), 16: (1, {'@': 258}), 19: (1, {'@': 258})}, 267: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 98: (0, 520), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 36: (0, 513), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 268: {40: (0, 507), 28: (1, {'@': 111}), 20: (1, {'@': 111}), 15: (1, {'@': 111}), 22: (1, {'@': 111}), 30: (1, {'@': 111}), 1: (1, {'@': 111}), 23: (1, {'@': 111}), 5: (1, {'@': 111}), 24: (1, {'@': 111}), 25: (1, {'@': 111}), 32: (1, {'@': 111}), 10: (1, {'@': 111}), 11: (1, {'@': 111}), 17: (1, {'@': 111}), 18: (1, {'@': 111}), 3: (1, {'@': 111}), 33: (1, {'@': 111}), 34: (1, {'@': 111}), 21: (1, {'@': 111}), 8: (1, {'@': 111}), 12: (1, {'@': 111}), 27: (1, {'@': 111}), 31: (1, {'@': 111}), 7: (1, {'@': 111}), 9: (1, {'@': 111}), 26: (1, {'@': 111}), 13: (1, {'@': 111}), 14: (1, {'@': 111}), 29: (1, {'@': 111}), 16: (1, {'@': 111}), 19: (1, {'@': 111})}, 269: {20: (1, {'@': 223}), 22: (1, {'@': 223}), 1: (1, {'@': 223}), 23: (1, {'@': 223}), 24: (1, {'@': 223}), 25: (1, {'@': 223}), 10: (1, {'@': 223}), 11: (1, {'@': 223}), 3: (1, {'@': 223}), 28: (1, {'@': 223}), 15: (1, {'@': 223}), 30: (1, {'@': 223}), 5: (1, {'@': 223}), 32: (1, {'@': 223}), 17: (1, {'@': 223}), 18: (1, {'@': 223}), 33: (1, {'@': 223}), 34: (1, {'@': 223}), 21: (1, {'@': 223}), 8: (1, {'@': 223}), 12: (1, {'@': 223}), 27: (1, {'@': 223}), 31: (1, {'@': 223}), 7: (1, {'@': 223}), 9: (1, {'@': 223}), 26: (1, {'@': 223}), 13: (1, {'@': 223}), 14: (1, {'@': 223}), 29: (1, {'@': 223}), 16: (1, {'@': 223}), 19: (1, {'@': 223})}, 270: {69: (0, 514), 12: (0, 532), 31: (0, 524), 8: (0, 242), 70: (0, 258), 21: (0, 486)}, 271: {16: (0, 146)}, 272: {69: (0, 514), 12: (0, 532), 70: (0, 151), 31: (0, 524), 16: (0, 173), 21: (0, 486)}, 273: {8: (0, 245)}, 274: {83: (0, 35), 37: (0, 19), 70: (0, 72), 80: (0, 548), 69: (0, 514), 12: (0, 532), 82: (0, 537), 29: (0, 491), 81: (0, 518), 31: (0, 524), 21: (0, 486), 99: (0, 510), 19: (1, {'@': 48})}, 275: {20: (1, {'@': 221}), 22: (1, {'@': 221}), 1: (1, {'@': 221}), 23: (1, {'@': 221}), 24: (1, {'@': 221}), 25: (1, {'@': 221}), 10: (1, {'@': 221}), 11: (1, {'@': 221}), 3: (1, {'@': 221}), 28: (1, {'@': 221}), 15: (1, {'@': 221}), 30: (1, {'@': 221}), 5: (1, {'@': 221}), 32: (1, {'@': 221}), 17: (1, {'@': 221}), 18: (1, {'@': 221}), 33: (1, {'@': 221}), 34: (1, {'@': 221}), 21: (1, {'@': 221}), 8: (1, {'@': 221}), 12: (1, {'@': 221}), 27: (1, {'@': 221}), 31: (1, {'@': 221}), 7: (1, {'@': 221}), 9: (1, {'@': 221}), 26: (1, {'@': 221}), 13: (1, {'@': 221}), 14: (1, {'@': 221}), 29: (1, {'@': 221}), 16: (1, {'@': 221}), 19: (1, {'@': 221})}, 276: {69: (0, 514), 70: (0, 155), 12: (0, 532), 31: (0, 524), 16: (0, 158), 21: (0, 486)}, 277: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 36: (0, 506), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 278: {86: (0, 24), 27: (0, 282), 69: (0, 514), 12: (0, 532), 70: (0, 154), 31: (0, 524), 21: (0, 486)}, 279: {20: (1, {'@': 194}), 21: (1, {'@': 194}), 22: (1, {'@': 194}), 1: (1, {'@': 194}), 23: (1, {'@': 194}), 7: (1, {'@': 194}), 8: (1, {'@': 194}), 9: (1, {'@': 194}), 24: (1, {'@': 194}), 10: (1, {'@': 194}), 11: (1, {'@': 194}), 12: (1, {'@': 194}), 25: (1, {'@': 194}), 26: (1, {'@': 194}), 3: (1, {'@': 194}), 27: (1, {'@': 194}), 13: (1, {'@': 194}), 14: (1, {'@': 194}), 28: (1, {'@': 194}), 29: (1, {'@': 194}), 15: (1, {'@': 194}), 30: (1, {'@': 194}), 31: (1, {'@': 194}), 5: (1, {'@': 194}), 16: (1, {'@': 194}), 32: (1, {'@': 194}), 17: (1, {'@': 194}), 18: (1, {'@': 194}), 19: (1, {'@': 194}), 33: (1, {'@': 194}), 34: (1, {'@': 194})}, 280: {69: (0, 514), 9: (0, 147), 70: (0, 164), 79: (0, 165), 12: (0, 532), 16: (0, 170), 31: (0, 524), 21: (0, 486)}, 281: {20: (1, {'@': 241}), 22: (1, {'@': 241}), 1: (1, {'@': 241}), 23: (1, {'@': 241}), 24: (1, {'@': 241}), 25: (1, {'@': 241}), 10: (1, {'@': 241}), 11: (1, {'@': 241}), 3: (1, {'@': 241}), 28: (1, {'@': 241}), 15: (1, {'@': 241}), 30: (1, {'@': 241}), 5: (1, {'@': 241}), 32: (1, {'@': 241}), 17: (1, {'@': 241}), 18: (1, {'@': 241}), 33: (1, {'@': 241}), 34: (1, {'@': 241}), 21: (1, {'@': 241}), 8: (1, {'@': 241}), 12: (1, {'@': 241}), 27: (1, {'@': 241}), 31: (1, {'@': 241}), 7: (1, {'@': 241}), 9: (1, {'@': 241}), 26: (1, {'@': 241}), 13: (1, {'@': 241}), 14: (1, {'@': 241}), 29: (1, {'@': 241}), 16: (1, {'@': 241}), 19: (1, {'@': 241})}, 282: {37: (0, 103), 29: (0, 491)}, 283: {9: (0, 147), 26: (0, 294), 69: (0, 514), 12: (0, 532), 70: (0, 306), 16: (0, 314), 79: (0, 318), 31: (0, 524), 21: (0, 486)}, 284: {40: (0, 507), 7: (0, 301), 13: (0, 235), 22: (1, {'@': 111}), 1: (1, {'@': 111}), 23: (1, {'@': 111}), 24: (1, {'@': 111}), 25: (1, {'@': 111}), 10: (1, {'@': 111}), 11: (1, {'@': 111}), 3: (1, {'@': 111}), 28: (1, {'@': 111}), 15: (1, {'@': 111}), 30: (1, {'@': 111}), 5: (1, {'@': 111}), 32: (1, {'@': 111}), 17: (1, {'@': 111}), 18: (1, {'@': 111}), 33: (1, {'@': 111}), 34: (1, {'@': 111})}, 285: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 41: (0, 347), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 28: (0, 523), 68: (0, 109)}, 286: {20: (1, {'@': 255}), 22: (1, {'@': 255}), 1: (1, {'@': 255}), 23: (1, {'@': 255}), 24: (1, {'@': 255}), 25: (1, {'@': 255}), 10: (1, {'@': 255}), 11: (1, {'@': 255}), 3: (1, {'@': 255}), 28: (1, {'@': 255}), 15: (1, {'@': 255}), 30: (1, {'@': 255}), 5: (1, {'@': 255}), 32: (1, {'@': 255}), 17: (1, {'@': 255}), 18: (1, {'@': 255}), 33: (1, {'@': 255}), 34: (1, {'@': 255}), 21: (1, {'@': 255}), 8: (1, {'@': 255}), 12: (1, {'@': 255}), 27: (1, {'@': 255}), 31: (1, {'@': 255}), 7: (1, {'@': 255}), 9: (1, {'@': 255}), 26: (1, {'@': 255}), 13: (1, {'@': 255}), 14: (1, {'@': 255}), 29: (1, {'@': 255}), 16: (1, {'@': 255}), 19: (1, {'@': 255})}, 287: {69: (0, 514), 16: (0, 266), 12: (0, 532), 31: (0, 524), 70: (0, 271), 21: (0, 486)}, 288: {20: (1, {'@': 252}), 22: (1, {'@': 252}), 1: (1, {'@': 252}), 23: (1, {'@': 252}), 24: (1, {'@': 252}), 25: (1, {'@': 252}), 10: (1, {'@': 252}), 11: (1, {'@': 252}), 3: (1, {'@': 252}), 28: (1, {'@': 252}), 15: (1, {'@': 252}), 30: (1, {'@': 252}), 5: (1, {'@': 252}), 32: (1, {'@': 252}), 17: (1, {'@': 252}), 18: (1, {'@': 252}), 33: (1, {'@': 252}), 34: (1, {'@': 252}), 21: (1, {'@': 252}), 8: (1, {'@': 252}), 12: (1, {'@': 252}), 27: (1, {'@': 252}), 31: (1, {'@': 252}), 7: (1, {'@': 252}), 9: (1, {'@': 252}), 26: (1, {'@': 252}), 13: (1, {'@': 252}), 14: (1, {'@': 252}), 29: (1, {'@': 252}), 16: (1, {'@': 252}), 19: (1, {'@': 252})}, 289: {79: (0, 276), 9: (0, 147), 69: (0, 514), 12: (0, 532), 70: (0, 280), 16: (0, 288), 31: (0, 524), 21: (0, 486)}, 290: {20: (1, {'@': 256}), 22: (1, {'@': 256}), 1: (1, {'@': 256}), 23: (1, {'@': 256}), 24: (1, {'@': 256}), 25: (1, {'@': 256}), 10: (1, {'@': 256}), 11: (1, {'@': 256}), 3: (1, {'@': 256}), 28: (1, {'@': 256}), 15: (1, {'@': 256}), 30: (1, {'@': 256}), 5: (1, {'@': 256}), 32: (1, {'@': 256}), 17: (1, {'@': 256}), 18: (1, {'@': 256}), 33: (1, {'@': 256}), 34: (1, {'@': 256}), 21: (1, {'@': 256}), 8: (1, {'@': 256}), 12: (1, {'@': 256}), 27: (1, {'@': 256}), 31: (1, {'@': 256}), 7: (1, {'@': 256}), 9: (1, {'@': 256}), 26: (1, {'@': 256}), 13: (1, {'@': 256}), 14: (1, {'@': 256}), 29: (1, {'@': 256}), 16: (1, {'@': 256}), 19: (1, {'@': 256})}, 291: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 36: (0, 56), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 292: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 38: (0, 241), 69: (0, 514), 39: (0, 325), 21: (0, 486), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 36: (0, 381), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 70: (0, 384), 68: (0, 109)}, 293: {69: (0, 514), 27: (0, 449), 12: (0, 532), 86: (0, 63), 70: (0, 66), 31: (0, 524), 21: (0, 486)}, 294: {9: (0, 147), 70: (0, 182), 69: (0, 514), 12: (0, 532), 16: (0, 330), 79: (0, 332), 31: (0, 524), 21: (0, 486)}, 295: {40: (1, {'@': 86}), 29: (1, {'@': 86}), 1: (1, {'@': 86}), 55: (1, {'@': 86}), 35: (1, {'@': 86}), 64: (1, {'@': 86}), 49: (1, {'@': 86}), 54: (1, {'@': 86})}, 296: {1: (1, {'@': 345}), 7: (1, {'@': 345}), 8: (1, {'@': 345}), 9: (1, {'@': 345}), 12: (1, {'@': 345}), 10: (1, {'@': 345}), 11: (1, {'@': 345}), 13: (1, {'@': 345}), 14: (1, {'@': 345}), 15: (1, {'@': 345}), 5: (1, {'@': 345}), 16: (1, {'@': 345}), 17: (1, {'@': 345}), 18: (1, {'@': 345}), 19: (1, {'@': 345}), 20: (1, {'@': 345}), 21: (1, {'@': 345}), 22: (1, {'@': 345}), 23: (1, {'@': 345}), 24: (1, {'@': 345}), 25: (1, {'@': 345}), 26: (1, {'@': 345}), 3: (1, {'@': 345}), 27: (1, {'@': 345}), 28: (1, {'@': 345}), 29: (1, {'@': 345}), 30: (1, {'@': 345}), 31: (1, {'@': 345}), 32: (1, {'@': 345}), 33: (1, {'@': 345}), 34: (1, {'@': 345})}, 297: {20: (1, {'@': 199}), 21: (1, {'@': 199}), 22: (1, {'@': 199}), 1: (1, {'@': 199}), 23: (1, {'@': 199}), 7: (1, {'@': 199}), 8: (1, {'@': 199}), 9: (1, {'@': 199}), 24: (1, {'@': 199}), 10: (1, {'@': 199}), 11: (1, {'@': 199}), 12: (1, {'@': 199}), 25: (1, {'@': 199}), 26: (1, {'@': 199}), 3: (1, {'@': 199}), 27: (1, {'@': 199}), 13: (1, {'@': 199}), 14: (1, {'@': 199}), 28: (1, {'@': 199}), 29: (1, {'@': 199}), 15: (1, {'@': 199}), 30: (1, {'@': 199}), 31: (1, {'@': 199}), 5: (1, {'@': 199}), 16: (1, {'@': 199}), 32: (1, {'@': 199}), 17: (1, {'@': 199}), 18: (1, {'@': 199}), 19: (1, {'@': 199}), 33: (1, {'@': 199}), 34: (1, {'@': 199})}, 298: {16: (1, {'@': 52}), 29: (1, {'@': 52}), 31: (1, {'@': 52}), 21: (1, {'@': 52}), 12: (1, {'@': 52}), 19: (1, {'@': 52})}, 299: {20: (1, {'@': 211}), 22: (1, {'@': 211}), 1: (1, {'@': 211}), 23: (1, {'@': 211}), 24: (1, {'@': 211}), 25: (1, {'@': 211}), 10: (1, {'@': 211}), 11: (1, {'@': 211}), 3: (1, {'@': 211}), 28: (1, {'@': 211}), 15: (1, {'@': 211}), 30: (1, {'@': 211}), 5: (1, {'@': 211}), 32: (1, {'@': 211}), 17: (1, {'@': 211}), 18: (1, {'@': 211}), 33: (1, {'@': 211}), 34: (1, {'@': 211}), 21: (1, {'@': 211}), 8: (1, {'@': 211}), 12: (1, {'@': 211}), 27: (1, {'@': 211}), 31: (1, {'@': 211}), 7: (1, {'@': 211}), 9: (1, {'@': 211}), 26: (1, {'@': 211}), 13: (1, {'@': 211}), 14: (1, {'@': 211}), 29: (1, {'@': 211}), 16: (1, {'@': 211}), 19: (1, {'@': 211})}, 300: {20: (1, {'@': 230}), 22: (1, {'@': 230}), 1: (1, {'@': 230}), 23: (1, {'@': 230}), 24: (1, {'@': 230}), 25: (1, {'@': 230}), 10: (1, {'@': 230}), 11: (1, {'@': 230}), 3: (1, {'@': 230}), 28: (1, {'@': 230}), 15: (1, {'@': 230}), 30: (1, {'@': 230}), 5: (1, {'@': 230}), 32: (1, {'@': 230}), 17: (1, {'@': 230}), 18: (1, {'@': 230}), 33: (1, {'@': 230}), 34: (1, {'@': 230}), 21: (1, {'@': 230}), 8: (1, {'@': 230}), 12: (1, {'@': 230}), 27: (1, {'@': 230}), 31: (1, {'@': 230}), 7: (1, {'@': 230}), 9: (1, {'@': 230}), 26: (1, {'@': 230}), 13: (1, {'@': 230}), 14: (1, {'@': 230}), 29: (1, {'@': 230}), 16: (1, {'@': 230}), 19: (1, {'@': 230})}, 301: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 36: (0, 149), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 302: {69: (0, 514), 16: (0, 58), 27: (0, 324), 12: (0, 532), 96: (0, 22), 31: (0, 524), 70: (0, 64), 21: (0, 486)}, 303: {69: (0, 514), 9: (0, 147), 70: (0, 223), 12: (0, 532), 31: (0, 524), 21: (0, 486), 79: (0, 272), 16: (0, 290)}, 304: {1: (1, {'@': 344}), 7: (1, {'@': 344}), 8: (1, {'@': 344}), 9: (1, {'@': 344}), 12: (1, {'@': 344}), 10: (1, {'@': 344}), 11: (1, {'@': 344}), 13: (1, {'@': 344}), 14: (1, {'@': 344}), 15: (1, {'@': 344}), 5: (1, {'@': 344}), 16: (1, {'@': 344}), 17: (1, {'@': 344}), 18: (1, {'@': 344}), 19: (1, {'@': 344}), 20: (1, {'@': 344}), 21: (1, {'@': 344}), 22: (1, {'@': 344}), 23: (1, {'@': 344}), 24: (1, {'@': 344}), 25: (1, {'@': 344}), 26: (1, {'@': 344}), 3: (1, {'@': 344}), 27: (1, {'@': 344}), 28: (1, {'@': 344}), 29: (1, {'@': 344}), 30: (1, {'@': 344}), 31: (1, {'@': 344}), 32: (1, {'@': 344}), 33: (1, {'@': 344}), 34: (1, {'@': 344})}, 305: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 36: (0, 215), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 306: {79: (0, 372), 69: (0, 514), 9: (0, 147), 12: (0, 532), 70: (0, 160), 16: (0, 334), 31: (0, 524), 21: (0, 486)}, 307: {69: (0, 514), 70: (0, 380), 12: (0, 532), 31: (0, 524), 21: (0, 486), 28: (1, {'@': 291}), 40: (1, {'@': 291}), 29: (1, {'@': 291}), 1: (1, {'@': 291}), 62: (1, {'@': 291}), 55: (1, {'@': 291}), 35: (1, {'@': 291}), 64: (1, {'@': 291}), 49: (1, {'@': 291}), 54: (1, {'@': 291})}, 308: {40: (1, {'@': 98}), 29: (1, {'@': 98}), 1: (1, {'@': 98}), 55: (1, {'@': 98}), 35: (1, {'@': 98}), 64: (1, {'@': 98}), 49: (1, {'@': 98}), 54: (1, {'@': 98})}, 309: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 36: (0, 452), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 310: {20: (1, {'@': 259}), 22: (1, {'@': 259}), 1: (1, {'@': 259}), 23: (1, {'@': 259}), 24: (1, {'@': 259}), 25: (1, {'@': 259}), 10: (1, {'@': 259}), 11: (1, {'@': 259}), 3: (1, {'@': 259}), 28: (1, {'@': 259}), 15: (1, {'@': 259}), 30: (1, {'@': 259}), 5: (1, {'@': 259}), 32: (1, {'@': 259}), 17: (1, {'@': 259}), 18: (1, {'@': 259}), 33: (1, {'@': 259}), 34: (1, {'@': 259}), 21: (1, {'@': 259}), 8: (1, {'@': 259}), 12: (1, {'@': 259}), 27: (1, {'@': 259}), 31: (1, {'@': 259}), 7: (1, {'@': 259}), 9: (1, {'@': 259}), 26: (1, {'@': 259}), 13: (1, {'@': 259}), 14: (1, {'@': 259}), 29: (1, {'@': 259}), 16: (1, {'@': 259}), 19: (1, {'@': 259})}, 311: {1: (0, 540), 35: (0, 174), 36: (0, 283), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 312: {1: (0, 540), 35: (0, 174), 37: (0, 284), 38: (0, 241), 39: (0, 325), 40: (0, 475), 36: (0, 42), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 16: (0, 466), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 77: (0, 467), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 313: {70: (0, 117), 69: (0, 514), 12: (0, 532), 31: (0, 524), 21: (0, 486), 28: (1, {'@': 295}), 40: (1, {'@': 295}), 29: (1, {'@': 295}), 1: (1, {'@': 295}), 62: (1, {'@': 295}), 55: (1, {'@': 295}), 35: (1, {'@': 295}), 64: (1, {'@': 295}), 49: (1, {'@': 295}), 54: (1, {'@': 295})}, 314: {20: (1, {'@': 245}), 22: (1, {'@': 245}), 1: (1, {'@': 245}), 23: (1, {'@': 245}), 24: (1, {'@': 245}), 25: (1, {'@': 245}), 10: (1, {'@': 245}), 11: (1, {'@': 245}), 3: (1, {'@': 245}), 28: (1, {'@': 245}), 15: (1, {'@': 245}), 30: (1, {'@': 245}), 5: (1, {'@': 245}), 32: (1, {'@': 245}), 17: (1, {'@': 245}), 18: (1, {'@': 245}), 33: (1, {'@': 245}), 34: (1, {'@': 245}), 21: (1, {'@': 245}), 8: (1, {'@': 245}), 12: (1, {'@': 245}), 27: (1, {'@': 245}), 31: (1, {'@': 245}), 7: (1, {'@': 245}), 9: (1, {'@': 245}), 26: (1, {'@': 245}), 13: (1, {'@': 245}), 14: (1, {'@': 245}), 29: (1, {'@': 245}), 16: (1, {'@': 245}), 19: (1, {'@': 245})}, 315: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 36: (0, 453), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 316: {20: (1, {'@': 126}), 22: (1, {'@': 126}), 1: (1, {'@': 126}), 23: (1, {'@': 126}), 24: (1, {'@': 126}), 25: (1, {'@': 126}), 10: (1, {'@': 126}), 11: (1, {'@': 126}), 3: (1, {'@': 126}), 28: (1, {'@': 126}), 15: (1, {'@': 126}), 30: (1, {'@': 126}), 5: (1, {'@': 126}), 32: (1, {'@': 126}), 17: (1, {'@': 126}), 18: (1, {'@': 126}), 33: (1, {'@': 126}), 34: (1, {'@': 126}), 21: (1, {'@': 126}), 8: (1, {'@': 126}), 12: (1, {'@': 126}), 27: (1, {'@': 126}), 31: (1, {'@': 126}), 7: (1, {'@': 126}), 9: (1, {'@': 126}), 26: (1, {'@': 126}), 13: (1, {'@': 126}), 14: (1, {'@': 126}), 29: (1, {'@': 126}), 16: (1, {'@': 126}), 19: (1, {'@': 126})}, 317: {69: (0, 514), 14: (0, 113), 70: (0, 161), 12: (0, 532), 31: (0, 524), 21: (0, 486)}, 318: {69: (0, 514), 16: (0, 321), 12: (0, 532), 70: (0, 328), 31: (0, 524), 21: (0, 486)}, 319: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 38: (0, 241), 69: (0, 514), 39: (0, 325), 70: (0, 67), 21: (0, 486), 40: (0, 475), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 41: (0, 75), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 28: (0, 523), 68: (0, 109)}, 320: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 36: (0, 187), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109), 31: (1, {'@': 177}), 21: (1, {'@': 177}), 12: (1, {'@': 177}), 14: (1, {'@': 177})}, 321: {20: (1, {'@': 244}), 22: (1, {'@': 244}), 1: (1, {'@': 244}), 23: (1, {'@': 244}), 24: (1, {'@': 244}), 25: (1, {'@': 244}), 10: (1, {'@': 244}), 11: (1, {'@': 244}), 3: (1, {'@': 244}), 28: (1, {'@': 244}), 15: (1, {'@': 244}), 30: (1, {'@': 244}), 5: (1, {'@': 244}), 32: (1, {'@': 244}), 17: (1, {'@': 244}), 18: (1, {'@': 244}), 33: (1, {'@': 244}), 34: (1, {'@': 244}), 21: (1, {'@': 244}), 8: (1, {'@': 244}), 12: (1, {'@': 244}), 27: (1, {'@': 244}), 31: (1, {'@': 244}), 7: (1, {'@': 244}), 9: (1, {'@': 244}), 26: (1, {'@': 244}), 13: (1, {'@': 244}), 14: (1, {'@': 244}), 29: (1, {'@': 244}), 16: (1, {'@': 244}), 19: (1, {'@': 244})}, 322: {20: (1, {'@': 192}), 22: (1, {'@': 192}), 1: (1, {'@': 192}), 23: (1, {'@': 192}), 24: (1, {'@': 192}), 25: (1, {'@': 192}), 10: (1, {'@': 192}), 11: (1, {'@': 192}), 3: (1, {'@': 192}), 28: (1, {'@': 192}), 15: (1, {'@': 192}), 30: (1, {'@': 192}), 5: (1, {'@': 192}), 32: (1, {'@': 192}), 17: (1, {'@': 192}), 18: (1, {'@': 192}), 33: (1, {'@': 192}), 34: (1, {'@': 192}), 21: (1, {'@': 192}), 8: (1, {'@': 192}), 12: (1, {'@': 192}), 27: (1, {'@': 192}), 31: (1, {'@': 192}), 7: (1, {'@': 192}), 9: (1, {'@': 192}), 26: (1, {'@': 192}), 13: (1, {'@': 192}), 14: (1, {'@': 192}), 29: (1, {'@': 192}), 16: (1, {'@': 192}), 19: (1, {'@': 192})}, 323: {1: (0, 540), 35: (0, 174), 12: (0, 532), 36: (0, 41), 37: (0, 268), 38: (0, 241), 69: (0, 514), 70: (0, 450), 39: (0, 325), 21: (0, 486), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 324: {69: (0, 514), 70: (0, 17), 12: (0, 532), 31: (0, 524), 21: (0, 486), 28: (1, {'@': 56}), 40: (1, {'@': 56}), 29: (1, {'@': 56}), 1: (1, {'@': 56}), 62: (1, {'@': 56}), 55: (1, {'@': 56}), 35: (1, {'@': 56}), 16: (1, {'@': 56}), 64: (1, {'@': 56}), 49: (1, {'@': 56}), 54: (1, {'@': 56})}, 325: {100: (0, 259), 1: (0, 264), 2: (0, 376), 3: (0, 358), 4: (0, 335), 5: (0, 337), 0: (0, 402), 17: (0, 398), 32: (0, 400), 34: (0, 391), 97: (0, 378), 6: (0, 322), 28: (1, {'@': 85}), 20: (1, {'@': 85}), 15: (1, {'@': 85}), 22: (1, {'@': 85}), 30: (1, {'@': 85}), 23: (1, {'@': 85}), 24: (1, {'@': 85}), 25: (1, {'@': 85}), 10: (1, {'@': 85}), 11: (1, {'@': 85}), 18: (1, {'@': 85}), 33: (1, {'@': 85}), 21: (1, {'@': 85}), 8: (1, {'@': 85}), 12: (1, {'@': 85}), 27: (1, {'@': 85}), 31: (1, {'@': 85}), 7: (1, {'@': 85}), 9: (1, {'@': 85}), 26: (1, {'@': 85}), 13: (1, {'@': 85}), 14: (1, {'@': 85}), 29: (1, {'@': 85}), 16: (1, {'@': 85}), 19: (1, {'@': 85})}, 326: {20: (1, {'@': 65}), 8: (1, {'@': 65}), 21: (1, {'@': 65}), 12: (1, {'@': 65}), 31: (1, {'@': 65}), 27: (1, {'@': 65}), 13: (1, {'@': 65}), 7: (1, {'@': 65}), 14: (1, {'@': 65}), 26: (1, {'@': 65}), 16: (1, {'@': 65}), 9: (1, {'@': 65}), 19: (1, {'@': 65}), 29: (1, {'@': 65})}, 327: {20: (1, {'@': 224}), 22: (1, {'@': 224}), 1: (1, {'@': 224}), 23: (1, {'@': 224}), 24: (1, {'@': 224}), 25: (1, {'@': 224}), 10: (1, {'@': 224}), 11: (1, {'@': 224}), 3: (1, {'@': 224}), 28: (1, {'@': 224}), 15: (1, {'@': 224}), 30: (1, {'@': 224}), 5: (1, {'@': 224}), 32: (1, {'@': 224}), 17: (1, {'@': 224}), 18: (1, {'@': 224}), 33: (1, {'@': 224}), 34: (1, {'@': 224}), 21: (1, {'@': 224}), 8: (1, {'@': 224}), 12: (1, {'@': 224}), 27: (1, {'@': 224}), 31: (1, {'@': 224}), 7: (1, {'@': 224}), 9: (1, {'@': 224}), 26: (1, {'@': 224}), 13: (1, {'@': 224}), 14: (1, {'@': 224}), 29: (1, {'@': 224}), 16: (1, {'@': 224}), 19: (1, {'@': 224})}, 328: {16: (0, 410)}, 329: {69: (0, 514), 70: (0, 265), 12: (0, 532), 31: (0, 524), 8: (0, 269), 21: (0, 486)}, 330: {20: (1, {'@': 238}), 22: (1, {'@': 238}), 1: (1, {'@': 238}), 23: (1, {'@': 238}), 24: (1, {'@': 238}), 25: (1, {'@': 238}), 10: (1, {'@': 238}), 11: (1, {'@': 238}), 3: (1, {'@': 238}), 28: (1, {'@': 238}), 15: (1, {'@': 238}), 30: (1, {'@': 238}), 5: (1, {'@': 238}), 32: (1, {'@': 238}), 17: (1, {'@': 238}), 18: (1, {'@': 238}), 33: (1, {'@': 238}), 34: (1, {'@': 238}), 21: (1, {'@': 238}), 8: (1, {'@': 238}), 12: (1, {'@': 238}), 27: (1, {'@': 238}), 31: (1, {'@': 238}), 7: (1, {'@': 238}), 9: (1, {'@': 238}), 26: (1, {'@': 238}), 13: (1, {'@': 238}), 14: (1, {'@': 238}), 29: (1, {'@': 238}), 16: (1, {'@': 238}), 19: (1, {'@': 238})}, 331: {9: (0, 147), 79: (0, 287), 26: (0, 289), 69: (0, 514), 12: (0, 532), 70: (0, 303), 21: (0, 486), 31: (0, 524), 16: (0, 310)}, 332: {69: (0, 514), 70: (0, 396), 12: (0, 532), 31: (0, 524), 16: (0, 393), 21: (0, 486)}, 333: {69: (0, 514), 70: (0, 415), 12: (0, 532), 31: (0, 524), 21: (0, 486), 28: (1, {'@': 287}), 40: (1, {'@': 287}), 29: (1, {'@': 287}), 1: (1, {'@': 287}), 62: (1, {'@': 287}), 55: (1, {'@': 287}), 35: (1, {'@': 287}), 64: (1, {'@': 287}), 49: (1, {'@': 287}), 54: (1, {'@': 287})}, 334: {20: (1, {'@': 242}), 22: (1, {'@': 242}), 1: (1, {'@': 242}), 23: (1, {'@': 242}), 24: (1, {'@': 242}), 25: (1, {'@': 242}), 10: (1, {'@': 242}), 11: (1, {'@': 242}), 3: (1, {'@': 242}), 28: (1, {'@': 242}), 15: (1, {'@': 242}), 30: (1, {'@': 242}), 5: (1, {'@': 242}), 32: (1, {'@': 242}), 17: (1, {'@': 242}), 18: (1, {'@': 242}), 33: (1, {'@': 242}), 34: (1, {'@': 242}), 21: (1, {'@': 242}), 8: (1, {'@': 242}), 12: (1, {'@': 242}), 27: (1, {'@': 242}), 31: (1, {'@': 242}), 7: (1, {'@': 242}), 9: (1, {'@': 242}), 26: (1, {'@': 242}), 13: (1, {'@': 242}), 14: (1, {'@': 242}), 29: (1, {'@': 242}), 16: (1, {'@': 242}), 19: (1, {'@': 242})}, 335: {20: (1, {'@': 191}), 22: (1, {'@': 191}), 1: (1, {'@': 191}), 23: (1, {'@': 191}), 24: (1, {'@': 191}), 25: (1, {'@': 191}), 10: (1, {'@': 191}), 11: (1, {'@': 191}), 3: (1, {'@': 191}), 28: (1, {'@': 191}), 15: (1, {'@': 191}), 30: (1, {'@': 191}), 5: (1, {'@': 191}), 32: (1, {'@': 191}), 17: (1, {'@': 191}), 18: (1, {'@': 191}), 33: (1, {'@': 191}), 34: (1, {'@': 191}), 21: (1, {'@': 191}), 8: (1, {'@': 191}), 12: (1, {'@': 191}), 27: (1, {'@': 191}), 31: (1, {'@': 191}), 7: (1, {'@': 191}), 9: (1, {'@': 191}), 26: (1, {'@': 191}), 13: (1, {'@': 191}), 14: (1, {'@': 191}), 29: (1, {'@': 191}), 16: (1, {'@': 191}), 19: (1, {'@': 191})}, 336: {20: (1, {'@': 171}), 22: (1, {'@': 171}), 1: (1, {'@': 171}), 23: (1, {'@': 171}), 24: (1, {'@': 171}), 25: (1, {'@': 171}), 10: (1, {'@': 171}), 11: (1, {'@': 171}), 3: (1, {'@': 171}), 28: (1, {'@': 171}), 15: (1, {'@': 171}), 30: (1, {'@': 171}), 5: (1, {'@': 171}), 32: (1, {'@': 171}), 17: (1, {'@': 171}), 18: (1, {'@': 171}), 33: (1, {'@': 171}), 34: (1, {'@': 171}), 21: (1, {'@': 171}), 8: (1, {'@': 171}), 12: (1, {'@': 171}), 27: (1, {'@': 171}), 31: (1, {'@': 171}), 7: (1, {'@': 171}), 9: (1, {'@': 171}), 26: (1, {'@': 171}), 13: (1, {'@': 171}), 14: (1, {'@': 171}), 29: (1, {'@': 171}), 16: (1, {'@': 171}), 19: (1, {'@': 171})}, 337: {37: (0, 297), 51: (0, 36), 29: (0, 491), 64: (0, 511), 56: (0, 11)}, 338: {28: (1, {'@': 274}), 40: (1, {'@': 274}), 29: (1, {'@': 274}), 1: (1, {'@': 274}), 62: (1, {'@': 274}), 55: (1, {'@': 274}), 35: (1, {'@': 274}), 64: (1, {'@': 274}), 49: (1, {'@': 274}), 54: (1, {'@': 274}), 21: (1, {'@': 274}), 31: (1, {'@': 274}), 12: (1, {'@': 274})}, 339: {16: (0, 188)}, 340: {21: (1, {'@': 339}), 31: (1, {'@': 339}), 16: (1, {'@': 339}), 12: (1, {'@': 339}), 27: (1, {'@': 339})}, 341: {70: (0, 417), 69: (0, 514), 12: (0, 532), 31: (0, 524), 21: (0, 486), 28: (1, {'@': 273}), 40: (1, {'@': 273}), 29: (1, {'@': 273}), 1: (1, {'@': 273}), 62: (1, {'@': 273}), 55: (1, {'@': 273}), 35: (1, {'@': 273}), 64: (1, {'@': 273}), 49: (1, {'@': 273}), 54: (1, {'@': 273})}, 342: {20: (1, {'@': 158}), 22: (1, {'@': 158}), 1: (1, {'@': 158}), 23: (1, {'@': 158}), 24: (1, {'@': 158}), 25: (1, {'@': 158}), 10: (1, {'@': 158}), 11: (1, {'@': 158}), 3: (1, {'@': 158}), 28: (1, {'@': 158}), 15: (1, {'@': 158}), 30: (1, {'@': 158}), 5: (1, {'@': 158}), 32: (1, {'@': 158}), 17: (1, {'@': 158}), 18: (1, {'@': 158}), 33: (1, {'@': 158}), 34: (1, {'@': 158}), 21: (1, {'@': 158}), 8: (1, {'@': 158}), 12: (1, {'@': 158}), 27: (1, {'@': 158}), 31: (1, {'@': 158}), 7: (1, {'@': 158}), 9: (1, {'@': 158}), 26: (1, {'@': 158}), 13: (1, {'@': 158}), 14: (1, {'@': 158}), 29: (1, {'@': 158}), 16: (1, {'@': 158}), 19: (1, {'@': 158})}, 343: {20: (1, {'@': 159}), 22: (1, {'@': 159}), 1: (1, {'@': 159}), 23: (1, {'@': 159}), 24: (1, {'@': 159}), 25: (1, {'@': 159}), 10: (1, {'@': 159}), 11: (1, {'@': 159}), 3: (1, {'@': 159}), 28: (1, {'@': 159}), 15: (1, {'@': 159}), 30: (1, {'@': 159}), 5: (1, {'@': 159}), 32: (1, {'@': 159}), 17: (1, {'@': 159}), 18: (1, {'@': 159}), 33: (1, {'@': 159}), 34: (1, {'@': 159}), 21: (1, {'@': 159}), 8: (1, {'@': 159}), 12: (1, {'@': 159}), 27: (1, {'@': 159}), 31: (1, {'@': 159}), 7: (1, {'@': 159}), 9: (1, {'@': 159}), 26: (1, {'@': 159}), 13: (1, {'@': 159}), 14: (1, {'@': 159}), 29: (1, {'@': 159}), 16: (1, {'@': 159}), 19: (1, {'@': 159})}, 344: {64: (0, 511), 51: (0, 60)}, 345: {28: (1, {'@': 276}), 40: (1, {'@': 276}), 29: (1, {'@': 276}), 1: (1, {'@': 276}), 62: (1, {'@': 276}), 55: (1, {'@': 276}), 35: (1, {'@': 276}), 64: (1, {'@': 276}), 49: (1, {'@': 276}), 54: (1, {'@': 276}), 21: (1, {'@': 276}), 31: (1, {'@': 276}), 12: (1, {'@': 276})}, 346: {69: (0, 514), 70: (0, 192), 12: (0, 532), 31: (0, 524), 21: (0, 486), 14: (1, {'@': 180})}, 347: {20: (1, {'@': 61}), 8: (1, {'@': 61}), 21: (1, {'@': 61}), 12: (1, {'@': 61}), 31: (1, {'@': 61}), 27: (1, {'@': 61}), 13: (1, {'@': 61}), 7: (1, {'@': 61}), 14: (1, {'@': 61}), 26: (1, {'@': 61}), 16: (1, {'@': 61}), 9: (1, {'@': 61}), 19: (1, {'@': 61}), 29: (1, {'@': 61})}, 348: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 69: (0, 514), 38: (0, 241), 39: (0, 325), 21: (0, 486), 40: (0, 475), 36: (0, 97), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 70: (0, 320), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109), 14: (1, {'@': 178})}, 349: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 36: (0, 32), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109), 31: (1, {'@': 183}), 21: (1, {'@': 183}), 12: (1, {'@': 183}), 14: (1, {'@': 183})}, 350: {20: (1, {'@': 140}), 22: (1, {'@': 140}), 1: (1, {'@': 140}), 23: (1, {'@': 140}), 24: (1, {'@': 140}), 25: (1, {'@': 140}), 10: (1, {'@': 140}), 11: (1, {'@': 140}), 3: (1, {'@': 140}), 28: (1, {'@': 140}), 15: (1, {'@': 140}), 30: (1, {'@': 140}), 5: (1, {'@': 140}), 32: (1, {'@': 140}), 17: (1, {'@': 140}), 18: (1, {'@': 140}), 33: (1, {'@': 140}), 34: (1, {'@': 140}), 21: (1, {'@': 140}), 8: (1, {'@': 140}), 12: (1, {'@': 140}), 27: (1, {'@': 140}), 31: (1, {'@': 140}), 7: (1, {'@': 140}), 9: (1, {'@': 140}), 26: (1, {'@': 140}), 13: (1, {'@': 140}), 14: (1, {'@': 140}), 29: (1, {'@': 140}), 16: (1, {'@': 140}), 19: (1, {'@': 140})}, 351: {69: (0, 514), 27: (0, 324), 12: (0, 532), 96: (0, 256), 31: (0, 524), 16: (0, 179), 70: (0, 64), 21: (0, 486)}, 352: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 69: (0, 514), 38: (0, 241), 39: (0, 325), 21: (0, 486), 40: (0, 475), 70: (0, 478), 41: (0, 497), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 28: (0, 523), 68: (0, 109)}, 353: {7: (0, 413)}, 354: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 36: (0, 420), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 355: {69: (0, 514), 12: (0, 532), 70: (0, 438), 31: (0, 524), 21: (0, 486), 28: (1, {'@': 269}), 40: (1, {'@': 269}), 29: (1, {'@': 269}), 1: (1, {'@': 269}), 62: (1, {'@': 269}), 55: (1, {'@': 269}), 35: (1, {'@': 269}), 64: (1, {'@': 269}), 49: (1, {'@': 269}), 54: (1, {'@': 269})}, 356: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 44: (0, 224), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 60: (0, 490), 61: (0, 544), 42: (0, 28), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214)}, 357: {20: (1, {'@': 174}), 22: (1, {'@': 174}), 1: (1, {'@': 174}), 23: (1, {'@': 174}), 24: (1, {'@': 174}), 25: (1, {'@': 174}), 10: (1, {'@': 174}), 11: (1, {'@': 174}), 3: (1, {'@': 174}), 28: (1, {'@': 174}), 15: (1, {'@': 174}), 30: (1, {'@': 174}), 5: (1, {'@': 174}), 32: (1, {'@': 174}), 17: (1, {'@': 174}), 18: (1, {'@': 174}), 33: (1, {'@': 174}), 34: (1, {'@': 174}), 21: (1, {'@': 174}), 8: (1, {'@': 174}), 12: (1, {'@': 174}), 27: (1, {'@': 174}), 31: (1, {'@': 174}), 7: (1, {'@': 174}), 9: (1, {'@': 174}), 26: (1, {'@': 174}), 13: (1, {'@': 174}), 14: (1, {'@': 174}), 29: (1, {'@': 174}), 16: (1, {'@': 174}), 19: (1, {'@': 174})}, 358: {4: (0, 535), 101: (0, 541), 5: (0, 153), 20: (1, {'@': 201}), 21: (1, {'@': 201}), 22: (1, {'@': 201}), 1: (1, {'@': 201}), 23: (1, {'@': 201}), 7: (1, {'@': 201}), 8: (1, {'@': 201}), 9: (1, {'@': 201}), 24: (1, {'@': 201}), 10: (1, {'@': 201}), 11: (1, {'@': 201}), 12: (1, {'@': 201}), 25: (1, {'@': 201}), 26: (1, {'@': 201}), 3: (1, {'@': 201}), 27: (1, {'@': 201}), 13: (1, {'@': 201}), 14: (1, {'@': 201}), 28: (1, {'@': 201}), 29: (1, {'@': 201}), 15: (1, {'@': 201}), 30: (1, {'@': 201}), 31: (1, {'@': 201}), 16: (1, {'@': 201}), 32: (1, {'@': 201}), 17: (1, {'@': 201}), 18: (1, {'@': 201}), 19: (1, {'@': 201}), 33: (1, {'@': 201}), 34: (1, {'@': 201})}, 359: {27: (0, 140), 71: (0, 521), 8: (0, 246), 70: (0, 252), 69: (0, 514), 12: (0, 532), 21: (0, 486), 31: (0, 524)}, 360: {28: (1, {'@': 99}), 20: (1, {'@': 99}), 15: (1, {'@': 99}), 22: (1, {'@': 99}), 30: (1, {'@': 99}), 1: (1, {'@': 99}), 23: (1, {'@': 99}), 5: (1, {'@': 99}), 24: (1, {'@': 99}), 25: (1, {'@': 99}), 32: (1, {'@': 99}), 10: (1, {'@': 99}), 11: (1, {'@': 99}), 17: (1, {'@': 99}), 18: (1, {'@': 99}), 3: (1, {'@': 99}), 33: (1, {'@': 99}), 34: (1, {'@': 99}), 21: (1, {'@': 99}), 8: (1, {'@': 99}), 12: (1, {'@': 99}), 27: (1, {'@': 99}), 31: (1, {'@': 99}), 7: (1, {'@': 99}), 9: (1, {'@': 99}), 26: (1, {'@': 99}), 13: (1, {'@': 99}), 14: (1, {'@': 99}), 29: (1, {'@': 99}), 16: (1, {'@': 99}), 19: (1, {'@': 99})}, 361: {7: (0, 355)}, 362: {20: (1, {'@': 162}), 22: (1, {'@': 162}), 1: (1, {'@': 162}), 23: (1, {'@': 162}), 24: (1, {'@': 162}), 25: (1, {'@': 162}), 10: (1, {'@': 162}), 11: (1, {'@': 162}), 3: (1, {'@': 162}), 28: (1, {'@': 162}), 15: (1, {'@': 162}), 30: (1, {'@': 162}), 5: (1, {'@': 162}), 32: (1, {'@': 162}), 17: (1, {'@': 162}), 18: (1, {'@': 162}), 33: (1, {'@': 162}), 34: (1, {'@': 162}), 21: (1, {'@': 162}), 8: (1, {'@': 162}), 12: (1, {'@': 162}), 27: (1, {'@': 162}), 31: (1, {'@': 162}), 7: (1, {'@': 162}), 9: (1, {'@': 162}), 26: (1, {'@': 162}), 13: (1, {'@': 162}), 14: (1, {'@': 162}), 29: (1, {'@': 162}), 16: (1, {'@': 162}), 19: (1, {'@': 162})}, 363: {36: (0, 549), 1: (0, 540), 87: (0, 53), 35: (0, 174), 37: (0, 268), 38: (0, 241), 88: (0, 323), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 8: (0, 14), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 364: {1: (0, 370), 2: (0, 296), 4: (0, 304), 5: (0, 337), 20: (1, {'@': 202}), 21: (1, {'@': 202}), 22: (1, {'@': 202}), 23: (1, {'@': 202}), 7: (1, {'@': 202}), 8: (1, {'@': 202}), 9: (1, {'@': 202}), 24: (1, {'@': 202}), 10: (1, {'@': 202}), 11: (1, {'@': 202}), 12: (1, {'@': 202}), 25: (1, {'@': 202}), 26: (1, {'@': 202}), 3: (1, {'@': 202}), 27: (1, {'@': 202}), 13: (1, {'@': 202}), 14: (1, {'@': 202}), 28: (1, {'@': 202}), 29: (1, {'@': 202}), 15: (1, {'@': 202}), 30: (1, {'@': 202}), 31: (1, {'@': 202}), 16: (1, {'@': 202}), 32: (1, {'@': 202}), 17: (1, {'@': 202}), 18: (1, {'@': 202}), 19: (1, {'@': 202}), 33: (1, {'@': 202}), 34: (1, {'@': 202})}, 365: {28: (1, {'@': 292}), 40: (1, {'@': 292}), 29: (1, {'@': 292}), 1: (1, {'@': 292}), 62: (1, {'@': 292}), 55: (1, {'@': 292}), 35: (1, {'@': 292}), 64: (1, {'@': 292}), 49: (1, {'@': 292}), 54: (1, {'@': 292}), 21: (1, {'@': 292}), 31: (1, {'@': 292}), 12: (1, {'@': 292})}, 366: {20: (1, {'@': 227}), 22: (1, {'@': 227}), 1: (1, {'@': 227}), 23: (1, {'@': 227}), 24: (1, {'@': 227}), 25: (1, {'@': 227}), 10: (1, {'@': 227}), 11: (1, {'@': 227}), 3: (1, {'@': 227}), 28: (1, {'@': 227}), 15: (1, {'@': 227}), 30: (1, {'@': 227}), 5: (1, {'@': 227}), 32: (1, {'@': 227}), 17: (1, {'@': 227}), 18: (1, {'@': 227}), 33: (1, {'@': 227}), 34: (1, {'@': 227}), 21: (1, {'@': 227}), 8: (1, {'@': 227}), 12: (1, {'@': 227}), 27: (1, {'@': 227}), 31: (1, {'@': 227}), 7: (1, {'@': 227}), 9: (1, {'@': 227}), 26: (1, {'@': 227}), 13: (1, {'@': 227}), 14: (1, {'@': 227}), 29: (1, {'@': 227}), 16: (1, {'@': 227}), 19: (1, {'@': 227})}, 367: {20: (1, {'@': 248}), 22: (1, {'@': 248}), 1: (1, {'@': 248}), 23: (1, {'@': 248}), 24: (1, {'@': 248}), 25: (1, {'@': 248}), 10: (1, {'@': 248}), 11: (1, {'@': 248}), 3: (1, {'@': 248}), 28: (1, {'@': 248}), 15: (1, {'@': 248}), 30: (1, {'@': 248}), 5: (1, {'@': 248}), 32: (1, {'@': 248}), 17: (1, {'@': 248}), 18: (1, {'@': 248}), 33: (1, {'@': 248}), 34: (1, {'@': 248}), 21: (1, {'@': 248}), 8: (1, {'@': 248}), 12: (1, {'@': 248}), 27: (1, {'@': 248}), 31: (1, {'@': 248}), 7: (1, {'@': 248}), 9: (1, {'@': 248}), 26: (1, {'@': 248}), 13: (1, {'@': 248}), 14: (1, {'@': 248}), 29: (1, {'@': 248}), 16: (1, {'@': 248}), 19: (1, {'@': 248})}, 368: {70: (0, 377), 69: (0, 514), 12: (0, 532), 31: (0, 524), 21: (0, 486), 28: (1, {'@': 299}), 40: (1, {'@': 299}), 29: (1, {'@': 299}), 1: (1, {'@': 299}), 62: (1, {'@': 299}), 55: (1, {'@': 299}), 35: (1, {'@': 299}), 64: (1, {'@': 299}), 49: (1, {'@': 299}), 54: (1, {'@': 299})}, 369: {20: (0, 156)}, 370: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 38: (0, 241), 69: (0, 514), 39: (0, 325), 21: (0, 486), 40: (0, 475), 41: (0, 152), 42: (0, 13), 70: (0, 16), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 36: (0, 21), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 371: {16: (0, 100)}, 372: {69: (0, 514), 70: (0, 407), 12: (0, 532), 16: (0, 409), 31: (0, 524), 21: (0, 486)}, 373: {20: (1, {'@': 253}), 22: (1, {'@': 253}), 1: (1, {'@': 253}), 23: (1, {'@': 253}), 24: (1, {'@': 253}), 25: (1, {'@': 253}), 10: (1, {'@': 253}), 11: (1, {'@': 253}), 3: (1, {'@': 253}), 28: (1, {'@': 253}), 15: (1, {'@': 253}), 30: (1, {'@': 253}), 5: (1, {'@': 253}), 32: (1, {'@': 253}), 17: (1, {'@': 253}), 18: (1, {'@': 253}), 33: (1, {'@': 253}), 34: (1, {'@': 253}), 21: (1, {'@': 253}), 8: (1, {'@': 253}), 12: (1, {'@': 253}), 27: (1, {'@': 253}), 31: (1, {'@': 253}), 7: (1, {'@': 253}), 9: (1, {'@': 253}), 26: (1, {'@': 253}), 13: (1, {'@': 253}), 14: (1, {'@': 253}), 29: (1, {'@': 253}), 16: (1, {'@': 253}), 19: (1, {'@': 253})}, 374: {20: (1, {'@': 250}), 22: (1, {'@': 250}), 1: (1, {'@': 250}), 23: (1, {'@': 250}), 24: (1, {'@': 250}), 25: (1, {'@': 250}), 10: (1, {'@': 250}), 11: (1, {'@': 250}), 3: (1, {'@': 250}), 28: (1, {'@': 250}), 15: (1, {'@': 250}), 30: (1, {'@': 250}), 5: (1, {'@': 250}), 32: (1, {'@': 250}), 17: (1, {'@': 250}), 18: (1, {'@': 250}), 33: (1, {'@': 250}), 34: (1, {'@': 250}), 21: (1, {'@': 250}), 8: (1, {'@': 250}), 12: (1, {'@': 250}), 27: (1, {'@': 250}), 31: (1, {'@': 250}), 7: (1, {'@': 250}), 9: (1, {'@': 250}), 26: (1, {'@': 250}), 13: (1, {'@': 250}), 14: (1, {'@': 250}), 29: (1, {'@': 250}), 16: (1, {'@': 250}), 19: (1, {'@': 250})}, 375: {7: (0, 386)}, 376: {20: (1, {'@': 190}), 22: (1, {'@': 190}), 1: (1, {'@': 190}), 23: (1, {'@': 190}), 24: (1, {'@': 190}), 25: (1, {'@': 190}), 10: (1, {'@': 190}), 11: (1, {'@': 190}), 3: (1, {'@': 190}), 28: (1, {'@': 190}), 15: (1, {'@': 190}), 30: (1, {'@': 190}), 5: (1, {'@': 190}), 32: (1, {'@': 190}), 17: (1, {'@': 190}), 18: (1, {'@': 190}), 33: (1, {'@': 190}), 34: (1, {'@': 190}), 21: (1, {'@': 190}), 8: (1, {'@': 190}), 12: (1, {'@': 190}), 27: (1, {'@': 190}), 31: (1, {'@': 190}), 7: (1, {'@': 190}), 9: (1, {'@': 190}), 26: (1, {'@': 190}), 13: (1, {'@': 190}), 14: (1, {'@': 190}), 29: (1, {'@': 190}), 16: (1, {'@': 190}), 19: (1, {'@': 190})}, 377: {28: (1, {'@': 298}), 40: (1, {'@': 298}), 29: (1, {'@': 298}), 1: (1, {'@': 298}), 62: (1, {'@': 298}), 55: (1, {'@': 298}), 35: (1, {'@': 298}), 64: (1, {'@': 298}), 49: (1, {'@': 298}), 54: (1, {'@': 298}), 21: (1, {'@': 298}), 31: (1, {'@': 298}), 12: (1, {'@': 298})}, 378: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 0), 40: (0, 475), 44: (0, 224), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 60: (0, 490), 61: (0, 544), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214)}, 379: {1: (1, {'@': 342}), 7: (1, {'@': 342}), 8: (1, {'@': 342}), 9: (1, {'@': 342}), 12: (1, {'@': 342}), 10: (1, {'@': 342}), 11: (1, {'@': 342}), 13: (1, {'@': 342}), 14: (1, {'@': 342}), 15: (1, {'@': 342}), 5: (1, {'@': 342}), 16: (1, {'@': 342}), 17: (1, {'@': 342}), 18: (1, {'@': 342}), 19: (1, {'@': 342}), 20: (1, {'@': 342}), 21: (1, {'@': 342}), 22: (1, {'@': 342}), 23: (1, {'@': 342}), 24: (1, {'@': 342}), 25: (1, {'@': 342}), 26: (1, {'@': 342}), 3: (1, {'@': 342}), 27: (1, {'@': 342}), 28: (1, {'@': 342}), 29: (1, {'@': 342}), 30: (1, {'@': 342}), 31: (1, {'@': 342}), 32: (1, {'@': 342}), 33: (1, {'@': 342}), 34: (1, {'@': 342})}, 380: {28: (1, {'@': 290}), 40: (1, {'@': 290}), 29: (1, {'@': 290}), 1: (1, {'@': 290}), 62: (1, {'@': 290}), 55: (1, {'@': 290}), 35: (1, {'@': 290}), 64: (1, {'@': 290}), 49: (1, {'@': 290}), 54: (1, {'@': 290}), 21: (1, {'@': 290}), 31: (1, {'@': 290}), 12: (1, {'@': 290})}, 381: {7: (0, 181)}, 382: {1: (1, {'@': 343}), 7: (1, {'@': 343}), 8: (1, {'@': 343}), 9: (1, {'@': 343}), 12: (1, {'@': 343}), 10: (1, {'@': 343}), 11: (1, {'@': 343}), 13: (1, {'@': 343}), 14: (1, {'@': 343}), 15: (1, {'@': 343}), 5: (1, {'@': 343}), 16: (1, {'@': 343}), 17: (1, {'@': 343}), 18: (1, {'@': 343}), 19: (1, {'@': 343}), 20: (1, {'@': 343}), 21: (1, {'@': 343}), 22: (1, {'@': 343}), 23: (1, {'@': 343}), 24: (1, {'@': 343}), 25: (1, {'@': 343}), 26: (1, {'@': 343}), 3: (1, {'@': 343}), 27: (1, {'@': 343}), 28: (1, {'@': 343}), 29: (1, {'@': 343}), 30: (1, {'@': 343}), 31: (1, {'@': 343}), 32: (1, {'@': 343}), 33: (1, {'@': 343}), 34: (1, {'@': 343})}, 383: {73: (0, 239), 18: (0, 145), 28: (0, 93), 20: (1, {'@': 82}), 15: (1, {'@': 82}), 22: (1, {'@': 82}), 30: (1, {'@': 82}), 23: (1, {'@': 82}), 24: (1, {'@': 82}), 25: (1, {'@': 82}), 10: (1, {'@': 82}), 11: (1, {'@': 82}), 33: (1, {'@': 82}), 21: (1, {'@': 82}), 31: (1, {'@': 82}), 8: (1, {'@': 82}), 27: (1, {'@': 82}), 12: (1, {'@': 82}), 7: (1, {'@': 82}), 9: (1, {'@': 82}), 26: (1, {'@': 82}), 13: (1, {'@': 82}), 14: (1, {'@': 82}), 29: (1, {'@': 82}), 16: (1, {'@': 82}), 19: (1, {'@': 82})}, 384: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 36: (0, 429), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 385: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 38: (0, 241), 69: (0, 514), 36: (0, 243), 39: (0, 325), 21: (0, 486), 40: (0, 475), 70: (0, 87), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 386: {69: (0, 514), 70: (0, 435), 12: (0, 532), 31: (0, 524), 21: (0, 486), 28: (1, {'@': 285}), 40: (1, {'@': 285}), 29: (1, {'@': 285}), 1: (1, {'@': 285}), 62: (1, {'@': 285}), 55: (1, {'@': 285}), 35: (1, {'@': 285}), 64: (1, {'@': 285}), 49: (1, {'@': 285}), 54: (1, {'@': 285})}, 387: {7: (0, 189)}, 388: {20: (1, {'@': 153}), 22: (1, {'@': 153}), 1: (1, {'@': 153}), 23: (1, {'@': 153}), 24: (1, {'@': 153}), 25: (1, {'@': 153}), 10: (1, {'@': 153}), 11: (1, {'@': 153}), 3: (1, {'@': 153}), 28: (1, {'@': 153}), 15: (1, {'@': 153}), 30: (1, {'@': 153}), 5: (1, {'@': 153}), 32: (1, {'@': 153}), 17: (1, {'@': 153}), 18: (1, {'@': 153}), 33: (1, {'@': 153}), 34: (1, {'@': 153}), 21: (1, {'@': 153}), 8: (1, {'@': 153}), 12: (1, {'@': 153}), 27: (1, {'@': 153}), 31: (1, {'@': 153}), 7: (1, {'@': 153}), 9: (1, {'@': 153}), 26: (1, {'@': 153}), 13: (1, {'@': 153}), 14: (1, {'@': 153}), 29: (1, {'@': 153}), 16: (1, {'@': 153}), 19: (1, {'@': 153})}, 389: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 69: (0, 514), 38: (0, 241), 39: (0, 325), 21: (0, 486), 40: (0, 475), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 41: (0, 489), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 70: (0, 494), 64: (0, 511), 65: (0, 211), 66: (0, 214), 28: (0, 523), 68: (0, 109)}, 390: {20: (1, {'@': 247}), 22: (1, {'@': 247}), 1: (1, {'@': 247}), 23: (1, {'@': 247}), 24: (1, {'@': 247}), 25: (1, {'@': 247}), 10: (1, {'@': 247}), 11: (1, {'@': 247}), 3: (1, {'@': 247}), 28: (1, {'@': 247}), 15: (1, {'@': 247}), 30: (1, {'@': 247}), 5: (1, {'@': 247}), 32: (1, {'@': 247}), 17: (1, {'@': 247}), 18: (1, {'@': 247}), 33: (1, {'@': 247}), 34: (1, {'@': 247}), 21: (1, {'@': 247}), 8: (1, {'@': 247}), 12: (1, {'@': 247}), 27: (1, {'@': 247}), 31: (1, {'@': 247}), 7: (1, {'@': 247}), 9: (1, {'@': 247}), 26: (1, {'@': 247}), 13: (1, {'@': 247}), 14: (1, {'@': 247}), 29: (1, {'@': 247}), 16: (1, {'@': 247}), 19: (1, {'@': 247})}, 391: {40: (1, {'@': 91}), 29: (1, {'@': 91}), 1: (1, {'@': 91}), 55: (1, {'@': 91}), 35: (1, {'@': 91}), 64: (1, {'@': 91}), 49: (1, {'@': 91}), 54: (1, {'@': 91})}, 392: {20: (1, {'@': 132}), 22: (1, {'@': 132}), 1: (1, {'@': 132}), 23: (1, {'@': 132}), 24: (1, {'@': 132}), 25: (1, {'@': 132}), 10: (1, {'@': 132}), 11: (1, {'@': 132}), 3: (1, {'@': 132}), 28: (1, {'@': 132}), 15: (1, {'@': 132}), 30: (1, {'@': 132}), 5: (1, {'@': 132}), 32: (1, {'@': 132}), 17: (1, {'@': 132}), 18: (1, {'@': 132}), 33: (1, {'@': 132}), 34: (1, {'@': 132}), 21: (1, {'@': 132}), 8: (1, {'@': 132}), 12: (1, {'@': 132}), 27: (1, {'@': 132}), 31: (1, {'@': 132}), 7: (1, {'@': 132}), 9: (1, {'@': 132}), 26: (1, {'@': 132}), 13: (1, {'@': 132}), 14: (1, {'@': 132}), 29: (1, {'@': 132}), 16: (1, {'@': 132}), 19: (1, {'@': 132})}, 393: {20: (1, {'@': 237}), 22: (1, {'@': 237}), 1: (1, {'@': 237}), 23: (1, {'@': 237}), 24: (1, {'@': 237}), 25: (1, {'@': 237}), 10: (1, {'@': 237}), 11: (1, {'@': 237}), 3: (1, {'@': 237}), 28: (1, {'@': 237}), 15: (1, {'@': 237}), 30: (1, {'@': 237}), 5: (1, {'@': 237}), 32: (1, {'@': 237}), 17: (1, {'@': 237}), 18: (1, {'@': 237}), 33: (1, {'@': 237}), 34: (1, {'@': 237}), 21: (1, {'@': 237}), 8: (1, {'@': 237}), 12: (1, {'@': 237}), 27: (1, {'@': 237}), 31: (1, {'@': 237}), 7: (1, {'@': 237}), 9: (1, {'@': 237}), 26: (1, {'@': 237}), 13: (1, {'@': 237}), 14: (1, {'@': 237}), 29: (1, {'@': 237}), 16: (1, {'@': 237}), 19: (1, {'@': 237})}, 394: {8: (0, 515)}, 395: {69: (0, 514), 70: (0, 425), 12: (0, 532), 31: (0, 524), 21: (0, 486), 28: (1, {'@': 289}), 40: (1, {'@': 289}), 29: (1, {'@': 289}), 1: (1, {'@': 289}), 62: (1, {'@': 289}), 55: (1, {'@': 289}), 35: (1, {'@': 289}), 64: (1, {'@': 289}), 49: (1, {'@': 289}), 54: (1, {'@': 289})}, 396: {16: (0, 430)}, 397: {20: (1, {'@': 235}), 22: (1, {'@': 235}), 1: (1, {'@': 235}), 23: (1, {'@': 235}), 24: (1, {'@': 235}), 25: (1, {'@': 235}), 10: (1, {'@': 235}), 11: (1, {'@': 235}), 3: (1, {'@': 235}), 28: (1, {'@': 235}), 15: (1, {'@': 235}), 30: (1, {'@': 235}), 5: (1, {'@': 235}), 32: (1, {'@': 235}), 17: (1, {'@': 235}), 18: (1, {'@': 235}), 33: (1, {'@': 235}), 34: (1, {'@': 235}), 21: (1, {'@': 235}), 8: (1, {'@': 235}), 12: (1, {'@': 235}), 27: (1, {'@': 235}), 31: (1, {'@': 235}), 7: (1, {'@': 235}), 9: (1, {'@': 235}), 26: (1, {'@': 235}), 13: (1, {'@': 235}), 14: (1, {'@': 235}), 29: (1, {'@': 235}), 16: (1, {'@': 235}), 19: (1, {'@': 235})}, 398: {40: (1, {'@': 90}), 29: (1, {'@': 90}), 1: (1, {'@': 90}), 55: (1, {'@': 90}), 35: (1, {'@': 90}), 64: (1, {'@': 90}), 49: (1, {'@': 90}), 54: (1, {'@': 90})}, 399: {69: (0, 514), 12: (0, 532), 70: (0, 428), 16: (0, 426), 31: (0, 524), 21: (0, 486)}, 400: {40: (1, {'@': 92}), 29: (1, {'@': 92}), 1: (1, {'@': 92}), 55: (1, {'@': 92}), 35: (1, {'@': 92}), 64: (1, {'@': 92}), 49: (1, {'@': 92}), 54: (1, {'@': 92})}, 401: {64: (0, 444), 20: (1, {'@': 121}), 22: (1, {'@': 121}), 1: (1, {'@': 121}), 23: (1, {'@': 121}), 24: (1, {'@': 121}), 25: (1, {'@': 121}), 10: (1, {'@': 121}), 11: (1, {'@': 121}), 3: (1, {'@': 121}), 28: (1, {'@': 121}), 15: (1, {'@': 121}), 30: (1, {'@': 121}), 5: (1, {'@': 121}), 32: (1, {'@': 121}), 17: (1, {'@': 121}), 18: (1, {'@': 121}), 33: (1, {'@': 121}), 34: (1, {'@': 121}), 21: (1, {'@': 121}), 8: (1, {'@': 121}), 12: (1, {'@': 121}), 27: (1, {'@': 121}), 31: (1, {'@': 121}), 7: (1, {'@': 121}), 9: (1, {'@': 121}), 26: (1, {'@': 121}), 13: (1, {'@': 121}), 14: (1, {'@': 121}), 29: (1, {'@': 121}), 16: (1, {'@': 121}), 19: (1, {'@': 121})}, 402: {20: (1, {'@': 193}), 22: (1, {'@': 193}), 1: (1, {'@': 193}), 23: (1, {'@': 193}), 24: (1, {'@': 193}), 25: (1, {'@': 193}), 10: (1, {'@': 193}), 11: (1, {'@': 193}), 3: (1, {'@': 193}), 28: (1, {'@': 193}), 15: (1, {'@': 193}), 30: (1, {'@': 193}), 5: (1, {'@': 193}), 32: (1, {'@': 193}), 17: (1, {'@': 193}), 18: (1, {'@': 193}), 33: (1, {'@': 193}), 34: (1, {'@': 193}), 21: (1, {'@': 193}), 8: (1, {'@': 193}), 12: (1, {'@': 193}), 27: (1, {'@': 193}), 31: (1, {'@': 193}), 7: (1, {'@': 193}), 9: (1, {'@': 193}), 26: (1, {'@': 193}), 13: (1, {'@': 193}), 14: (1, {'@': 193}), 29: (1, {'@': 193}), 16: (1, {'@': 193}), 19: (1, {'@': 193})}, 403: {16: (1, {'@': 54}), 29: (1, {'@': 54}), 31: (1, {'@': 54}), 21: (1, {'@': 54}), 12: (1, {'@': 54}), 19: (1, {'@': 54})}, 404: {16: (0, 427)}, 405: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 42: (0, 13), 44: (0, 224), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 53: (0, 94), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 60: (0, 490), 61: (0, 544), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214)}, 406: {40: (1, {'@': 96}), 29: (1, {'@': 96}), 1: (1, {'@': 96}), 55: (1, {'@': 96}), 35: (1, {'@': 96}), 64: (1, {'@': 96}), 49: (1, {'@': 96}), 54: (1, {'@': 96})}, 407: {16: (0, 431)}, 408: {40: (1, {'@': 95}), 29: (1, {'@': 95}), 1: (1, {'@': 95}), 55: (1, {'@': 95}), 35: (1, {'@': 95}), 64: (1, {'@': 95}), 49: (1, {'@': 95}), 54: (1, {'@': 95})}, 409: {20: (1, {'@': 240}), 22: (1, {'@': 240}), 1: (1, {'@': 240}), 23: (1, {'@': 240}), 24: (1, {'@': 240}), 25: (1, {'@': 240}), 10: (1, {'@': 240}), 11: (1, {'@': 240}), 3: (1, {'@': 240}), 28: (1, {'@': 240}), 15: (1, {'@': 240}), 30: (1, {'@': 240}), 5: (1, {'@': 240}), 32: (1, {'@': 240}), 17: (1, {'@': 240}), 18: (1, {'@': 240}), 33: (1, {'@': 240}), 34: (1, {'@': 240}), 21: (1, {'@': 240}), 8: (1, {'@': 240}), 12: (1, {'@': 240}), 27: (1, {'@': 240}), 31: (1, {'@': 240}), 7: (1, {'@': 240}), 9: (1, {'@': 240}), 26: (1, {'@': 240}), 13: (1, {'@': 240}), 14: (1, {'@': 240}), 29: (1, {'@': 240}), 16: (1, {'@': 240}), 19: (1, {'@': 240})}, 410: {20: (1, {'@': 243}), 22: (1, {'@': 243}), 1: (1, {'@': 243}), 23: (1, {'@': 243}), 24: (1, {'@': 243}), 25: (1, {'@': 243}), 10: (1, {'@': 243}), 11: (1, {'@': 243}), 3: (1, {'@': 243}), 28: (1, {'@': 243}), 15: (1, {'@': 243}), 30: (1, {'@': 243}), 5: (1, {'@': 243}), 32: (1, {'@': 243}), 17: (1, {'@': 243}), 18: (1, {'@': 243}), 33: (1, {'@': 243}), 34: (1, {'@': 243}), 21: (1, {'@': 243}), 8: (1, {'@': 243}), 12: (1, {'@': 243}), 27: (1, {'@': 243}), 31: (1, {'@': 243}), 7: (1, {'@': 243}), 9: (1, {'@': 243}), 26: (1, {'@': 243}), 13: (1, {'@': 243}), 14: (1, {'@': 243}), 29: (1, {'@': 243}), 16: (1, {'@': 243}), 19: (1, {'@': 243})}, 411: {40: (1, {'@': 93}), 29: (1, {'@': 93}), 1: (1, {'@': 93}), 55: (1, {'@': 93}), 35: (1, {'@': 93}), 64: (1, {'@': 93}), 49: (1, {'@': 93}), 54: (1, {'@': 93})}, 412: {51: (0, 65), 64: (0, 511)}, 413: {69: (0, 514), 12: (0, 532), 31: (0, 524), 21: (0, 486), 70: (0, 434), 28: (1, {'@': 267}), 40: (1, {'@': 267}), 29: (1, {'@': 267}), 1: (1, {'@': 267}), 62: (1, {'@': 267}), 55: (1, {'@': 267}), 35: (1, {'@': 267}), 64: (1, {'@': 267}), 49: (1, {'@': 267}), 54: (1, {'@': 267})}, 414: {40: (1, {'@': 94}), 29: (1, {'@': 94}), 1: (1, {'@': 94}), 55: (1, {'@': 94}), 35: (1, {'@': 94}), 64: (1, {'@': 94}), 49: (1, {'@': 94}), 54: (1, {'@': 94})}, 415: {28: (1, {'@': 286}), 40: (1, {'@': 286}), 29: (1, {'@': 286}), 1: (1, {'@': 286}), 62: (1, {'@': 286}), 55: (1, {'@': 286}), 35: (1, {'@': 286}), 64: (1, {'@': 286}), 49: (1, {'@': 286}), 54: (1, {'@': 286}), 21: (1, {'@': 286}), 31: (1, {'@': 286}), 12: (1, {'@': 286})}, 416: {23: (0, 406), 30: (0, 414), 15: (0, 408), 22: (0, 411), 102: (0, 244), 24: (1, {'@': 80}), 25: (1, {'@': 80}), 20: (1, {'@': 80}), 10: (1, {'@': 80}), 11: (1, {'@': 80}), 33: (1, {'@': 80}), 21: (1, {'@': 80}), 31: (1, {'@': 80}), 8: (1, {'@': 80}), 12: (1, {'@': 80}), 27: (1, {'@': 80}), 7: (1, {'@': 80}), 9: (1, {'@': 80}), 26: (1, {'@': 80}), 13: (1, {'@': 80}), 14: (1, {'@': 80}), 29: (1, {'@': 80}), 16: (1, {'@': 80}), 19: (1, {'@': 80})}, 417: {28: (1, {'@': 272}), 40: (1, {'@': 272}), 29: (1, {'@': 272}), 1: (1, {'@': 272}), 62: (1, {'@': 272}), 55: (1, {'@': 272}), 35: (1, {'@': 272}), 64: (1, {'@': 272}), 49: (1, {'@': 272}), 54: (1, {'@': 272}), 21: (1, {'@': 272}), 31: (1, {'@': 272}), 12: (1, {'@': 272})}, 418: {0: (0, 402), 1: (0, 264), 2: (0, 376), 3: (0, 358), 4: (0, 335), 5: (0, 337), 6: (0, 322), 20: (1, {'@': 73}), 33: (1, {'@': 73}), 8: (1, {'@': 73}), 21: (1, {'@': 73}), 12: (1, {'@': 73}), 27: (1, {'@': 73}), 31: (1, {'@': 73}), 13: (1, {'@': 73}), 14: (1, {'@': 73}), 29: (1, {'@': 73}), 7: (1, {'@': 73}), 9: (1, {'@': 73}), 16: (1, {'@': 73}), 19: (1, {'@': 73}), 26: (1, {'@': 73})}, 419: {19: (1, {'@': 44})}, 420: {7: (0, 433)}, 421: {16: (1, {'@': 305}), 29: (1, {'@': 305}), 31: (1, {'@': 305}), 21: (1, {'@': 305}), 12: (1, {'@': 305}), 19: (1, {'@': 305})}, 422: {7: (0, 432)}, 423: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 36: (0, 440), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 424: {40: (1, {'@': 87}), 29: (1, {'@': 87}), 1: (1, {'@': 87}), 55: (1, {'@': 87}), 35: (1, {'@': 87}), 64: (1, {'@': 87}), 49: (1, {'@': 87}), 54: (1, {'@': 87})}, 425: {28: (1, {'@': 288}), 40: (1, {'@': 288}), 29: (1, {'@': 288}), 1: (1, {'@': 288}), 62: (1, {'@': 288}), 55: (1, {'@': 288}), 35: (1, {'@': 288}), 64: (1, {'@': 288}), 49: (1, {'@': 288}), 54: (1, {'@': 288}), 21: (1, {'@': 288}), 31: (1, {'@': 288}), 12: (1, {'@': 288})}, 426: {20: (1, {'@': 233}), 22: (1, {'@': 233}), 1: (1, {'@': 233}), 23: (1, {'@': 233}), 24: (1, {'@': 233}), 25: (1, {'@': 233}), 10: (1, {'@': 233}), 11: (1, {'@': 233}), 3: (1, {'@': 233}), 28: (1, {'@': 233}), 15: (1, {'@': 233}), 30: (1, {'@': 233}), 5: (1, {'@': 233}), 32: (1, {'@': 233}), 17: (1, {'@': 233}), 18: (1, {'@': 233}), 33: (1, {'@': 233}), 34: (1, {'@': 233}), 21: (1, {'@': 233}), 8: (1, {'@': 233}), 12: (1, {'@': 233}), 27: (1, {'@': 233}), 31: (1, {'@': 233}), 7: (1, {'@': 233}), 9: (1, {'@': 233}), 26: (1, {'@': 233}), 13: (1, {'@': 233}), 14: (1, {'@': 233}), 29: (1, {'@': 233}), 16: (1, {'@': 233}), 19: (1, {'@': 233})}, 427: {20: (1, {'@': 234}), 22: (1, {'@': 234}), 1: (1, {'@': 234}), 23: (1, {'@': 234}), 24: (1, {'@': 234}), 25: (1, {'@': 234}), 10: (1, {'@': 234}), 11: (1, {'@': 234}), 3: (1, {'@': 234}), 28: (1, {'@': 234}), 15: (1, {'@': 234}), 30: (1, {'@': 234}), 5: (1, {'@': 234}), 32: (1, {'@': 234}), 17: (1, {'@': 234}), 18: (1, {'@': 234}), 33: (1, {'@': 234}), 34: (1, {'@': 234}), 21: (1, {'@': 234}), 8: (1, {'@': 234}), 12: (1, {'@': 234}), 27: (1, {'@': 234}), 31: (1, {'@': 234}), 7: (1, {'@': 234}), 9: (1, {'@': 234}), 26: (1, {'@': 234}), 13: (1, {'@': 234}), 14: (1, {'@': 234}), 29: (1, {'@': 234}), 16: (1, {'@': 234}), 19: (1, {'@': 234})}, 428: {16: (0, 508)}, 429: {7: (0, 439)}, 430: {20: (1, {'@': 236}), 22: (1, {'@': 236}), 1: (1, {'@': 236}), 23: (1, {'@': 236}), 24: (1, {'@': 236}), 25: (1, {'@': 236}), 10: (1, {'@': 236}), 11: (1, {'@': 236}), 3: (1, {'@': 236}), 28: (1, {'@': 236}), 15: (1, {'@': 236}), 30: (1, {'@': 236}), 5: (1, {'@': 236}), 32: (1, {'@': 236}), 17: (1, {'@': 236}), 18: (1, {'@': 236}), 33: (1, {'@': 236}), 34: (1, {'@': 236}), 21: (1, {'@': 236}), 8: (1, {'@': 236}), 12: (1, {'@': 236}), 27: (1, {'@': 236}), 31: (1, {'@': 236}), 7: (1, {'@': 236}), 9: (1, {'@': 236}), 26: (1, {'@': 236}), 13: (1, {'@': 236}), 14: (1, {'@': 236}), 29: (1, {'@': 236}), 16: (1, {'@': 236}), 19: (1, {'@': 236})}, 431: {20: (1, {'@': 239}), 22: (1, {'@': 239}), 1: (1, {'@': 239}), 23: (1, {'@': 239}), 24: (1, {'@': 239}), 25: (1, {'@': 239}), 10: (1, {'@': 239}), 11: (1, {'@': 239}), 3: (1, {'@': 239}), 28: (1, {'@': 239}), 15: (1, {'@': 239}), 30: (1, {'@': 239}), 5: (1, {'@': 239}), 32: (1, {'@': 239}), 17: (1, {'@': 239}), 18: (1, {'@': 239}), 33: (1, {'@': 239}), 34: (1, {'@': 239}), 21: (1, {'@': 239}), 8: (1, {'@': 239}), 12: (1, {'@': 239}), 27: (1, {'@': 239}), 31: (1, {'@': 239}), 7: (1, {'@': 239}), 9: (1, {'@': 239}), 26: (1, {'@': 239}), 13: (1, {'@': 239}), 14: (1, {'@': 239}), 29: (1, {'@': 239}), 16: (1, {'@': 239}), 19: (1, {'@': 239})}, 432: {69: (0, 514), 70: (0, 240), 12: (0, 532), 31: (0, 524), 21: (0, 486), 28: (1, {'@': 263}), 40: (1, {'@': 263}), 29: (1, {'@': 263}), 1: (1, {'@': 263}), 62: (1, {'@': 263}), 55: (1, {'@': 263}), 35: (1, {'@': 263}), 64: (1, {'@': 263}), 49: (1, {'@': 263}), 54: (1, {'@': 263})}, 433: {69: (0, 514), 12: (0, 532), 70: (0, 237), 31: (0, 524), 21: (0, 486), 28: (1, {'@': 265}), 40: (1, {'@': 265}), 29: (1, {'@': 265}), 1: (1, {'@': 265}), 62: (1, {'@': 265}), 55: (1, {'@': 265}), 35: (1, {'@': 265}), 64: (1, {'@': 265}), 49: (1, {'@': 265}), 54: (1, {'@': 265})}, 434: {28: (1, {'@': 266}), 40: (1, {'@': 266}), 29: (1, {'@': 266}), 1: (1, {'@': 266}), 62: (1, {'@': 266}), 55: (1, {'@': 266}), 35: (1, {'@': 266}), 64: (1, {'@': 266}), 49: (1, {'@': 266}), 54: (1, {'@': 266}), 21: (1, {'@': 266}), 31: (1, {'@': 266}), 12: (1, {'@': 266})}, 435: {28: (1, {'@': 284}), 40: (1, {'@': 284}), 29: (1, {'@': 284}), 1: (1, {'@': 284}), 62: (1, {'@': 284}), 55: (1, {'@': 284}), 35: (1, {'@': 284}), 64: (1, {'@': 284}), 49: (1, {'@': 284}), 54: (1, {'@': 284}), 21: (1, {'@': 284}), 31: (1, {'@': 284}), 12: (1, {'@': 284})}, 436: {11: (0, 424), 91: (0, 455), 24: (1, {'@': 76}), 20: (1, {'@': 76}), 33: (1, {'@': 76}), 8: (1, {'@': 76}), 21: (1, {'@': 76}), 12: (1, {'@': 76}), 31: (1, {'@': 76}), 27: (1, {'@': 76}), 13: (1, {'@': 76}), 14: (1, {'@': 76}), 29: (1, {'@': 76}), 7: (1, {'@': 76}), 9: (1, {'@': 76}), 16: (1, {'@': 76}), 19: (1, {'@': 76}), 26: (1, {'@': 76})}, 437: {28: (1, {'@': 282}), 40: (1, {'@': 282}), 29: (1, {'@': 282}), 1: (1, {'@': 282}), 62: (1, {'@': 282}), 55: (1, {'@': 282}), 35: (1, {'@': 282}), 64: (1, {'@': 282}), 49: (1, {'@': 282}), 54: (1, {'@': 282}), 21: (1, {'@': 282}), 31: (1, {'@': 282}), 12: (1, {'@': 282})}, 438: {28: (1, {'@': 268}), 40: (1, {'@': 268}), 29: (1, {'@': 268}), 1: (1, {'@': 268}), 62: (1, {'@': 268}), 55: (1, {'@': 268}), 35: (1, {'@': 268}), 64: (1, {'@': 268}), 49: (1, {'@': 268}), 54: (1, {'@': 268}), 21: (1, {'@': 268}), 31: (1, {'@': 268}), 12: (1, {'@': 268})}, 439: {69: (0, 514), 12: (0, 532), 70: (0, 250), 31: (0, 524), 21: (0, 486), 28: (1, {'@': 281}), 40: (1, {'@': 281}), 29: (1, {'@': 281}), 1: (1, {'@': 281}), 62: (1, {'@': 281}), 55: (1, {'@': 281}), 35: (1, {'@': 281}), 64: (1, {'@': 281}), 49: (1, {'@': 281}), 54: (1, {'@': 281})}, 440: {7: (0, 234)}, 441: {20: (1, {'@': 175}), 22: (1, {'@': 175}), 1: (1, {'@': 175}), 23: (1, {'@': 175}), 24: (1, {'@': 175}), 25: (1, {'@': 175}), 10: (1, {'@': 175}), 11: (1, {'@': 175}), 3: (1, {'@': 175}), 28: (1, {'@': 175}), 15: (1, {'@': 175}), 30: (1, {'@': 175}), 5: (1, {'@': 175}), 32: (1, {'@': 175}), 17: (1, {'@': 175}), 18: (1, {'@': 175}), 33: (1, {'@': 175}), 34: (1, {'@': 175}), 21: (1, {'@': 175}), 8: (1, {'@': 175}), 12: (1, {'@': 175}), 27: (1, {'@': 175}), 31: (1, {'@': 175}), 7: (1, {'@': 175}), 9: (1, {'@': 175}), 26: (1, {'@': 175}), 13: (1, {'@': 175}), 14: (1, {'@': 175}), 29: (1, {'@': 175}), 16: (1, {'@': 175}), 19: (1, {'@': 175})}, 442: {14: (0, 357)}, 443: {20: (1, {'@': 137}), 22: (1, {'@': 137}), 1: (1, {'@': 137}), 23: (1, {'@': 137}), 24: (1, {'@': 137}), 25: (1, {'@': 137}), 10: (1, {'@': 137}), 11: (1, {'@': 137}), 3: (1, {'@': 137}), 28: (1, {'@': 137}), 15: (1, {'@': 137}), 30: (1, {'@': 137}), 5: (1, {'@': 137}), 32: (1, {'@': 137}), 17: (1, {'@': 137}), 18: (1, {'@': 137}), 33: (1, {'@': 137}), 34: (1, {'@': 137}), 21: (1, {'@': 137}), 8: (1, {'@': 137}), 12: (1, {'@': 137}), 27: (1, {'@': 137}), 31: (1, {'@': 137}), 7: (1, {'@': 137}), 9: (1, {'@': 137}), 26: (1, {'@': 137}), 13: (1, {'@': 137}), 14: (1, {'@': 137}), 29: (1, {'@': 137}), 16: (1, {'@': 137}), 19: (1, {'@': 137})}, 444: {20: (1, {'@': 329}), 22: (1, {'@': 329}), 1: (1, {'@': 329}), 23: (1, {'@': 329}), 85: (1, {'@': 329}), 24: (1, {'@': 329}), 25: (1, {'@': 329}), 10: (1, {'@': 329}), 11: (1, {'@': 329}), 64: (1, {'@': 329}), 3: (1, {'@': 329}), 28: (1, {'@': 329}), 15: (1, {'@': 329}), 30: (1, {'@': 329}), 5: (1, {'@': 329}), 32: (1, {'@': 329}), 17: (1, {'@': 329}), 18: (1, {'@': 329}), 33: (1, {'@': 329}), 34: (1, {'@': 329}), 21: (1, {'@': 329}), 8: (1, {'@': 329}), 12: (1, {'@': 329}), 27: (1, {'@': 329}), 31: (1, {'@': 329}), 7: (1, {'@': 329}), 9: (1, {'@': 329}), 13: (1, {'@': 329}), 14: (1, {'@': 329}), 16: (1, {'@': 329}), 19: (1, {'@': 329}), 26: (1, {'@': 329}), 29: (1, {'@': 329})}, 445: {69: (0, 514), 27: (0, 473), 70: (0, 136), 8: (0, 138), 12: (0, 532), 31: (0, 524), 21: (0, 486)}, 446: {20: (1, {'@': 133}), 22: (1, {'@': 133}), 1: (1, {'@': 133}), 23: (1, {'@': 133}), 24: (1, {'@': 133}), 25: (1, {'@': 133}), 10: (1, {'@': 133}), 11: (1, {'@': 133}), 3: (1, {'@': 133}), 28: (1, {'@': 133}), 15: (1, {'@': 133}), 30: (1, {'@': 133}), 5: (1, {'@': 133}), 32: (1, {'@': 133}), 17: (1, {'@': 133}), 18: (1, {'@': 133}), 33: (1, {'@': 133}), 34: (1, {'@': 133}), 21: (1, {'@': 133}), 8: (1, {'@': 133}), 12: (1, {'@': 133}), 27: (1, {'@': 133}), 31: (1, {'@': 133}), 7: (1, {'@': 133}), 9: (1, {'@': 133}), 26: (1, {'@': 133}), 13: (1, {'@': 133}), 14: (1, {'@': 133}), 29: (1, {'@': 133}), 16: (1, {'@': 133}), 19: (1, {'@': 133})}, 447: {8: (0, 279)}, 448: {20: (1, {'@': 228}), 22: (1, {'@': 228}), 1: (1, {'@': 228}), 23: (1, {'@': 228}), 24: (1, {'@': 228}), 25: (1, {'@': 228}), 10: (1, {'@': 228}), 11: (1, {'@': 228}), 3: (1, {'@': 228}), 28: (1, {'@': 228}), 15: (1, {'@': 228}), 30: (1, {'@': 228}), 5: (1, {'@': 228}), 32: (1, {'@': 228}), 17: (1, {'@': 228}), 18: (1, {'@': 228}), 33: (1, {'@': 228}), 34: (1, {'@': 228}), 21: (1, {'@': 228}), 8: (1, {'@': 228}), 12: (1, {'@': 228}), 27: (1, {'@': 228}), 31: (1, {'@': 228}), 7: (1, {'@': 228}), 9: (1, {'@': 228}), 26: (1, {'@': 228}), 13: (1, {'@': 228}), 14: (1, {'@': 228}), 29: (1, {'@': 228}), 16: (1, {'@': 228}), 19: (1, {'@': 228})}, 449: {37: (0, 220), 29: (0, 491)}, 450: {1: (0, 540), 36: (0, 162), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 451: {16: (1, {'@': 164}), 21: (1, {'@': 164}), 12: (1, {'@': 164}), 31: (1, {'@': 164}), 27: (1, {'@': 164})}, 452: {16: (1, {'@': 166}), 21: (1, {'@': 166}), 12: (1, {'@': 166}), 31: (1, {'@': 166}), 27: (1, {'@': 166})}, 453: {16: (1, {'@': 167}), 21: (1, {'@': 167}), 12: (1, {'@': 167}), 31: (1, {'@': 167}), 27: (1, {'@': 167})}, 454: {69: (0, 514), 12: (0, 532), 21: (0, 486), 31: (0, 524), 70: (0, 403)}, 455: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 42: (0, 13), 43: (0, 206), 44: (0, 224), 46: (0, 185), 52: (0, 40), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 60: (0, 490), 61: (0, 544), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214)}, 456: {24: (0, 295), 93: (0, 178), 20: (1, {'@': 74}), 33: (1, {'@': 74}), 8: (1, {'@': 74}), 21: (1, {'@': 74}), 12: (1, {'@': 74}), 27: (1, {'@': 74}), 31: (1, {'@': 74}), 13: (1, {'@': 74}), 14: (1, {'@': 74}), 29: (1, {'@': 74}), 7: (1, {'@': 74}), 9: (1, {'@': 74}), 16: (1, {'@': 74}), 19: (1, {'@': 74}), 26: (1, {'@': 74})}, 457: {1: (0, 540), 35: (0, 174), 37: (0, 284), 38: (0, 241), 39: (0, 325), 40: (0, 475), 36: (0, 42), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 16: (0, 169), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 77: (0, 467), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 458: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 69: (0, 514), 38: (0, 241), 39: (0, 325), 21: (0, 486), 40: (0, 475), 41: (0, 152), 42: (0, 13), 70: (0, 202), 43: (0, 206), 44: (0, 224), 8: (0, 210), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 36: (0, 212), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 459: {8: (0, 350)}, 460: {20: (1, {'@': 157}), 22: (1, {'@': 157}), 1: (1, {'@': 157}), 23: (1, {'@': 157}), 24: (1, {'@': 157}), 25: (1, {'@': 157}), 10: (1, {'@': 157}), 11: (1, {'@': 157}), 3: (1, {'@': 157}), 28: (1, {'@': 157}), 15: (1, {'@': 157}), 30: (1, {'@': 157}), 5: (1, {'@': 157}), 32: (1, {'@': 157}), 17: (1, {'@': 157}), 18: (1, {'@': 157}), 33: (1, {'@': 157}), 34: (1, {'@': 157}), 21: (1, {'@': 157}), 8: (1, {'@': 157}), 12: (1, {'@': 157}), 27: (1, {'@': 157}), 31: (1, {'@': 157}), 7: (1, {'@': 157}), 9: (1, {'@': 157}), 26: (1, {'@': 157}), 13: (1, {'@': 157}), 14: (1, {'@': 157}), 29: (1, {'@': 157}), 16: (1, {'@': 157}), 19: (1, {'@': 157})}, 461: {20: (0, 311)}, 462: {69: (0, 514), 12: (0, 532), 31: (0, 524), 70: (0, 200), 21: (0, 486)}, 463: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 69: (0, 514), 38: (0, 241), 39: (0, 325), 21: (0, 486), 40: (0, 475), 8: (0, 543), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 70: (0, 546), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 36: (0, 212), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 464: {69: (0, 514), 12: (0, 532), 31: (0, 524), 70: (0, 199), 21: (0, 486), 28: (1, {'@': 297}), 40: (1, {'@': 297}), 29: (1, {'@': 297}), 1: (1, {'@': 297}), 62: (1, {'@': 297}), 55: (1, {'@': 297}), 35: (1, {'@': 297}), 64: (1, {'@': 297}), 49: (1, {'@': 297}), 54: (1, {'@': 297})}, 465: {69: (0, 514), 12: (0, 532), 31: (0, 524), 70: (0, 61), 21: (0, 486), 14: (0, 336)}, 466: {20: (1, {'@': 161}), 22: (1, {'@': 161}), 1: (1, {'@': 161}), 23: (1, {'@': 161}), 24: (1, {'@': 161}), 25: (1, {'@': 161}), 10: (1, {'@': 161}), 11: (1, {'@': 161}), 3: (1, {'@': 161}), 28: (1, {'@': 161}), 15: (1, {'@': 161}), 30: (1, {'@': 161}), 5: (1, {'@': 161}), 32: (1, {'@': 161}), 17: (1, {'@': 161}), 18: (1, {'@': 161}), 33: (1, {'@': 161}), 34: (1, {'@': 161}), 21: (1, {'@': 161}), 8: (1, {'@': 161}), 12: (1, {'@': 161}), 27: (1, {'@': 161}), 31: (1, {'@': 161}), 7: (1, {'@': 161}), 9: (1, {'@': 161}), 26: (1, {'@': 161}), 13: (1, {'@': 161}), 14: (1, {'@': 161}), 29: (1, {'@': 161}), 16: (1, {'@': 161}), 19: (1, {'@': 161})}, 467: {21: (1, {'@': 338}), 31: (1, {'@': 338}), 16: (1, {'@': 338}), 12: (1, {'@': 338}), 27: (1, {'@': 338})}, 468: {70: (0, 172), 69: (0, 514), 12: (0, 532), 72: (0, 346), 27: (0, 348), 26: (0, 474), 31: (0, 524), 21: (0, 486), 14: (1, {'@': 182})}, 469: {69: (0, 514), 12: (0, 532), 31: (0, 524), 21: (0, 486), 70: (0, 501), 28: (1, {'@': 279}), 40: (1, {'@': 279}), 29: (1, {'@': 279}), 1: (1, {'@': 279}), 62: (1, {'@': 279}), 55: (1, {'@': 279}), 35: (1, {'@': 279}), 64: (1, {'@': 279}), 49: (1, {'@': 279}), 54: (1, {'@': 279})}, 470: {1: (1, {'@': 341}), 7: (1, {'@': 341}), 8: (1, {'@': 341}), 9: (1, {'@': 341}), 10: (1, {'@': 341}), 11: (1, {'@': 341}), 12: (1, {'@': 341}), 13: (1, {'@': 341}), 14: (1, {'@': 341}), 15: (1, {'@': 341}), 5: (1, {'@': 341}), 16: (1, {'@': 341}), 17: (1, {'@': 341}), 18: (1, {'@': 341}), 19: (1, {'@': 341}), 20: (1, {'@': 341}), 21: (1, {'@': 341}), 22: (1, {'@': 341}), 23: (1, {'@': 341}), 24: (1, {'@': 341}), 25: (1, {'@': 341}), 26: (1, {'@': 341}), 3: (1, {'@': 341}), 27: (1, {'@': 341}), 28: (1, {'@': 341}), 29: (1, {'@': 341}), 30: (1, {'@': 341}), 31: (1, {'@': 341}), 32: (1, {'@': 341}), 33: (1, {'@': 341}), 34: (1, {'@': 341})}, 471: {27: (0, 114), 31: (1, {'@': 187}), 21: (1, {'@': 187}), 12: (1, {'@': 187}), 14: (1, {'@': 187})}, 472: {70: (0, 77), 69: (0, 514), 12: (0, 532), 31: (0, 524), 21: (0, 486), 14: (1, {'@': 186})}, 473: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 69: (0, 514), 38: (0, 241), 8: (0, 392), 39: (0, 325), 21: (0, 486), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 70: (0, 232), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 36: (0, 118), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 474: {14: (1, {'@': 189}), 21: (1, {'@': 189}), 12: (1, {'@': 189}), 31: (1, {'@': 189})}, 475: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 38: (0, 241), 69: (0, 514), 39: (0, 325), 21: (0, 486), 40: (0, 475), 41: (0, 152), 42: (0, 13), 70: (0, 291), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 36: (0, 317), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 476: {14: (0, 88)}, 477: {28: (1, {'@': 104}), 20: (1, {'@': 104}), 15: (1, {'@': 104}), 22: (1, {'@': 104}), 30: (1, {'@': 104}), 1: (1, {'@': 104}), 23: (1, {'@': 104}), 5: (1, {'@': 104}), 24: (1, {'@': 104}), 25: (1, {'@': 104}), 32: (1, {'@': 104}), 10: (1, {'@': 104}), 11: (1, {'@': 104}), 17: (1, {'@': 104}), 18: (1, {'@': 104}), 3: (1, {'@': 104}), 33: (1, {'@': 104}), 34: (1, {'@': 104}), 21: (1, {'@': 104}), 8: (1, {'@': 104}), 12: (1, {'@': 104}), 27: (1, {'@': 104}), 31: (1, {'@': 104}), 7: (1, {'@': 104}), 9: (1, {'@': 104}), 26: (1, {'@': 104}), 13: (1, {'@': 104}), 14: (1, {'@': 104}), 29: (1, {'@': 104}), 16: (1, {'@': 104}), 19: (1, {'@': 104})}, 478: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 41: (0, 326), 64: (0, 511), 65: (0, 211), 66: (0, 214), 28: (0, 523), 68: (0, 109)}, 479: {35: (1, {'@': 306}), 55: (1, {'@': 306}), 29: (1, {'@': 306})}, 480: {86: (0, 292)}, 481: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 36: (0, 132), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 482: {20: (1, {'@': 67}), 8: (1, {'@': 67}), 21: (1, {'@': 67}), 12: (1, {'@': 67}), 31: (1, {'@': 67}), 27: (1, {'@': 67}), 13: (1, {'@': 67}), 7: (1, {'@': 67}), 14: (1, {'@': 67}), 26: (1, {'@': 67}), 16: (1, {'@': 67}), 9: (1, {'@': 67}), 19: (1, {'@': 67}), 29: (1, {'@': 67})}, 483: {20: (1, {'@': 169}), 22: (1, {'@': 169}), 1: (1, {'@': 169}), 23: (1, {'@': 169}), 24: (1, {'@': 169}), 25: (1, {'@': 169}), 10: (1, {'@': 169}), 11: (1, {'@': 169}), 3: (1, {'@': 169}), 28: (1, {'@': 169}), 15: (1, {'@': 169}), 30: (1, {'@': 169}), 5: (1, {'@': 169}), 32: (1, {'@': 169}), 17: (1, {'@': 169}), 18: (1, {'@': 169}), 33: (1, {'@': 169}), 34: (1, {'@': 169}), 21: (1, {'@': 169}), 8: (1, {'@': 169}), 12: (1, {'@': 169}), 27: (1, {'@': 169}), 31: (1, {'@': 169}), 7: (1, {'@': 169}), 9: (1, {'@': 169}), 26: (1, {'@': 169}), 13: (1, {'@': 169}), 14: (1, {'@': 169}), 29: (1, {'@': 169}), 16: (1, {'@': 169}), 19: (1, {'@': 169})}, 484: {70: (0, 459), 69: (0, 514), 27: (0, 458), 12: (0, 532), 8: (0, 80), 31: (0, 524), 21: (0, 486)}, 485: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 418), 40: (0, 475), 44: (0, 224), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 60: (0, 490), 61: (0, 544), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214)}, 486: {8: (1, {'@': 312}), 31: (1, {'@': 312}), 21: (1, {'@': 312}), 12: (1, {'@': 312}), 14: (1, {'@': 312}), 27: (1, {'@': 312}), 28: (1, {'@': 312}), 40: (1, {'@': 312}), 29: (1, {'@': 312}), 1: (1, {'@': 312}), 62: (1, {'@': 312}), 55: (1, {'@': 312}), 35: (1, {'@': 312}), 64: (1, {'@': 312}), 49: (1, {'@': 312}), 54: (1, {'@': 312}), 7: (1, {'@': 312}), 19: (1, {'@': 312}), 9: (1, {'@': 312}), 16: (1, {'@': 312}), 86: (1, {'@': 312}), 87: (1, {'@': 312})}, 487: {35: (1, {'@': 307}), 55: (1, {'@': 307}), 29: (1, {'@': 307})}, 488: {30: (0, 414), 102: (0, 405), 103: (0, 416), 23: (0, 406), 15: (0, 408), 22: (0, 411), 24: (1, {'@': 81}), 25: (1, {'@': 81}), 20: (1, {'@': 81}), 10: (1, {'@': 81}), 11: (1, {'@': 81}), 33: (1, {'@': 81}), 21: (1, {'@': 81}), 31: (1, {'@': 81}), 8: (1, {'@': 81}), 12: (1, {'@': 81}), 27: (1, {'@': 81}), 7: (1, {'@': 81}), 9: (1, {'@': 81}), 26: (1, {'@': 81}), 13: (1, {'@': 81}), 14: (1, {'@': 81}), 29: (1, {'@': 81}), 16: (1, {'@': 81}), 19: (1, {'@': 81})}, 489: {20: (1, {'@': 64}), 8: (1, {'@': 64}), 21: (1, {'@': 64}), 12: (1, {'@': 64}), 31: (1, {'@': 64}), 27: (1, {'@': 64}), 13: (1, {'@': 64}), 7: (1, {'@': 64}), 14: (1, {'@': 64}), 26: (1, {'@': 64}), 16: (1, {'@': 64}), 9: (1, {'@': 64}), 19: (1, {'@': 64}), 29: (1, {'@': 64})}, 490: {28: (1, {'@': 117}), 20: (1, {'@': 117}), 15: (1, {'@': 117}), 22: (1, {'@': 117}), 30: (1, {'@': 117}), 1: (1, {'@': 117}), 23: (1, {'@': 117}), 5: (1, {'@': 117}), 24: (1, {'@': 117}), 25: (1, {'@': 117}), 32: (1, {'@': 117}), 10: (1, {'@': 117}), 11: (1, {'@': 117}), 17: (1, {'@': 117}), 18: (1, {'@': 117}), 3: (1, {'@': 117}), 33: (1, {'@': 117}), 34: (1, {'@': 117}), 21: (1, {'@': 117}), 8: (1, {'@': 117}), 12: (1, {'@': 117}), 27: (1, {'@': 117}), 31: (1, {'@': 117}), 7: (1, {'@': 117}), 9: (1, {'@': 117}), 26: (1, {'@': 117}), 13: (1, {'@': 117}), 14: (1, {'@': 117}), 29: (1, {'@': 117}), 16: (1, {'@': 117}), 19: (1, {'@': 117})}, 491: {20: (1, {'@': 59}), 22: (1, {'@': 59}), 1: (1, {'@': 59}), 23: (1, {'@': 59}), 24: (1, {'@': 59}), 25: (1, {'@': 59}), 10: (1, {'@': 59}), 11: (1, {'@': 59}), 3: (1, {'@': 59}), 28: (1, {'@': 59}), 40: (1, {'@': 59}), 15: (1, {'@': 59}), 30: (1, {'@': 59}), 5: (1, {'@': 59}), 32: (1, {'@': 59}), 17: (1, {'@': 59}), 18: (1, {'@': 59}), 33: (1, {'@': 59}), 34: (1, {'@': 59}), 21: (1, {'@': 59}), 8: (1, {'@': 59}), 12: (1, {'@': 59}), 27: (1, {'@': 59}), 31: (1, {'@': 59}), 35: (1, {'@': 59}), 55: (1, {'@': 59}), 29: (1, {'@': 59}), 7: (1, {'@': 59}), 9: (1, {'@': 59}), 26: (1, {'@': 59}), 13: (1, {'@': 59}), 14: (1, {'@': 59}), 16: (1, {'@': 59}), 19: (1, {'@': 59}), 86: (1, {'@': 59})}, 492: {35: (1, {'@': 118}), 55: (1, {'@': 118}), 29: (1, {'@': 118})}, 493: {69: (0, 514), 12: (0, 532), 21: (0, 486), 31: (0, 524), 70: (0, 34), 19: (1, {'@': 43})}, 494: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 41: (0, 502), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 28: (0, 523), 68: (0, 109)}, 495: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 38: (0, 241), 69: (0, 514), 39: (0, 325), 21: (0, 486), 40: (0, 475), 36: (0, 119), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 70: (0, 123), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 496: {20: (1, {'@': 70}), 33: (1, {'@': 70}), 8: (1, {'@': 70}), 21: (1, {'@': 70}), 12: (1, {'@': 70}), 27: (1, {'@': 70}), 31: (1, {'@': 70}), 7: (1, {'@': 70}), 9: (1, {'@': 70}), 26: (1, {'@': 70}), 13: (1, {'@': 70}), 14: (1, {'@': 70}), 29: (1, {'@': 70}), 16: (1, {'@': 70}), 19: (1, {'@': 70})}, 497: {20: (1, {'@': 66}), 8: (1, {'@': 66}), 21: (1, {'@': 66}), 12: (1, {'@': 66}), 31: (1, {'@': 66}), 27: (1, {'@': 66}), 13: (1, {'@': 66}), 7: (1, {'@': 66}), 14: (1, {'@': 66}), 26: (1, {'@': 66}), 16: (1, {'@': 66}), 9: (1, {'@': 66}), 19: (1, {'@': 66}), 29: (1, {'@': 66})}, 498: {35: (0, 84), 55: (0, 492), 37: (0, 111), 29: (0, 491), 76: (0, 116)}, 499: {20: (1, {'@': 119}), 22: (1, {'@': 119}), 1: (1, {'@': 119}), 23: (1, {'@': 119}), 24: (1, {'@': 119}), 25: (1, {'@': 119}), 10: (1, {'@': 119}), 11: (1, {'@': 119}), 3: (1, {'@': 119}), 28: (1, {'@': 119}), 15: (1, {'@': 119}), 30: (1, {'@': 119}), 5: (1, {'@': 119}), 32: (1, {'@': 119}), 17: (1, {'@': 119}), 18: (1, {'@': 119}), 33: (1, {'@': 119}), 34: (1, {'@': 119}), 21: (1, {'@': 119}), 8: (1, {'@': 119}), 12: (1, {'@': 119}), 27: (1, {'@': 119}), 31: (1, {'@': 119}), 7: (1, {'@': 119}), 9: (1, {'@': 119}), 26: (1, {'@': 119}), 13: (1, {'@': 119}), 14: (1, {'@': 119}), 29: (1, {'@': 119}), 16: (1, {'@': 119}), 19: (1, {'@': 119})}, 500: {86: (0, 533), 69: (0, 514), 70: (0, 79), 12: (0, 532), 31: (0, 524), 21: (0, 486)}, 501: {28: (1, {'@': 278}), 40: (1, {'@': 278}), 29: (1, {'@': 278}), 1: (1, {'@': 278}), 62: (1, {'@': 278}), 55: (1, {'@': 278}), 35: (1, {'@': 278}), 64: (1, {'@': 278}), 49: (1, {'@': 278}), 54: (1, {'@': 278}), 21: (1, {'@': 278}), 31: (1, {'@': 278}), 12: (1, {'@': 278})}, 502: {20: (1, {'@': 63}), 8: (1, {'@': 63}), 21: (1, {'@': 63}), 12: (1, {'@': 63}), 31: (1, {'@': 63}), 27: (1, {'@': 63}), 13: (1, {'@': 63}), 7: (1, {'@': 63}), 14: (1, {'@': 63}), 26: (1, {'@': 63}), 16: (1, {'@': 63}), 9: (1, {'@': 63}), 19: (1, {'@': 63}), 29: (1, {'@': 63})}, 503: {51: (0, 401), 64: (0, 511)}, 504: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 38: (0, 241), 69: (0, 514), 39: (0, 325), 21: (0, 486), 40: (0, 475), 36: (0, 92), 41: (0, 152), 70: (0, 96), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 505: {8: (1, {'@': 315}), 31: (1, {'@': 315}), 21: (1, {'@': 315}), 12: (1, {'@': 315}), 14: (1, {'@': 315}), 27: (1, {'@': 315}), 28: (1, {'@': 315}), 40: (1, {'@': 315}), 29: (1, {'@': 315}), 1: (1, {'@': 315}), 62: (1, {'@': 315}), 55: (1, {'@': 315}), 35: (1, {'@': 315}), 64: (1, {'@': 315}), 49: (1, {'@': 315}), 54: (1, {'@': 315}), 7: (1, {'@': 315}), 19: (1, {'@': 315}), 9: (1, {'@': 315}), 16: (1, {'@': 315}), 86: (1, {'@': 315}), 87: (1, {'@': 315})}, 506: {14: (1, {'@': 334}), 21: (1, {'@': 334}), 31: (1, {'@': 334}), 12: (1, {'@': 334}), 26: (1, {'@': 334}), 27: (1, {'@': 334}), 8: (1, {'@': 334})}, 507: {1: (0, 540), 36: (0, 5), 35: (0, 174), 12: (0, 532), 37: (0, 268), 38: (0, 241), 69: (0, 514), 39: (0, 325), 21: (0, 486), 40: (0, 475), 70: (0, 38), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 78: (0, 44), 29: (0, 491), 14: (0, 47), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 508: {20: (1, {'@': 232}), 22: (1, {'@': 232}), 1: (1, {'@': 232}), 23: (1, {'@': 232}), 24: (1, {'@': 232}), 25: (1, {'@': 232}), 10: (1, {'@': 232}), 11: (1, {'@': 232}), 3: (1, {'@': 232}), 28: (1, {'@': 232}), 15: (1, {'@': 232}), 30: (1, {'@': 232}), 5: (1, {'@': 232}), 32: (1, {'@': 232}), 17: (1, {'@': 232}), 18: (1, {'@': 232}), 33: (1, {'@': 232}), 34: (1, {'@': 232}), 21: (1, {'@': 232}), 8: (1, {'@': 232}), 12: (1, {'@': 232}), 27: (1, {'@': 232}), 31: (1, {'@': 232}), 7: (1, {'@': 232}), 9: (1, {'@': 232}), 26: (1, {'@': 232}), 13: (1, {'@': 232}), 14: (1, {'@': 232}), 29: (1, {'@': 232}), 16: (1, {'@': 232}), 19: (1, {'@': 232})}, 509: {16: (1, {'@': 51}), 29: (1, {'@': 51}), 31: (1, {'@': 51}), 21: (1, {'@': 51}), 12: (1, {'@': 51}), 19: (1, {'@': 51})}, 510: {}, 511: {20: (1, {'@': 328}), 22: (1, {'@': 328}), 1: (1, {'@': 328}), 23: (1, {'@': 328}), 85: (1, {'@': 328}), 24: (1, {'@': 328}), 25: (1, {'@': 328}), 10: (1, {'@': 328}), 11: (1, {'@': 328}), 64: (1, {'@': 328}), 3: (1, {'@': 328}), 28: (1, {'@': 328}), 15: (1, {'@': 328}), 30: (1, {'@': 328}), 5: (1, {'@': 328}), 32: (1, {'@': 328}), 17: (1, {'@': 328}), 18: (1, {'@': 328}), 33: (1, {'@': 328}), 34: (1, {'@': 328}), 21: (1, {'@': 328}), 8: (1, {'@': 328}), 12: (1, {'@': 328}), 27: (1, {'@': 328}), 31: (1, {'@': 328}), 7: (1, {'@': 328}), 9: (1, {'@': 328}), 13: (1, {'@': 328}), 14: (1, {'@': 328}), 16: (1, {'@': 328}), 19: (1, {'@': 328}), 26: (1, {'@': 328}), 29: (1, {'@': 328})}, 512: {7: (0, 196)}, 513: {19: (1, {'@': 46})}, 514: {31: (0, 254), 21: (0, 505), 12: (0, 525), 8: (1, {'@': 58}), 14: (1, {'@': 58}), 27: (1, {'@': 58}), 28: (1, {'@': 58}), 40: (1, {'@': 58}), 29: (1, {'@': 58}), 1: (1, {'@': 58}), 62: (1, {'@': 58}), 55: (1, {'@': 58}), 35: (1, {'@': 58}), 64: (1, {'@': 58}), 49: (1, {'@': 58}), 54: (1, {'@': 58}), 7: (1, {'@': 58}), 19: (1, {'@': 58}), 9: (1, {'@': 58}), 16: (1, {'@': 58}), 86: (1, {'@': 58}), 87: (1, {'@': 58})}, 515: {20: (1, {'@': 225}), 22: (1, {'@': 225}), 1: (1, {'@': 225}), 23: (1, {'@': 225}), 24: (1, {'@': 225}), 25: (1, {'@': 225}), 10: (1, {'@': 225}), 11: (1, {'@': 225}), 3: (1, {'@': 225}), 28: (1, {'@': 225}), 15: (1, {'@': 225}), 30: (1, {'@': 225}), 5: (1, {'@': 225}), 32: (1, {'@': 225}), 17: (1, {'@': 225}), 18: (1, {'@': 225}), 33: (1, {'@': 225}), 34: (1, {'@': 225}), 21: (1, {'@': 225}), 8: (1, {'@': 225}), 12: (1, {'@': 225}), 27: (1, {'@': 225}), 31: (1, {'@': 225}), 7: (1, {'@': 225}), 9: (1, {'@': 225}), 26: (1, {'@': 225}), 13: (1, {'@': 225}), 14: (1, {'@': 225}), 29: (1, {'@': 225}), 16: (1, {'@': 225}), 19: (1, {'@': 225})}, 516: {20: (1, {'@': 128}), 22: (1, {'@': 128}), 1: (1, {'@': 128}), 23: (1, {'@': 128}), 24: (1, {'@': 128}), 25: (1, {'@': 128}), 10: (1, {'@': 128}), 11: (1, {'@': 128}), 3: (1, {'@': 128}), 28: (1, {'@': 128}), 15: (1, {'@': 128}), 30: (1, {'@': 128}), 5: (1, {'@': 128}), 32: (1, {'@': 128}), 17: (1, {'@': 128}), 18: (1, {'@': 128}), 33: (1, {'@': 128}), 34: (1, {'@': 128}), 21: (1, {'@': 128}), 8: (1, {'@': 128}), 12: (1, {'@': 128}), 27: (1, {'@': 128}), 31: (1, {'@': 128}), 7: (1, {'@': 128}), 9: (1, {'@': 128}), 26: (1, {'@': 128}), 13: (1, {'@': 128}), 14: (1, {'@': 128}), 29: (1, {'@': 128}), 16: (1, {'@': 128}), 19: (1, {'@': 128})}, 517: {7: (0, 236)}, 518: {16: (1, {'@': 302}), 29: (1, {'@': 302}), 31: (1, {'@': 302}), 21: (1, {'@': 302}), 12: (1, {'@': 302}), 19: (1, {'@': 302})}, 519: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 36: (0, 107), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 520: {}, 521: {70: (0, 484), 27: (0, 18), 8: (0, 127), 69: (0, 514), 12: (0, 532), 31: (0, 524), 21: (0, 486)}, 522: {28: (1, {'@': 105}), 20: (1, {'@': 105}), 15: (1, {'@': 105}), 22: (1, {'@': 105}), 30: (1, {'@': 105}), 1: (1, {'@': 105}), 23: (1, {'@': 105}), 5: (1, {'@': 105}), 24: (1, {'@': 105}), 25: (1, {'@': 105}), 32: (1, {'@': 105}), 10: (1, {'@': 105}), 11: (1, {'@': 105}), 17: (1, {'@': 105}), 18: (1, {'@': 105}), 3: (1, {'@': 105}), 33: (1, {'@': 105}), 34: (1, {'@': 105}), 21: (1, {'@': 105}), 8: (1, {'@': 105}), 12: (1, {'@': 105}), 27: (1, {'@': 105}), 31: (1, {'@': 105}), 7: (1, {'@': 105}), 9: (1, {'@': 105}), 26: (1, {'@': 105}), 13: (1, {'@': 105}), 14: (1, {'@': 105}), 29: (1, {'@': 105}), 16: (1, {'@': 105}), 19: (1, {'@': 105})}, 523: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 167), 40: (0, 475), 44: (0, 224), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 60: (0, 490), 61: (0, 544), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214)}, 524: {8: (1, {'@': 310}), 31: (1, {'@': 310}), 21: (1, {'@': 310}), 12: (1, {'@': 310}), 14: (1, {'@': 310}), 27: (1, {'@': 310}), 28: (1, {'@': 310}), 40: (1, {'@': 310}), 29: (1, {'@': 310}), 1: (1, {'@': 310}), 62: (1, {'@': 310}), 55: (1, {'@': 310}), 35: (1, {'@': 310}), 64: (1, {'@': 310}), 49: (1, {'@': 310}), 54: (1, {'@': 310}), 7: (1, {'@': 310}), 19: (1, {'@': 310}), 9: (1, {'@': 310}), 16: (1, {'@': 310}), 86: (1, {'@': 310}), 87: (1, {'@': 310})}, 525: {8: (1, {'@': 314}), 31: (1, {'@': 314}), 21: (1, {'@': 314}), 12: (1, {'@': 314}), 14: (1, {'@': 314}), 27: (1, {'@': 314}), 28: (1, {'@': 314}), 40: (1, {'@': 314}), 29: (1, {'@': 314}), 1: (1, {'@': 314}), 62: (1, {'@': 314}), 55: (1, {'@': 314}), 35: (1, {'@': 314}), 64: (1, {'@': 314}), 49: (1, {'@': 314}), 54: (1, {'@': 314}), 7: (1, {'@': 314}), 19: (1, {'@': 314}), 9: (1, {'@': 314}), 16: (1, {'@': 314}), 86: (1, {'@': 314}), 87: (1, {'@': 314})}, 526: {28: (1, {'@': 116}), 20: (1, {'@': 116}), 15: (1, {'@': 116}), 22: (1, {'@': 116}), 30: (1, {'@': 116}), 1: (1, {'@': 116}), 23: (1, {'@': 116}), 5: (1, {'@': 116}), 24: (1, {'@': 116}), 25: (1, {'@': 116}), 32: (1, {'@': 116}), 10: (1, {'@': 116}), 11: (1, {'@': 116}), 17: (1, {'@': 116}), 18: (1, {'@': 116}), 3: (1, {'@': 116}), 33: (1, {'@': 116}), 34: (1, {'@': 116}), 21: (1, {'@': 116}), 8: (1, {'@': 116}), 12: (1, {'@': 116}), 27: (1, {'@': 116}), 31: (1, {'@': 116}), 7: (1, {'@': 116}), 9: (1, {'@': 116}), 26: (1, {'@': 116}), 13: (1, {'@': 116}), 14: (1, {'@': 116}), 29: (1, {'@': 116}), 16: (1, {'@': 116}), 19: (1, {'@': 116})}, 527: {69: (0, 514), 12: (0, 532), 95: (0, 302), 96: (0, 457), 27: (0, 324), 16: (0, 460), 31: (0, 524), 70: (0, 64), 21: (0, 486)}, 528: {20: (1, {'@': 215}), 22: (1, {'@': 215}), 1: (1, {'@': 215}), 23: (1, {'@': 215}), 24: (1, {'@': 215}), 25: (1, {'@': 215}), 10: (1, {'@': 215}), 11: (1, {'@': 215}), 3: (1, {'@': 215}), 28: (1, {'@': 215}), 15: (1, {'@': 215}), 30: (1, {'@': 215}), 5: (1, {'@': 215}), 32: (1, {'@': 215}), 17: (1, {'@': 215}), 18: (1, {'@': 215}), 33: (1, {'@': 215}), 34: (1, {'@': 215}), 21: (1, {'@': 215}), 8: (1, {'@': 215}), 12: (1, {'@': 215}), 27: (1, {'@': 215}), 31: (1, {'@': 215}), 7: (1, {'@': 215}), 9: (1, {'@': 215}), 26: (1, {'@': 215}), 13: (1, {'@': 215}), 14: (1, {'@': 215}), 29: (1, {'@': 215}), 16: (1, {'@': 215}), 19: (1, {'@': 215})}, 529: {7: (0, 150)}, 530: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 36: (0, 104), 48: (0, 204), 49: (0, 217), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 531: {28: (1, {'@': 107}), 20: (1, {'@': 107}), 15: (1, {'@': 107}), 22: (1, {'@': 107}), 30: (1, {'@': 107}), 1: (1, {'@': 107}), 23: (1, {'@': 107}), 5: (1, {'@': 107}), 24: (1, {'@': 107}), 25: (1, {'@': 107}), 32: (1, {'@': 107}), 10: (1, {'@': 107}), 11: (1, {'@': 107}), 17: (1, {'@': 107}), 18: (1, {'@': 107}), 3: (1, {'@': 107}), 33: (1, {'@': 107}), 34: (1, {'@': 107}), 21: (1, {'@': 107}), 8: (1, {'@': 107}), 12: (1, {'@': 107}), 27: (1, {'@': 107}), 31: (1, {'@': 107}), 7: (1, {'@': 107}), 9: (1, {'@': 107}), 26: (1, {'@': 107}), 13: (1, {'@': 107}), 14: (1, {'@': 107}), 29: (1, {'@': 107}), 16: (1, {'@': 107}), 19: (1, {'@': 107})}, 532: {8: (1, {'@': 311}), 31: (1, {'@': 311}), 21: (1, {'@': 311}), 12: (1, {'@': 311}), 14: (1, {'@': 311}), 27: (1, {'@': 311}), 28: (1, {'@': 311}), 40: (1, {'@': 311}), 29: (1, {'@': 311}), 1: (1, {'@': 311}), 62: (1, {'@': 311}), 55: (1, {'@': 311}), 35: (1, {'@': 311}), 64: (1, {'@': 311}), 49: (1, {'@': 311}), 54: (1, {'@': 311}), 7: (1, {'@': 311}), 19: (1, {'@': 311}), 9: (1, {'@': 311}), 16: (1, {'@': 311}), 86: (1, {'@': 311}), 87: (1, {'@': 311})}, 533: {1: (0, 540), 35: (0, 174), 12: (0, 532), 37: (0, 268), 38: (0, 241), 69: (0, 514), 39: (0, 325), 21: (0, 486), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 50: (0, 522), 31: (0, 524), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 36: (0, 353), 70: (0, 354), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 534: {7: (0, 307)}, 535: {1: (1, {'@': 340}), 7: (1, {'@': 340}), 8: (1, {'@': 340}), 9: (1, {'@': 340}), 10: (1, {'@': 340}), 11: (1, {'@': 340}), 12: (1, {'@': 340}), 13: (1, {'@': 340}), 14: (1, {'@': 340}), 15: (1, {'@': 340}), 5: (1, {'@': 340}), 16: (1, {'@': 340}), 17: (1, {'@': 340}), 18: (1, {'@': 340}), 19: (1, {'@': 340}), 20: (1, {'@': 340}), 21: (1, {'@': 340}), 22: (1, {'@': 340}), 23: (1, {'@': 340}), 24: (1, {'@': 340}), 25: (1, {'@': 340}), 26: (1, {'@': 340}), 3: (1, {'@': 340}), 27: (1, {'@': 340}), 28: (1, {'@': 340}), 29: (1, {'@': 340}), 30: (1, {'@': 340}), 31: (1, {'@': 340}), 32: (1, {'@': 340}), 33: (1, {'@': 340}), 34: (1, {'@': 340})}, 536: {37: (0, 293), 29: (0, 491)}, 537: {16: (1, {'@': 303}), 29: (1, {'@': 303}), 31: (1, {'@': 303}), 21: (1, {'@': 303}), 12: (1, {'@': 303}), 19: (1, {'@': 303})}, 538: {20: (1, {'@': 138}), 22: (1, {'@': 138}), 1: (1, {'@': 138}), 23: (1, {'@': 138}), 24: (1, {'@': 138}), 25: (1, {'@': 138}), 10: (1, {'@': 138}), 11: (1, {'@': 138}), 3: (1, {'@': 138}), 28: (1, {'@': 138}), 15: (1, {'@': 138}), 30: (1, {'@': 138}), 5: (1, {'@': 138}), 32: (1, {'@': 138}), 17: (1, {'@': 138}), 18: (1, {'@': 138}), 33: (1, {'@': 138}), 34: (1, {'@': 138}), 21: (1, {'@': 138}), 8: (1, {'@': 138}), 12: (1, {'@': 138}), 27: (1, {'@': 138}), 31: (1, {'@': 138}), 7: (1, {'@': 138}), 9: (1, {'@': 138}), 26: (1, {'@': 138}), 13: (1, {'@': 138}), 14: (1, {'@': 138}), 29: (1, {'@': 138}), 16: (1, {'@': 138}), 19: (1, {'@': 138})}, 539: {20: (1, {'@': 212}), 22: (1, {'@': 212}), 1: (1, {'@': 212}), 23: (1, {'@': 212}), 24: (1, {'@': 212}), 25: (1, {'@': 212}), 10: (1, {'@': 212}), 11: (1, {'@': 212}), 3: (1, {'@': 212}), 28: (1, {'@': 212}), 15: (1, {'@': 212}), 30: (1, {'@': 212}), 5: (1, {'@': 212}), 32: (1, {'@': 212}), 17: (1, {'@': 212}), 18: (1, {'@': 212}), 33: (1, {'@': 212}), 34: (1, {'@': 212}), 21: (1, {'@': 212}), 8: (1, {'@': 212}), 12: (1, {'@': 212}), 27: (1, {'@': 212}), 31: (1, {'@': 212}), 7: (1, {'@': 212}), 9: (1, {'@': 212}), 26: (1, {'@': 212}), 13: (1, {'@': 212}), 14: (1, {'@': 212}), 29: (1, {'@': 212}), 16: (1, {'@': 212}), 19: (1, {'@': 212})}, 540: {1: (0, 540), 87: (0, 53), 35: (0, 174), 12: (0, 532), 36: (0, 359), 70: (0, 363), 38: (0, 241), 40: (0, 475), 39: (0, 325), 37: (0, 268), 42: (0, 13), 44: (0, 224), 69: (0, 514), 45: (0, 221), 46: (0, 185), 41: (0, 152), 48: (0, 204), 49: (0, 217), 88: (0, 385), 50: (0, 522), 31: (0, 524), 52: (0, 216), 54: (0, 483), 51: (0, 545), 43: (0, 206), 59: (0, 496), 62: (0, 485), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 21: (0, 486), 47: (0, 205), 53: (0, 488), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 60: (0, 490), 61: (0, 544), 63: (0, 526), 8: (0, 388), 68: (0, 109)}, 541: {4: (0, 470), 5: (0, 153), 20: (1, {'@': 200}), 21: (1, {'@': 200}), 22: (1, {'@': 200}), 1: (1, {'@': 200}), 23: (1, {'@': 200}), 7: (1, {'@': 200}), 8: (1, {'@': 200}), 9: (1, {'@': 200}), 24: (1, {'@': 200}), 10: (1, {'@': 200}), 11: (1, {'@': 200}), 12: (1, {'@': 200}), 25: (1, {'@': 200}), 26: (1, {'@': 200}), 3: (1, {'@': 200}), 27: (1, {'@': 200}), 13: (1, {'@': 200}), 14: (1, {'@': 200}), 28: (1, {'@': 200}), 29: (1, {'@': 200}), 15: (1, {'@': 200}), 30: (1, {'@': 200}), 31: (1, {'@': 200}), 16: (1, {'@': 200}), 32: (1, {'@': 200}), 17: (1, {'@': 200}), 18: (1, {'@': 200}), 19: (1, {'@': 200}), 33: (1, {'@': 200}), 34: (1, {'@': 200})}, 542: {8: (0, 299)}, 543: {20: (1, {'@': 125}), 22: (1, {'@': 125}), 1: (1, {'@': 125}), 23: (1, {'@': 125}), 24: (1, {'@': 125}), 25: (1, {'@': 125}), 10: (1, {'@': 125}), 11: (1, {'@': 125}), 3: (1, {'@': 125}), 28: (1, {'@': 125}), 15: (1, {'@': 125}), 30: (1, {'@': 125}), 5: (1, {'@': 125}), 32: (1, {'@': 125}), 17: (1, {'@': 125}), 18: (1, {'@': 125}), 33: (1, {'@': 125}), 34: (1, {'@': 125}), 21: (1, {'@': 125}), 8: (1, {'@': 125}), 12: (1, {'@': 125}), 27: (1, {'@': 125}), 31: (1, {'@': 125}), 7: (1, {'@': 125}), 9: (1, {'@': 125}), 26: (1, {'@': 125}), 13: (1, {'@': 125}), 14: (1, {'@': 125}), 29: (1, {'@': 125}), 16: (1, {'@': 125}), 19: (1, {'@': 125})}, 544: {28: (1, {'@': 108}), 20: (1, {'@': 108}), 15: (1, {'@': 108}), 22: (1, {'@': 108}), 30: (1, {'@': 108}), 1: (1, {'@': 108}), 23: (1, {'@': 108}), 5: (1, {'@': 108}), 24: (1, {'@': 108}), 25: (1, {'@': 108}), 32: (1, {'@': 108}), 10: (1, {'@': 108}), 11: (1, {'@': 108}), 17: (1, {'@': 108}), 18: (1, {'@': 108}), 3: (1, {'@': 108}), 33: (1, {'@': 108}), 34: (1, {'@': 108}), 21: (1, {'@': 108}), 8: (1, {'@': 108}), 12: (1, {'@': 108}), 27: (1, {'@': 108}), 31: (1, {'@': 108}), 7: (1, {'@': 108}), 9: (1, {'@': 108}), 26: (1, {'@': 108}), 13: (1, {'@': 108}), 14: (1, {'@': 108}), 29: (1, {'@': 108}), 16: (1, {'@': 108}), 19: (1, {'@': 108})}, 545: {5: (0, 344), 64: (0, 444), 85: (0, 412), 20: (1, {'@': 120}), 22: (1, {'@': 120}), 1: (1, {'@': 120}), 23: (1, {'@': 120}), 24: (1, {'@': 120}), 25: (1, {'@': 120}), 10: (1, {'@': 120}), 11: (1, {'@': 120}), 3: (1, {'@': 120}), 28: (1, {'@': 120}), 15: (1, {'@': 120}), 30: (1, {'@': 120}), 32: (1, {'@': 120}), 17: (1, {'@': 120}), 18: (1, {'@': 120}), 33: (1, {'@': 120}), 34: (1, {'@': 120}), 21: (1, {'@': 120}), 8: (1, {'@': 120}), 12: (1, {'@': 120}), 27: (1, {'@': 120}), 31: (1, {'@': 120}), 7: (1, {'@': 120}), 9: (1, {'@': 120}), 26: (1, {'@': 120}), 13: (1, {'@': 120}), 14: (1, {'@': 120}), 29: (1, {'@': 120}), 16: (1, {'@': 120}), 19: (1, {'@': 120})}, 546: {1: (0, 540), 35: (0, 174), 37: (0, 268), 38: (0, 241), 39: (0, 325), 40: (0, 475), 41: (0, 152), 42: (0, 13), 43: (0, 206), 44: (0, 224), 45: (0, 221), 46: (0, 185), 47: (0, 205), 48: (0, 204), 49: (0, 217), 8: (0, 139), 50: (0, 522), 51: (0, 545), 52: (0, 216), 53: (0, 488), 54: (0, 483), 55: (0, 499), 29: (0, 491), 56: (0, 477), 57: (0, 531), 58: (0, 547), 59: (0, 496), 60: (0, 490), 61: (0, 544), 36: (0, 506), 62: (0, 485), 63: (0, 526), 64: (0, 511), 65: (0, 211), 66: (0, 214), 67: (0, 227), 28: (0, 523), 68: (0, 109)}, 547: {28: (1, {'@': 114}), 20: (1, {'@': 114}), 15: (1, {'@': 114}), 22: (1, {'@': 114}), 30: (1, {'@': 114}), 1: (1, {'@': 114}), 23: (1, {'@': 114}), 5: (1, {'@': 114}), 24: (1, {'@': 114}), 25: (1, {'@': 114}), 32: (1, {'@': 114}), 10: (1, {'@': 114}), 11: (1, {'@': 114}), 17: (1, {'@': 114}), 18: (1, {'@': 114}), 3: (1, {'@': 114}), 33: (1, {'@': 114}), 34: (1, {'@': 114}), 21: (1, {'@': 114}), 8: (1, {'@': 114}), 12: (1, {'@': 114}), 27: (1, {'@': 114}), 31: (1, {'@': 114}), 7: (1, {'@': 114}), 9: (1, {'@': 114}), 26: (1, {'@': 114}), 13: (1, {'@': 114}), 14: (1, {'@': 114}), 29: (1, {'@': 114}), 16: (1, {'@': 114}), 19: (1, {'@': 114})}, 548: {37: (0, 19), 29: (0, 491), 81: (0, 59), 82: (0, 421), 16: (1, {'@': 47}), 19: (1, {'@': 47}), 31: (1, {'@': 47}), 21: (1, {'@': 47}), 12: (1, {'@': 47})}, 549: {27: (0, 8), 71: (0, 176), 8: (0, 443), 70: (0, 445), 12: (0, 532), 69: (0, 514), 21: (0, 486), 31: (0, 524)}}, 'start_states': {'eval': 267, 'module': 274}, 'end_states': {'module': 510, 'eval': 520}}, 'options': {'debug': False, 'keep_all_tokens': False, 'tree_class': None, 'cache': False, 'postlex': None, 'parser': 'lalr', 'lexer': 'contextual', 'transformer': None, 'start': ['eval', 'module'], 'priority': 'normal', 'ambiguity': 'auto', 'regex': False, 'propagate_positions': False, 'lexer_callbacks': {}, 'maybe_placeholders': False, 'edit_terminals': None, 'g_regex_flags': 0, 'use_bytes': False, 'import_paths': [], 'source_path': None}, '__type__': 'ParsingFrontend'}, 'rules': [{'@': 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}], 'options': {'debug': False, 'keep_all_tokens': False, 'tree_class': None, 'cache': False, 'postlex': None, 'parser': 'lalr', 'lexer': 'contextual', 'transformer': None, 'start': ['eval', 'module'], 'priority': 'normal', 'ambiguity': 'auto', 'regex': False, 'propagate_positions': False, 'lexer_callbacks': {}, 'maybe_placeholders': False, 'edit_terminals': None, 'g_regex_flags': 0, 'use_bytes': False, 'import_paths': [], 'source_path': None}, '__type__': 'Lark'}
)
MEMO = (
{0: {'name': 'STRING_LIT', 'pattern': {'value': '"(?:(?:(?:(?:(?:(?!\\${)([^"\\\\]|\\\\.))+)+|\\${ *(?:"(?:[^"\\\\]|\\\\.)*"|[^}"]+)+ *})|\\$\\{))*"', 'flags': [], '_width': [2, 4294967295], '__type__': 'PatternRE'}, 'priority': 1, '__type__': 'TerminalDef'}, 1: {'name': 'DECIMAL', 'pattern': {'value': '[0-9]', 'flags': [], '_width': [1, 1], '__type__': 'PatternRE'}, 'priority': 1, '__type__': 'TerminalDef'}, 2: {'name': 'EXP_MARK', 'pattern': {'value': '(?:e|E)(?:(?:\\+|\\-))?', 'flags': [], '_width': [1, 2], '__type__': 'PatternRE'}, 'priority': 1, '__type__': 'TerminalDef'}, 3: {'name': '__IGNORE_0', 'pattern': {'value': '[ \t]+', 'flags': [], '_width': [1, 4294967295], '__type__': 'PatternRE'}, 'priority': 1, '__type__': 'TerminalDef'}, 4: {'name': '__IGNORE_1', 'pattern': {'value': '\\/\\*(.|\n)*?(\\*\\/)', 'flags': [], '_width': [4, 4294967295], '__type__': 'PatternRE'}, 'priority': 1, '__type__': 'TerminalDef'}, 5: {'name': 'EQUAL', 'pattern': {'value': '=', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 6: {'name': 'LBRACE', 'pattern': {'value': '{', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 7: {'name': 'RBRACE', 'pattern': {'value': '}', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 8: {'name': 'COMMA', 'pattern': {'value': ',', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 9: {'name': '__ANON_0', 'pattern': {'value': '\n', 'flags': [], '_width': [1, 1], '__type__': 'PatternRE'}, 'priority': 1, '__type__': 'TerminalDef'}, 10: {'name': '__ANON_1', 'pattern': {'value': '#.*\n', 'flags': [], '_width': [2, 4294967295], '__type__': 'PatternRE'}, 'priority': 1, '__type__': 'TerminalDef'}, 11: {'name': '__ANON_2', 'pattern': {'value': '\\/\\/.*\n', 'flags': [], '_width': [3, 4294967295], '__type__': 'PatternRE'}, 'priority': 1, '__type__': 'TerminalDef'}, 12: {'name': '__ANON_3', 'pattern': {'value': '[a-zA-Z_][a-zA-Z0-9_-]*', 'flags': [], '_width': [1, 4294967295], '__type__': 'PatternRE'}, 'priority': 1, '__type__': 'TerminalDef'}, 13: {'name': 'QMARK', 'pattern': {'value': '?', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 14: {'name': 'COLON', 'pattern': {'value': ':', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 15: {'name': 'MINUS', 'pattern': {'value': '-', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 16: {'name': 'BANG', 'pattern': {'value': '!', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 17: {'name': '__ANON_4', 'pattern': {'value': '||', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 18: {'name': '__ANON_5', 'pattern': {'value': '&&', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 19: {'name': 'PLUS', 'pattern': {'value': '+', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 20: {'name': 'STAR', 'pattern': {'value': '*', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 21: {'name': 'SLASH', 'pattern': {'value': '/', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 22: {'name': 'PERCENT', 'pattern': {'value': '%', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 23: {'name': '__ANON_6', 'pattern': {'value': '>=', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 24: {'name': 'MORETHAN', 'pattern': {'value': '>', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 25: {'name': '__ANON_7', 'pattern': {'value': '<=', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 26: {'name': 'LESSTHAN', 'pattern': {'value': '<', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 27: {'name': '__ANON_8', 'pattern': {'value': '==', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 28: {'name': '__ANON_9', 'pattern': {'value': '!=', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 29: {'name': 'LPAR', 'pattern': {'value': '(', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 30: {'name': 'RPAR', 'pattern': {'value': ')', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 31: {'name': 'DOT', 'pattern': {'value': '.', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 32: {'name': 'LSQB', 'pattern': {'value': '[', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 33: {'name': 'RSQB', 'pattern': {'value': ']', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 34: {'name': '__ANON_10', 'pattern': {'value': '<<(?P<heredoc>[a-zA-Z][a-zA-Z0-9._-]+)\n(?:.|\n)+?\n+\\s*(?P=heredoc)', 'flags': [], '_width': [9, 4294967295], '__type__': 'PatternRE'}, 'priority': 1, '__type__': 'TerminalDef'}, 35: {'name': '__ANON_11', 'pattern': {'value': '<<-(?P<heredoc_trim>[a-zA-Z][a-zA-Z0-9._-]+)\n(?:.|\n)+?\n+\\s*(?P=heredoc_trim)', 'flags': [], '_width': [10, 4294967295], '__type__': 'PatternRE'}, 'priority': 1, '__type__': 'TerminalDef'}, 36: {'name': '__ANON_12', 'pattern': {'value': '...', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 37: {'name': '__ANON_13', 'pattern': {'value': '.*', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 38: {'name': '__ANON_14', 'pattern': {'value': '=>', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 39: {'name': 'FOR', 'pattern': {'value': 'for', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 40: {'name': 'IN', 'pattern': {'value': 'in', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 41: {'name': 'IF', 'pattern': {'value': 'if', 'flags': [], '__type__': 'PatternStr'}, 'priority': 1, '__type__': 'TerminalDef'}, 42: {'origin': {'name': 'module', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'body', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 43: {'origin': {'name': 'module', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'body', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 44: {'origin': {'name': 'module', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'body', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 2, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 45: {'origin': {'name': 'module', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'body', '__type__': 'NonTerminal'}], 'order': 3, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 46: {'origin': {'name': 'eval', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expression', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 47: {'origin': {'name': 'body', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__body_star_0', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 48: {'origin': {'name': 'body', '__type__': 'NonTerminal'}, 'expansion': [], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 49: {'origin': {'name': 'attribute', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'EQUAL', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 50: {'origin': {'name': 'attribute', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'EQUAL', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 51: {'origin': {'name': 'block', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'identifier', '__type__': 'NonTerminal'}, {'name': '__block_star_1', '__type__': 'NonTerminal'}, {'name': 'LBRACE', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'body', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 52: {'origin': {'name': 'block', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'identifier', '__type__': 'NonTerminal'}, {'name': '__block_star_1', '__type__': 'NonTerminal'}, {'name': 'LBRACE', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'body', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 53: {'origin': {'name': 'block', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'LBRACE', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'body', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 2, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 54: {'origin': {'name': 'block', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'LBRACE', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'body', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 3, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 55: {'origin': {'name': 'new_line_and_or_comma', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 56: {'origin': {'name': 'new_line_and_or_comma', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 57: {'origin': {'name': 'new_line_and_or_comma', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 2, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 58: {'origin': {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__new_line_or_comment_plus_2', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 59: {'origin': {'name': 'identifier', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__ANON_3', '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'}, 60: {'origin': {'name': 'expression', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'conditional', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 61: {'origin': {'name': 'conditional', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'operation', '__type__': 'NonTerminal'}, {'name': 'QMARK', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'operation', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'operation', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 62: {'origin': {'name': 'conditional', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'operation', '__type__': 'NonTerminal'}, {'name': 'QMARK', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'operation', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'operation', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 63: {'origin': {'name': 'conditional', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'operation', '__type__': 'NonTerminal'}, {'name': 'QMARK', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'operation', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'operation', '__type__': 'NonTerminal'}], 'order': 2, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 64: {'origin': {'name': 'conditional', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'operation', '__type__': 'NonTerminal'}, {'name': 'QMARK', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'operation', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'operation', '__type__': 'NonTerminal'}], 'order': 3, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 65: {'origin': {'name': 'conditional', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'operation', '__type__': 'NonTerminal'}, {'name': 'QMARK', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'operation', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'operation', '__type__': 'NonTerminal'}], 'order': 4, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 66: {'origin': {'name': 'conditional', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'operation', '__type__': 'NonTerminal'}, {'name': 'QMARK', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'operation', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'operation', '__type__': 'NonTerminal'}], 'order': 5, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 67: {'origin': {'name': 'conditional', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'operation', '__type__': 'NonTerminal'}, {'name': 'QMARK', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'operation', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'operation', '__type__': 'NonTerminal'}], 'order': 6, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 68: {'origin': {'name': 'conditional', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'operation', '__type__': 'NonTerminal'}, {'name': 'QMARK', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'operation', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'operation', '__type__': 'NonTerminal'}], 'order': 7, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 69: {'origin': {'name': 'conditional', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'operation', '__type__': 'NonTerminal'}], 'order': 8, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 70: {'origin': {'name': 'operation', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'unary_op', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 71: {'origin': {'name': 'operation', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'binary_or_op', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 72: {'origin': {'name': 'unary_op', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'MINUS', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr_term', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 73: {'origin': {'name': 'unary_op', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'BANG', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expr_term', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 74: {'origin': {'name': 'binary_or_op', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'binary_and_op', '__type__': 'NonTerminal'}, {'name': '__binary_or_op_star_3', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 75: {'origin': {'name': 'binary_or_op', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'binary_and_op', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 76: {'origin': {'name': 'binary_and_op', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'binary_eq_op', '__type__': 'NonTerminal'}, {'name': '__binary_and_op_star_4', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 77: {'origin': {'name': 'binary_and_op', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'binary_eq_op', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 78: {'origin': {'name': 'binary_eq_op', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'binary_test_op', '__type__': 'NonTerminal'}, {'name': '__binary_eq_op_star_5', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 79: {'origin': {'name': 'binary_eq_op', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'binary_test_op', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 80: {'origin': {'name': 'binary_test_op', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'binary_term_op', '__type__': 'NonTerminal'}, {'name': '__binary_test_op_star_6', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 81: {'origin': {'name': 'binary_test_op', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'binary_term_op', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 82: {'origin': {'name': 'binary_term_op', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'binary_factor_op', '__type__': 'NonTerminal'}, {'name': '__binary_term_op_star_7', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 83: {'origin': {'name': 'binary_term_op', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'binary_factor_op', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 84: {'origin': {'name': 'binary_factor_op', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_term', '__type__': 'NonTerminal'}, {'name': '__binary_factor_op_star_8', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 85: {'origin': {'name': 'binary_factor_op', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_term', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 86: {'origin': {'name': 'binary_or_operator', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__ANON_4', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 87: {'origin': {'name': 'binary_and_operator', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__ANON_5', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 88: {'origin': {'name': 'binary_term_operator', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'PLUS', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 89: {'origin': {'name': 'binary_term_operator', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'MINUS', 'filter_out': False, '__type__': 'Terminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 90: {'origin': {'name': 'binary_factor_operator', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'STAR', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 91: {'origin': {'name': 'binary_factor_operator', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'SLASH', 'filter_out': False, '__type__': 'Terminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 92: {'origin': {'name': 'binary_factor_operator', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'PERCENT', 'filter_out': False, '__type__': 'Terminal'}], 'order': 2, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 93: {'origin': {'name': 'binary_test_operator', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__ANON_6', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 94: {'origin': {'name': 'binary_test_operator', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'MORETHAN', 'filter_out': False, '__type__': 'Terminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 95: {'origin': {'name': 'binary_test_operator', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__ANON_7', 'filter_out': False, '__type__': 'Terminal'}], 'order': 2, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 96: {'origin': {'name': 'binary_test_operator', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LESSTHAN', 'filter_out': False, '__type__': 'Terminal'}], 'order': 3, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 97: {'origin': {'name': 'binary_eq_operator', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__ANON_8', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 98: {'origin': {'name': 'binary_eq_operator', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__ANON_9', 'filter_out': False, '__type__': 'Terminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 99: {'origin': {'name': 'expr_term', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LPAR', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RPAR', 'filter_out': True, '__type__': 'Terminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 100: {'origin': {'name': 'expr_term', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LPAR', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'RPAR', 'filter_out': True, '__type__': 'Terminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 101: {'origin': {'name': 'expr_term', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LPAR', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RPAR', 'filter_out': True, '__type__': 'Terminal'}], 'order': 2, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 102: {'origin': {'name': 'expr_term', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LPAR', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'RPAR', 'filter_out': True, '__type__': 'Terminal'}], 'order': 3, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 103: {'origin': {'name': 'expr_term', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'float_lit', '__type__': 'NonTerminal'}], 'order': 4, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 104: {'origin': {'name': 'expr_term', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'int_lit', '__type__': 'NonTerminal'}], 'order': 5, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 105: {'origin': {'name': 'expr_term', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'quoted_template_expr', '__type__': 'NonTerminal'}], 'order': 6, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 106: {'origin': {'name': 'expr_term', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'tuple', '__type__': 'NonTerminal'}], 'order': 7, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 107: {'origin': {'name': 'expr_term', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'object', '__type__': 'NonTerminal'}], 'order': 8, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 108: {'origin': {'name': 'expr_term', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'function_call', '__type__': 'NonTerminal'}], 'order': 9, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 109: {'origin': {'name': 'expr_term', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'index_expr_term', '__type__': 'NonTerminal'}], 'order': 10, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 110: {'origin': {'name': 'expr_term', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'get_attr_expr_term', '__type__': 'NonTerminal'}], 'order': 11, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 111: {'origin': {'name': 'expr_term', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'identifier', '__type__': 'NonTerminal'}], 'order': 12, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 112: {'origin': {'name': 'expr_term', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'heredoc_template', '__type__': 'NonTerminal'}], 'order': 13, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 113: {'origin': {'name': 'expr_term', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'heredoc_template_trim', '__type__': 'NonTerminal'}], 'order': 14, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 114: {'origin': {'name': 'expr_term', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'attr_splat_expr_term', '__type__': 'NonTerminal'}], 'order': 15, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 115: {'origin': {'name': 'expr_term', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'full_splat_expr_term', '__type__': 'NonTerminal'}], 'order': 16, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 116: {'origin': {'name': 'expr_term', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'for_tuple_expr', '__type__': 'NonTerminal'}], 'order': 17, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 117: {'origin': {'name': 'expr_term', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'for_object_expr', '__type__': 'NonTerminal'}], 'order': 18, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 118: {'origin': {'name': 'string_lit', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'STRING_LIT', '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'}, 119: {'origin': {'name': 'quoted_template_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'STRING_LIT', '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'}, 120: {'origin': {'name': 'int_lit', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__int_lit_plus_9', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 121: {'origin': {'name': 'float_lit', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__int_lit_plus_9', '__type__': 'NonTerminal'}, {'name': 'DOT', 'filter_out': False, '__type__': 'Terminal'}, {'name': '__int_lit_plus_9', '__type__': 'NonTerminal'}, {'name': 'EXP_MARK', 'filter_out': False, '__type__': 'Terminal'}, {'name': '__int_lit_plus_9', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 122: {'origin': {'name': 'float_lit', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__int_lit_plus_9', '__type__': 'NonTerminal'}, {'name': 'DOT', 'filter_out': False, '__type__': 'Terminal'}, {'name': '__int_lit_plus_9', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 123: {'origin': {'name': 'float_lit', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__int_lit_plus_9', '__type__': 'NonTerminal'}, {'name': 'EXP_MARK', 'filter_out': False, '__type__': 'Terminal'}, {'name': '__int_lit_plus_9', '__type__': 'NonTerminal'}], 'order': 2, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 124: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__tuple_star_10', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 125: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__tuple_star_10', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 126: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__tuple_star_10', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 2, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 127: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__tuple_star_10', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 3, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 128: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__tuple_star_10', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 4, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 129: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__tuple_star_10', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 5, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 130: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__tuple_star_10', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 6, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 131: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 7, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 132: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 8, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 133: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 9, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 134: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 10, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 135: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 11, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 136: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 12, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 137: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 13, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 138: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__tuple_star_10', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 14, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 139: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__tuple_star_10', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 15, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 140: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__tuple_star_10', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 16, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 141: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__tuple_star_10', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 17, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 142: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__tuple_star_10', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 18, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 143: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__tuple_star_10', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 19, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 144: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__tuple_star_10', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 20, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 145: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 21, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 146: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 22, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 147: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 23, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 148: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 24, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 149: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 25, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 150: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 26, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 151: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 27, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 152: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 28, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 153: {'origin': {'name': 'tuple', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 29, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 154: {'origin': {'name': 'object', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'object_elem', '__type__': 'NonTerminal'}, {'name': '__object_star_11', '__type__': 'NonTerminal'}, {'name': 'new_line_and_or_comma', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': True, '__type__': 'Terminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 155: {'origin': {'name': 'object', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'object_elem', '__type__': 'NonTerminal'}, {'name': '__object_star_11', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': True, '__type__': 'Terminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 156: {'origin': {'name': 'object', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'object_elem', '__type__': 'NonTerminal'}, {'name': 'new_line_and_or_comma', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': True, '__type__': 'Terminal'}], 'order': 2, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 157: {'origin': {'name': 'object', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'object_elem', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': True, '__type__': 'Terminal'}], 'order': 3, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 158: {'origin': {'name': 'object', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': True, '__type__': 'Terminal'}], 'order': 4, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 159: {'origin': {'name': 'object', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'object_elem', '__type__': 'NonTerminal'}, {'name': '__object_star_11', '__type__': 'NonTerminal'}, {'name': 'new_line_and_or_comma', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': True, '__type__': 'Terminal'}], 'order': 5, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 160: {'origin': {'name': 'object', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'object_elem', '__type__': 'NonTerminal'}, {'name': '__object_star_11', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': True, '__type__': 'Terminal'}], 'order': 6, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 161: {'origin': {'name': 'object', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'object_elem', '__type__': 'NonTerminal'}, {'name': 'new_line_and_or_comma', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': True, '__type__': 'Terminal'}], 'order': 7, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 162: {'origin': {'name': 'object', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'object_elem', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': True, '__type__': 'Terminal'}], 'order': 8, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 163: {'origin': {'name': 'object', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'RBRACE', 'filter_out': True, '__type__': 'Terminal'}], 'order': 9, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 164: {'origin': {'name': 'object_elem', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'EQUAL', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 165: {'origin': {'name': 'object_elem', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 166: {'origin': {'name': 'object_elem', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'EQUAL', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}], 'order': 2, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 167: {'origin': {'name': 'object_elem', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}], 'order': 3, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 168: {'origin': {'name': 'heredoc_template', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__ANON_10', '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'}, 169: {'origin': {'name': 'heredoc_template_trim', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__ANON_11', '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'}, 170: {'origin': {'name': 'function_call', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'LPAR', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'arguments', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RPAR', 'filter_out': True, '__type__': 'Terminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 171: {'origin': {'name': 'function_call', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'LPAR', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'arguments', '__type__': 'NonTerminal'}, {'name': 'RPAR', 'filter_out': True, '__type__': 'Terminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 172: {'origin': {'name': 'function_call', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'LPAR', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RPAR', 'filter_out': True, '__type__': 'Terminal'}], 'order': 2, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 173: {'origin': {'name': 'function_call', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'LPAR', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RPAR', 'filter_out': True, '__type__': 'Terminal'}], 'order': 3, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 174: {'origin': {'name': 'function_call', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'LPAR', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'arguments', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RPAR', 'filter_out': True, '__type__': 'Terminal'}], 'order': 4, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 175: {'origin': {'name': 'function_call', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'LPAR', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'arguments', '__type__': 'NonTerminal'}, {'name': 'RPAR', 'filter_out': True, '__type__': 'Terminal'}], 'order': 5, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 176: {'origin': {'name': 'function_call', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'LPAR', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'RPAR', 'filter_out': True, '__type__': 'Terminal'}], 'order': 6, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 177: {'origin': {'name': 'arguments', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__tuple_star_10', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 178: {'origin': {'name': 'arguments', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__tuple_star_10', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 179: {'origin': {'name': 'arguments', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__tuple_star_10', '__type__': 'NonTerminal'}, {'name': 'kwarg', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 2, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 180: {'origin': {'name': 'arguments', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__tuple_star_10', '__type__': 'NonTerminal'}, {'name': 'kwarg', '__type__': 'NonTerminal'}], 'order': 3, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 181: {'origin': {'name': 'arguments', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__tuple_star_10', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 4, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 182: {'origin': {'name': 'arguments', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__tuple_star_10', '__type__': 'NonTerminal'}], 'order': 5, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 183: {'origin': {'name': 'arguments', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 6, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 184: {'origin': {'name': 'arguments', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}], 'order': 7, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 185: {'origin': {'name': 'arguments', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'kwarg', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 8, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 186: {'origin': {'name': 'arguments', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'kwarg', '__type__': 'NonTerminal'}], 'order': 9, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 187: {'origin': {'name': 'arguments', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 10, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 188: {'origin': {'name': 'arguments', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expression', '__type__': 'NonTerminal'}], 'order': 11, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 189: {'origin': {'name': 'kwarg', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__ANON_12', 'filter_out': True, '__type__': 'Terminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 190: {'origin': {'name': 'index_expr_term', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_term', '__type__': 'NonTerminal'}, {'name': 'index', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 191: {'origin': {'name': 'get_attr_expr_term', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_term', '__type__': 'NonTerminal'}, {'name': 'get_attr', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 192: {'origin': {'name': 'attr_splat_expr_term', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_term', '__type__': 'NonTerminal'}, {'name': 'attr_splat', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 193: {'origin': {'name': 'full_splat_expr_term', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'expr_term', '__type__': 'NonTerminal'}, {'name': 'full_splat', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 194: {'origin': {'name': 'index', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 195: {'origin': {'name': 'index', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 196: {'origin': {'name': 'index', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 2, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 197: {'origin': {'name': 'index', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 3, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 198: {'origin': {'name': 'index', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'DOT', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'int_lit', '__type__': 'NonTerminal'}], 'order': 4, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 199: {'origin': {'name': 'get_attr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'DOT', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 200: {'origin': {'name': 'attr_splat', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__ANON_13', 'filter_out': True, '__type__': 'Terminal'}, {'name': '__attr_splat_star_12', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 201: {'origin': {'name': 'attr_splat', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__ANON_13', 'filter_out': True, '__type__': 'Terminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 202: {'origin': {'name': 'full_splat', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'STAR', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': '__full_splat_star_13', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 203: {'origin': {'name': 'full_splat', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'STAR', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'RSQB', 'filter_out': True, '__type__': 'Terminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': True, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 204: {'origin': {'name': 'for_tuple_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 205: {'origin': {'name': 'for_tuple_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 206: {'origin': {'name': 'for_tuple_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 2, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 207: {'origin': {'name': 'for_tuple_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 3, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 208: {'origin': {'name': 'for_tuple_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 4, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 209: {'origin': {'name': 'for_tuple_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 5, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 210: {'origin': {'name': 'for_tuple_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 6, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 211: {'origin': {'name': 'for_tuple_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 7, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 212: {'origin': {'name': 'for_tuple_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 8, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 213: {'origin': {'name': 'for_tuple_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 9, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 214: {'origin': {'name': 'for_tuple_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 10, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 215: {'origin': {'name': 'for_tuple_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 11, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 216: {'origin': {'name': 'for_tuple_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 12, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 217: {'origin': {'name': 'for_tuple_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 13, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 218: {'origin': {'name': 'for_tuple_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 14, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 219: {'origin': {'name': 'for_tuple_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 15, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 220: {'origin': {'name': 'for_tuple_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 16, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 221: {'origin': {'name': 'for_tuple_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 17, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 222: {'origin': {'name': 'for_tuple_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 18, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 223: {'origin': {'name': 'for_tuple_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 19, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 224: {'origin': {'name': 'for_tuple_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 20, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 225: {'origin': {'name': 'for_tuple_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 21, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 226: {'origin': {'name': 'for_tuple_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 22, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 227: {'origin': {'name': 'for_tuple_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 23, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 228: {'origin': {'name': 'for_tuple_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 24, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 229: {'origin': {'name': 'for_tuple_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 25, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 230: {'origin': {'name': 'for_tuple_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 26, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 231: {'origin': {'name': 'for_tuple_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LSQB', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'RSQB', 'filter_out': False, '__type__': 'Terminal'}], 'order': 27, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 232: {'origin': {'name': 'for_object_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_14', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_12', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 233: {'origin': {'name': 'for_object_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_14', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_12', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 234: {'origin': {'name': 'for_object_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_14', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_12', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 2, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 235: {'origin': {'name': 'for_object_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_14', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_12', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 3, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 236: {'origin': {'name': 'for_object_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_14', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_12', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 4, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 237: {'origin': {'name': 'for_object_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_14', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_12', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 5, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 238: {'origin': {'name': 'for_object_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_14', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_12', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'RBRACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 6, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 239: {'origin': {'name': 'for_object_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_14', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 7, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 240: {'origin': {'name': 'for_object_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_14', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 8, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 241: {'origin': {'name': 'for_object_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_14', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 9, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 242: {'origin': {'name': 'for_object_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_14', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 10, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 243: {'origin': {'name': 'for_object_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_14', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 11, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 244: {'origin': {'name': 'for_object_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_14', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 12, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 245: {'origin': {'name': 'for_object_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_14', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 13, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 246: {'origin': {'name': 'for_object_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_14', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_12', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 14, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 247: {'origin': {'name': 'for_object_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_14', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_12', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 15, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 248: {'origin': {'name': 'for_object_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_14', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_12', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 16, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 249: {'origin': {'name': 'for_object_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_14', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_12', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 17, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 250: {'origin': {'name': 'for_object_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_14', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_12', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 18, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 251: {'origin': {'name': 'for_object_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_14', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_12', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 19, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 252: {'origin': {'name': 'for_object_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_14', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_12', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'RBRACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 20, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 253: {'origin': {'name': 'for_object_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_14', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 21, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 254: {'origin': {'name': 'for_object_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_14', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 22, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 255: {'origin': {'name': 'for_object_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_14', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 23, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 256: {'origin': {'name': 'for_object_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_14', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 24, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 257: {'origin': {'name': 'for_object_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_14', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 25, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 258: {'origin': {'name': 'for_object_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_14', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'for_cond', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 26, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 259: {'origin': {'name': 'for_object_expr', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'LBRACE', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'for_intro', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': '__ANON_14', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'RBRACE', 'filter_out': False, '__type__': 'Terminal'}], 'order': 27, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 260: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 261: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 262: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 2, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 263: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}], 'order': 3, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 264: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 4, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 265: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}], 'order': 5, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 266: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 6, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 267: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}], 'order': 7, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 268: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 8, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 269: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}], 'order': 9, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 270: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 10, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 271: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}], 'order': 11, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 272: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 12, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 273: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}], 'order': 13, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 274: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 14, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 275: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}], 'order': 15, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 276: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 16, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 277: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}], 'order': 17, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 278: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 18, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 279: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}], 'order': 19, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 280: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 20, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 281: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}], 'order': 21, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 282: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 22, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 283: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}], 'order': 23, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 284: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 24, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 285: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}], 'order': 25, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 286: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 26, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 287: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}], 'order': 27, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 288: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 28, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 289: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}], 'order': 29, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 290: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 30, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 291: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}], 'order': 31, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 292: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 32, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 293: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}], 'order': 33, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 294: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 34, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 295: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}], 'order': 35, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 296: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 36, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 297: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}], 'order': 37, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 298: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}], 'order': 38, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 299: {'origin': {'name': 'for_intro', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'FOR', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}, {'name': 'IN', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}, {'name': 'COLON', 'filter_out': False, '__type__': 'Terminal'}], 'order': 39, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 300: {'origin': {'name': 'for_cond', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'IF', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 301: {'origin': {'name': 'for_cond', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'IF', 'filter_out': False, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': True, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 302: {'origin': {'name': '__body_star_0', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'attribute', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 303: {'origin': {'name': '__body_star_0', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'block', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 304: {'origin': {'name': '__body_star_0', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__body_star_0', '__type__': 'NonTerminal'}, {'name': 'attribute', '__type__': 'NonTerminal'}], 'order': 2, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 305: {'origin': {'name': '__body_star_0', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__body_star_0', '__type__': 'NonTerminal'}, {'name': 'block', '__type__': 'NonTerminal'}], 'order': 3, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 306: {'origin': {'name': '__block_star_1', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'identifier', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 307: {'origin': {'name': '__block_star_1', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'string_lit', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 308: {'origin': {'name': '__block_star_1', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__block_star_1', '__type__': 'NonTerminal'}, {'name': 'identifier', '__type__': 'NonTerminal'}], 'order': 2, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 309: {'origin': {'name': '__block_star_1', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__block_star_1', '__type__': 'NonTerminal'}, {'name': 'string_lit', '__type__': 'NonTerminal'}], 'order': 3, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 310: {'origin': {'name': '__new_line_or_comment_plus_2', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__ANON_0', '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'}, 311: {'origin': {'name': '__new_line_or_comment_plus_2', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__ANON_1', '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'}, 312: {'origin': {'name': '__new_line_or_comment_plus_2', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__ANON_2', 'filter_out': False, '__type__': 'Terminal'}], 'order': 2, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 313: {'origin': {'name': '__new_line_or_comment_plus_2', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__new_line_or_comment_plus_2', '__type__': 'NonTerminal'}, {'name': '__ANON_0', 'filter_out': False, '__type__': 'Terminal'}], 'order': 3, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 314: {'origin': {'name': '__new_line_or_comment_plus_2', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__new_line_or_comment_plus_2', '__type__': 'NonTerminal'}, {'name': '__ANON_1', 'filter_out': False, '__type__': 'Terminal'}], 'order': 4, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 315: {'origin': {'name': '__new_line_or_comment_plus_2', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__new_line_or_comment_plus_2', '__type__': 'NonTerminal'}, {'name': '__ANON_2', 'filter_out': False, '__type__': 'Terminal'}], 'order': 5, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 316: {'origin': {'name': '__binary_or_op_star_3', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'binary_or_operator', '__type__': 'NonTerminal'}, {'name': 'binary_and_op', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 317: {'origin': {'name': '__binary_or_op_star_3', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__binary_or_op_star_3', '__type__': 'NonTerminal'}, {'name': 'binary_or_operator', '__type__': 'NonTerminal'}, {'name': 'binary_and_op', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 318: {'origin': {'name': '__binary_and_op_star_4', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'binary_and_operator', '__type__': 'NonTerminal'}, {'name': 'binary_eq_op', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 319: {'origin': {'name': '__binary_and_op_star_4', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__binary_and_op_star_4', '__type__': 'NonTerminal'}, {'name': 'binary_and_operator', '__type__': 'NonTerminal'}, {'name': 'binary_eq_op', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 320: {'origin': {'name': '__binary_eq_op_star_5', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'binary_eq_operator', '__type__': 'NonTerminal'}, {'name': 'binary_test_op', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 321: {'origin': {'name': '__binary_eq_op_star_5', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__binary_eq_op_star_5', '__type__': 'NonTerminal'}, {'name': 'binary_eq_operator', '__type__': 'NonTerminal'}, {'name': 'binary_test_op', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 322: {'origin': {'name': '__binary_test_op_star_6', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'binary_test_operator', '__type__': 'NonTerminal'}, {'name': 'binary_term_op', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 323: {'origin': {'name': '__binary_test_op_star_6', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__binary_test_op_star_6', '__type__': 'NonTerminal'}, {'name': 'binary_test_operator', '__type__': 'NonTerminal'}, {'name': 'binary_term_op', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 324: {'origin': {'name': '__binary_term_op_star_7', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'binary_term_operator', '__type__': 'NonTerminal'}, {'name': 'binary_factor_op', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 325: {'origin': {'name': '__binary_term_op_star_7', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__binary_term_op_star_7', '__type__': 'NonTerminal'}, {'name': 'binary_term_operator', '__type__': 'NonTerminal'}, {'name': 'binary_factor_op', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 326: {'origin': {'name': '__binary_factor_op_star_8', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'binary_factor_operator', '__type__': 'NonTerminal'}, {'name': 'expr_term', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 327: {'origin': {'name': '__binary_factor_op_star_8', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__binary_factor_op_star_8', '__type__': 'NonTerminal'}, {'name': 'binary_factor_operator', '__type__': 'NonTerminal'}, {'name': 'expr_term', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 328: {'origin': {'name': '__int_lit_plus_9', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'DECIMAL', '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'}, 329: {'origin': {'name': '__int_lit_plus_9', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__int_lit_plus_9', '__type__': 'NonTerminal'}, {'name': 'DECIMAL', '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'}, 330: {'origin': {'name': '__tuple_star_10', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 331: {'origin': {'name': '__tuple_star_10', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 332: {'origin': {'name': '__tuple_star_10', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}], 'order': 2, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 333: {'origin': {'name': '__tuple_star_10', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}], 'order': 3, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 334: {'origin': {'name': '__tuple_star_10', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__tuple_star_10', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}], 'order': 4, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 335: {'origin': {'name': '__tuple_star_10', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__tuple_star_10', '__type__': 'NonTerminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}], 'order': 5, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 336: {'origin': {'name': '__tuple_star_10', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__tuple_star_10', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'new_line_or_comment', '__type__': 'NonTerminal'}, {'name': 'expression', '__type__': 'NonTerminal'}], 'order': 6, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 337: {'origin': {'name': '__tuple_star_10', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__tuple_star_10', '__type__': 'NonTerminal'}, {'name': 'COMMA', 'filter_out': True, '__type__': 'Terminal'}, {'name': 'expression', '__type__': 'NonTerminal'}], 'order': 7, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 338: {'origin': {'name': '__object_star_11', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'new_line_and_or_comma', '__type__': 'NonTerminal'}, {'name': 'object_elem', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 339: {'origin': {'name': '__object_star_11', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__object_star_11', '__type__': 'NonTerminal'}, {'name': 'new_line_and_or_comma', '__type__': 'NonTerminal'}, {'name': 'object_elem', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 340: {'origin': {'name': '__attr_splat_star_12', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'get_attr', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 341: {'origin': {'name': '__attr_splat_star_12', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__attr_splat_star_12', '__type__': 'NonTerminal'}, {'name': 'get_attr', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 342: {'origin': {'name': '__full_splat_star_13', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'get_attr', '__type__': 'NonTerminal'}], 'order': 0, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 343: {'origin': {'name': '__full_splat_star_13', '__type__': 'NonTerminal'}, 'expansion': [{'name': 'index', '__type__': 'NonTerminal'}], 'order': 1, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 344: {'origin': {'name': '__full_splat_star_13', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__full_splat_star_13', '__type__': 'NonTerminal'}, {'name': 'get_attr', '__type__': 'NonTerminal'}], 'order': 2, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, 'priority': None, 'template_source': None, 'empty_indices': (), '__type__': 'RuleOptions'}, '__type__': 'Rule'}, 345: {'origin': {'name': '__full_splat_star_13', '__type__': 'NonTerminal'}, 'expansion': [{'name': '__full_splat_star_13', '__type__': 'NonTerminal'}, {'name': 'index', '__type__': 'NonTerminal'}], 'order': 3, 'alias': None, 'options': {'keep_all_tokens': False, 'expand1': False, '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)
Functions
def Lark_StandAlone(**kwargs)
-
Expand source code
def Lark_StandAlone(**kwargs): return Lark._load_from_dict(DATA, MEMO, **kwargs)
def apply_visit_wrapper(func, name, wrapper)
-
Expand source code
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") @wraps(func) def f(children): return wrapper(func, name, children, None) return f
def assert_config(value, options, msg='Got %r, expected one of %s')
-
Expand source code
def assert_config(value, options, msg='Got %r, expected one of %s'): if value not in options: raise ConfigurationError(msg % (value, options))
def build_mres(terminals, g_regex_flags, re_, use_bytes, match_whole=False)
-
Expand source code
def build_mres(terminals, g_regex_flags, re_, use_bytes, match_whole=False): return _build_mres(terminals, len(terminals), g_regex_flags, match_whole, re_, use_bytes)
def classify(seq, key=None, value=None)
-
Expand source code
def classify(seq, key=None, value=None): d = {} for item in seq: k = key(item) if (key is not None) else item v = value(item) if (value is not None) else item if k in d: d[k].append(v) else: d[k] = [v] return d
def create_contextual_lexer(lexer_conf, parser, postlex)
-
Expand source code
def create_contextual_lexer(lexer_conf, parser, postlex): states = {idx:list(t.keys()) for idx, t in parser._parse_table.states.items()} always_accept = postlex.always_accept if postlex else () return ContextualLexer(lexer_conf, states, always_accept=always_accept)
def create_lalr_parser(lexer_conf, parser_conf, options=None)
-
Expand source code
def create_lalr_parser(lexer_conf, parser_conf, options=None): debug = options.debug if options else False return LALR_Parser(parser_conf, debug=debug)
def create_traditional_lexer(lexer_conf, parser, postlex)
-
Expand source code
def create_traditional_lexer(lexer_conf, parser, postlex): return TraditionalLexer(lexer_conf)
def get_frontend(parser, lexer)
-
Expand source code
def get_frontend(parser, lexer): assert_config(parser, ('lalr', 'earley', 'cyk')) if not isinstance(lexer, type): ## expected = { 'lalr': ('standard', 'contextual'), 'earley': ('standard', 'dynamic', 'dynamic_complete'), 'cyk': ('standard', ), }[parser] assert_config(lexer, expected, 'Parser %r does not support lexer %%r, expected one of %%s' % parser) return MakeParsingFrontend(parser, lexer)
def get_regexp_width(expr)
-
Expand source code
def get_regexp_width(expr): if 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: raise ValueError(expr)
def inline_args(obj)
-
Expand source code
def inline_args(obj): ## return _apply_decorator(obj, _inline_args__func)
def inplace_transformer(func)
-
Expand source code
def inplace_transformer(func): @wraps(func) def f(children): ## tree = Tree(func.__name__, children) return func(tree) return f
def maybe_create_ambiguous_expander(tree_class, expansion, keep_all_tokens)
-
Expand source code
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)
def maybe_create_child_filter(expansion, keep_all_tokens, ambiguous, _empty_indices)
-
Expand source code
def maybe_create_child_filter(expansion, keep_all_tokens, ambiguous, _empty_indices): ## 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])
def ptb_inline_args(func)
-
Expand source code
def ptb_inline_args(func): @wraps(func) def f(children): return func(*children) return f
def smart_decorator(f, create_decorator)
-
Expand source code
def smart_decorator(f, create_decorator): if isinstance(f, types.FunctionType): return wraps(f)(create_decorator(f, True)) elif isinstance(f, (classtype, type, types.BuiltinFunctionType)): return wraps(f)(create_decorator(f, False)) elif isinstance(f, types.MethodType): return wraps(f)(create_decorator(f.__func__, True)) elif isinstance(f, partial): ## return wraps(f.func)(create_decorator(lambda *args, **kw: f(*args[1:], **kw), True)) else: return create_decorator(f.__func__.__call__, True)
def v_args(inline=False, meta=False, tree=False, wrapper=None)
-
Expand source code
def v_args(inline=False, meta=False, tree=False, wrapper=None): #-- 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_decorator(obj, _visitor_args_func_dec, visit_wrapper=func) return _visitor_args_dec
def visit_children_decor(func)
-
Expand source code
def visit_children_decor(func): #-- @wraps(func) def inner(cls, tree): values = cls.visit_children(tree) return func(cls, values) return inner
Classes
class Action (name)
-
Expand source code
class Action: def __init__(self, name): self.name = name def __str__(self): return self.name def __repr__(self): return str(self)
class AmbiguousExpander (to_expand, tree_class, node_builder)
-
Expand source code
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) to_expand = [j for j, grandchild in enumerate(child.children) if _is_ambig_tree(grandchild)] child.expand_kids_by_index(*to_expand) if not ambiguous: return self.node_builder(children) expand = [iter(child.children) if i in ambiguous else repeat(child) for i, child in enumerate(children)] return self.tree_class('_ambig', [self.node_builder(list(f[0])) for f in product(zip(*expand))])
class AmbiguousIntermediateExpander (tree_class, node_builder)
-
Expand source code
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)
class CallChain (callback1, callback2, cond)
-
Expand source code
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
class ChildFilter (to_include, append_none, node_builder)
-
Expand source code
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)
Subclasses
class ChildFilterLALR (to_include, append_none, node_builder)
-
Expand source code
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)
Ancestors
class ChildFilterLALR_NoPlaceholders (to_include, node_builder)
-
Expand source code
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)
Ancestors
class ConfigurationError (*args, **kwargs)
-
Inappropriate argument value (of correct type).
Expand source code
class ConfigurationError(LarkError, ValueError): pass
Ancestors
- LarkError
- builtins.ValueError
- builtins.Exception
- builtins.BaseException
class ContextualLexer (conf, states, always_accept=())
-
Expand source code
class ContextualLexer(Lexer): def __init__(self, conf, states, always_accept=()): terminals = list(conf.terminals) terminals_by_name = conf.terminals_by_name trad_conf = copy(conf) trad_conf.terminals = terminals lexer_by_tokens = {} 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 = TraditionalLexer(lexer_conf) lexer_by_tokens[key] = lexer self.lexers[state] = lexer assert trad_conf.terminals is terminals self.root_lexer = TraditionalLexer(trad_conf) def make_lexer_state(self, text): return self.root_lexer.make_lexer_state(text) def lex(self, lexer_state, parser_state): 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 ##
Ancestors
Methods
def lex(self, lexer_state, parser_state)
-
Expand source code
def lex(self, lexer_state, parser_state): 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 ##
def make_lexer_state(self, text)
-
Expand source code
def make_lexer_state(self, text): return self.root_lexer.make_lexer_state(text)
class DedentError (*args, **kwargs)
-
Common base class for all non-exit exceptions.
Expand source code
class DedentError(LarkError): pass
Ancestors
- LarkError
- builtins.Exception
- builtins.BaseException
class Discard (*args, **kwargs)
-
Common base class for all non-exit exceptions.
Expand source code
class Discard(Exception): #-- pass
Ancestors
- builtins.Exception
- builtins.BaseException
class ExpandSingleChild (node_builder)
-
Expand source code
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 GrammarError (*args, **kwargs)
-
Common base class for all non-exit exceptions.
Expand source code
class GrammarError(LarkError): pass
Ancestors
- LarkError
- builtins.Exception
- builtins.BaseException
class Indenter
-
Helper class that provides a standard way to create an ABC using inheritance.
Expand source code
class Indenter(PostLex): def __init__(self): self.paren_level = None self.indent_level = None assert self.tab_len > 0 def handle_NL(self, 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): for token in stream: if token.type == self.NL_type: for t in self.handle_NL(token): yield t 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(self.DEDENT_type, '') 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,)
Ancestors
- PostLex
- abc.ABC
Instance variables
var always_accept
-
Built-in immutable sequence.
If no argument is given, the constructor returns an empty tuple. If iterable is specified the tuple is initialized from iterable's items.
If the argument is a tuple, the return value is the same object.
Expand source code
@property def always_accept(self): return (self.NL_type,)
Methods
def handle_NL(self, token)
-
Expand source code
def handle_NL(self, 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)
-
Expand source code
def process(self, stream): self.paren_level = 0 self.indent_level = [0] return self._process(stream)
class InlineTransformer (visit_tokens=True)
-
Expand source code
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)
Ancestors
- Transformer
- runflow.hcl2_parser._Decoratable
class IntParseTable (states, start_states, end_states)
-
Expand source code
class IntParseTable(ParseTable): @classmethod def from_ParseTable(cls, parse_table): enum = list(parse_table.states) state_to_idx = {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)
Ancestors
Static methods
def from_ParseTable(parse_table)
-
Expand source code
@classmethod def from_ParseTable(cls, parse_table): enum = list(parse_table.states) state_to_idx = {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 Interpreter
-
Expand source code
class Interpreter(_Decoratable): #-- def visit(self, tree): 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): return [self.visit(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)
Ancestors
- runflow.hcl2_parser._Decoratable
Methods
def visit(self, tree)
-
Expand source code
def visit(self, tree): 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)
-
Expand source code
def visit_children(self, tree): return [self.visit(child) if isinstance(child, Tree) else child for child in tree.children]
class LALR_Parser (parser_conf, debug=False)
-
Expand source code
class LALR_Parser(Serialize): def __init__(self, parser_conf, debug=False): analysis = LALR_Analyzer(parser_conf, debug=debug) 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): return self._parse_table.serialize(memo) def parse_interactive(self, lexer, start): 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_state.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[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
Ancestors
Static methods
def deserialize(data, memo, callbacks, debug=False)
-
Expand source code
@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
Methods
def parse(self, lexer, start, on_error=None)
-
Expand source code
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_state.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[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
def parse_interactive(self, lexer, start)
-
Expand source code
def parse_interactive(self, lexer, start): return self.parser.parse(lexer, start, start_interactive=True)
def serialize(self, memo)
-
Expand source code
def serialize(self, memo): return self._parse_table.serialize(memo)
class Lark (grammar, **options)
-
Expand source code
class Lark(Serialize): #-- def __init__(self, grammar, **options): self.options = LarkOptions(options) ## use_regex = self.options.regex if use_regex: if 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_md5 = None if isinstance(grammar, STRING_TYPE): self.source_grammar = grammar if self.options.use_bytes: if not isascii(grammar): raise ConfigurationError("Grammar must be ascii only, when use_bytes=True") if sys.version_info[0] == 2 and self.options.use_bytes != 'force': raise ConfigurationError("`use_bytes=True` may have issues on python2." "Use `use_bytes='force'` to use it at your own risk.") 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') 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_md5 = hashlib.md5(s.encode('utf8')).hexdigest() if isinstance(self.options.cache, STRING_TYPE): cache_fn = self.options.cache else: if self.options.cache is not True: raise ConfigurationError("cache argument must be bool or str") ## cache_fn = tempfile.gettempdir() + '/.lark_cache_%s_%s_%s.tmp' % ((cache_md5,) + sys.version_info[:2]) if FS.exists(cache_fn): logger.debug('Loading grammar from cache: %s', cache_fn) ## for name in (set(options) - _LOAD_ALLOWED_OPTIONS): del options[name] with FS.open(cache_fn, 'rb') as f: old_options = self.options try: file_md5 = f.readline().rstrip(b'\n') cached_used_files = pickle.load(f) if file_md5 == cache_md5.encode('utf8') and verify_used_files(cached_used_files): cached_parser_data = pickle.load(f) self._load(cached_parser_data, **options) return 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 standard instead. " "Consider using lalr with contextual instead of earley") self.options.lexer = 'standard' else: self.options.lexer = 'dynamic' elif self.options.parser == 'cyk': self.options.lexer = 'standard' else: assert False, self.options.parser lexer = self.options.lexer if isinstance(lexer, type): assert issubclass(lexer, Lexer) ## else: assert_config(lexer, ('standard', '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 standard 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)) assert self.options.ambiguity not in ('resolve__antiscore_sum', ), 'resolve__antiscore_sum has been replaced with the option priority="invert"' 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.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 ## ## ## elif self.options.priority is None: for rule in self.rules: if rule.options.priority is not None: rule.options.priority = None ## 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 ) 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) with FS.open(cache_fn, 'wb') as f: f.write(cache_md5.encode('utf8') + b'\n') pickle.dump(used_files, f) self.save(f) if __doc__: __doc__ += "\n\n" + LarkOptions.OPTIONS_DOC __serialize_fields__ = 'parser', 'rules', 'options' def _build_lexer(self, dont_ignore=False): lexer_conf = self.lexer_conf if dont_ignore: from copy import copy lexer_conf = copy(lexer_conf) lexer_conf.ignore = () return TraditionalLexer(lexer_conf) def _prepare_callbacks(self): 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): self._prepare_callbacks() parser_class = get_frontend(self.options.parser, self.options.lexer) parser_conf = ParserConf(self.rules, self._callbacks, self.options.start) return parser_class(self.lexer_conf, parser_conf, options=self.options) def save(self, f): #-- data, m = self.memo_serialize([TerminalDef, Rule]) pickle.dump({'data': data, 'memo': m}, f, protocol=pickle.HIGHEST_PROTOCOL) @classmethod def load(cls, f): #-- inst = cls.__new__(cls) return inst._load(f) def _deserialize_lexer_conf(self, data, memo, options): 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, f, **kwargs): if isinstance(f, dict): d = f else: d = pickle.load(f) memo = d['memo'] data = d['data'] assert memo memo = SerializeMemoizer.deserialize(memo, {'Rule': Rule, 'TerminalDef': TerminalDef}, {}) 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>' parser_class = get_frontend(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 = parser_class.deserialize( 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, grammar_filename, rel_to=None, **options): #-- 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, package, grammar_path, search_paths=("",), **options): #-- package = FromPackageLoader(package, search_paths) full_path, text = package(None, grammar_path) options.setdefault('source_path', full_path) options.setdefault('import_paths', []) options['import_paths'].append(package) 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, dont_ignore=False): #-- if not hasattr(self, 'lexer') or dont_ignore: lexer = self._build_lexer(dont_ignore) else: lexer = self.lexer lexer_thread = LexerThread(lexer, text) stream = lexer_thread.lex(None) if self.options.postlex: return self.options.postlex.process(stream) return stream def get_terminal(self, name): #-- return self._terminals_dict[name] def parse_interactive(self, text=None, start=None): return self.parser.parse_interactive(text, start=start) def parse(self, text, start=None, on_error=None): #-- return self.parser.parse(text, start=start, on_error=on_error) @property def source(self): warn("Lark.source attribute has been renamed to Lark.source_path", DeprecationWarning) return self.source_path @source.setter def source(self, value): self.source_path = value @property def grammar_source(self): warn("Lark.grammar_source attribute has been renamed to Lark.source_grammar", DeprecationWarning) return self.source_grammar @grammar_source.setter def grammar_source(self, value): self.source_grammar = value
Ancestors
Static methods
def load(f)
-
Expand source code
@classmethod def load(cls, f): #-- inst = cls.__new__(cls) return inst._load(f)
def open(grammar_filename, rel_to=None, **options)
-
Expand source code
@classmethod def open(cls, grammar_filename, rel_to=None, **options): #-- 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)
def open_from_package(package, grammar_path, search_paths=('',), **options)
-
Expand source code
@classmethod def open_from_package(cls, package, grammar_path, search_paths=("",), **options): #-- package = FromPackageLoader(package, search_paths) full_path, text = package(None, grammar_path) options.setdefault('source_path', full_path) options.setdefault('import_paths', []) options['import_paths'].append(package) return cls(text, **options)
Instance variables
var grammar_source
-
Expand source code
@property def grammar_source(self): warn("Lark.grammar_source attribute has been renamed to Lark.source_grammar", DeprecationWarning) return self.source_grammar
var source
-
Expand source code
@property def source(self): warn("Lark.source attribute has been renamed to Lark.source_path", DeprecationWarning) return self.source_path
Methods
def get_terminal(self, name)
-
Expand source code
def get_terminal(self, name): #-- return self._terminals_dict[name]
def lex(self, text, dont_ignore=False)
-
Expand source code
def lex(self, text, dont_ignore=False): #-- if not hasattr(self, 'lexer') or dont_ignore: lexer = self._build_lexer(dont_ignore) else: lexer = self.lexer lexer_thread = LexerThread(lexer, text) stream = lexer_thread.lex(None) if self.options.postlex: return self.options.postlex.process(stream) return stream
def parse(self, text, start=None, on_error=None)
-
Expand source code
def parse(self, text, start=None, on_error=None): #-- return self.parser.parse(text, start=start, on_error=on_error)
def parse_interactive(self, text=None, start=None)
-
Expand source code
def parse_interactive(self, text=None, start=None): return self.parser.parse_interactive(text, start=start)
def save(self, f)
-
Expand source code
def save(self, f): #-- data, m = self.memo_serialize([TerminalDef, Rule]) pickle.dump({'data': data, 'memo': m}, f, protocol=pickle.HIGHEST_PROTOCOL)
class LarkError (*args, **kwargs)
-
Common base class for all non-exit exceptions.
Expand source code
class LarkError(Exception): pass
Ancestors
- builtins.Exception
- builtins.BaseException
Subclasses
class LarkOptions (options_dict)
-
Expand source code
class LarkOptions(Serialize): #-- OPTIONS_DOC = """ **=== 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. transformer Applies the transformer to every parse tree (equivalent to applying it after the parse, but faster) propagate_positions Propagates (line, column, end_line, end_column) attributes into all tree branches. maybe_placeholders When True, the ``[]`` operator returns ``None`` when not matched. When ``False``, ``[]`` behaves like the ``?`` operator, and returns no value at all. (default= ``False``. Recommended to set to ``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 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 - "standard": Use a standard 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 standard 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`` (Python 3 only). 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 Options ===** """ if __doc__: __doc__ += OPTIONS_DOC ## ## ## ## ## ## ## ## _defaults = { 'debug': False, 'keep_all_tokens': False, 'tree_class': None, 'cache': False, 'postlex': None, 'parser': 'earley', 'lexer': 'auto', 'transformer': None, 'start': 'start', 'priority': 'auto', 'ambiguity': 'auto', 'regex': False, 'propagate_positions': False, 'lexer_callbacks': {}, 'maybe_placeholders': False, 'edit_terminals': None, 'g_regex_flags': 0, 'use_bytes': False, 'import_paths': [], 'source_path': None, } def __init__(self, options_dict): 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'): value = bool(value) else: value = default options[name] = value if isinstance(options['start'], STRING_TYPE): 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 o: raise ConfigurationError("Unknown options: %s" % o.keys()) def __getattr__(self, name): try: return self.__dict__['options'][name] except KeyError as e: raise AttributeError(e) def __setattr__(self, name, value): assert_config(name, self.options.keys(), "%r isn't a valid option. Expected one of: %s") self.options[name] = value def serialize(self, memo): return self.options @classmethod def deserialize(cls, data, memo): return cls(data)
Ancestors
Class variables
var OPTIONS_DOC
Static methods
def deserialize(data, memo)
-
Expand source code
@classmethod def deserialize(cls, data, memo): return cls(data)
Methods
def serialize(self, memo)
-
Expand source code
def serialize(self, memo): return self.options
class LexError (*args, **kwargs)
-
Common base class for all non-exit exceptions.
Expand source code
class LexError(LarkError): pass
Ancestors
- LarkError
- builtins.Exception
- builtins.BaseException
Subclasses
class Lexer
-
Expand source code
class Lexer(object): #-- lex = NotImplemented def make_lexer_state(self, text): line_ctr = LineCounter(b'\n' if isinstance(text, bytes) else '\n') return LexerState(text, line_ctr)
Subclasses
Class variables
var lex
Methods
def make_lexer_state(self, text)
-
Expand source code
def make_lexer_state(self, text): line_ctr = LineCounter(b'\n' if isinstance(text, bytes) else '\n') return LexerState(text, line_ctr)
class LexerConf (terminals, re_module, ignore=(), postlex=None, callbacks=None, g_regex_flags=0, skip_validation=False, use_bytes=False)
-
Expand source code
class LexerConf(Serialize): __serialize_fields__ = 'terminals', 'ignore', 'g_regex_flags', 'use_bytes', 'lexer_type' __serialize_namespace__ = TerminalDef, def __init__(self, terminals, re_module, ignore=(), postlex=None, callbacks=None, g_regex_flags=0, skip_validation=False, use_bytes=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.lexer_type = None @property def tokens(self): warn("LexerConf.tokens is deprecated. Use LexerConf.terminals instead", DeprecationWarning) return self.terminals def _deserialize(self): self.terminals_by_name = {t.name: t for t in self.terminals}
Ancestors
Instance variables
var tokens
-
Expand source code
@property def tokens(self): warn("LexerConf.tokens is deprecated. Use LexerConf.terminals instead", DeprecationWarning) return self.terminals
class LexerState (text, line_ctr, last_token=None)
-
Expand source code
class LexerState(object): __slots__ = 'text', 'line_ctr', 'last_token' def __init__(self, text, line_ctr, last_token=None): self.text = text self.line_ctr = line_ctr self.last_token = last_token def __eq__(self, other): if not isinstance(other, LexerState): return NotImplemented return self.text is 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)
Instance variables
var last_token
-
Return an attribute of instance, which is of type owner.
var line_ctr
-
Return an attribute of instance, which is of type owner.
var text
-
Return an attribute of instance, which is of type owner.
class LexerThread (lexer, text)
-
Expand source code
class LexerThread(object): #-- def __init__(self, lexer, text): self.lexer = lexer self.state = lexer.make_lexer_state(text) def lex(self, parser_state): return self.lexer.lex(self.state, parser_state) def __copy__(self): copied = object.__new__(LexerThread) copied.lexer = self.lexer copied.state = copy(self.state) return copied
Methods
def lex(self, parser_state)
-
Expand source code
def lex(self, parser_state): return self.lexer.lex(self.state, parser_state)
class LineCounter (newline_char)
-
Expand source code
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, 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
Instance variables
var char_pos
-
Return an attribute of instance, which is of type owner.
var column
-
Return an attribute of instance, which is of type owner.
var line
-
Return an attribute of instance, which is of type owner.
var line_start_pos
-
Return an attribute of instance, which is of type owner.
var newline_char
-
Return an attribute of instance, which is of type owner.
Methods
def feed(self, token, test_newline=True)
-
Expand source code
def feed(self, token, 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 MakeParsingFrontend (parser_type, lexer_type)
-
Expand source code
class MakeParsingFrontend: def __init__(self, parser_type, lexer_type): self.parser_type = parser_type self.lexer_type = lexer_type def __call__(self, lexer_conf, parser_conf, options): assert isinstance(lexer_conf, LexerConf) assert isinstance(parser_conf, ParserConf) parser_conf.parser_type = self.parser_type lexer_conf.lexer_type = self.lexer_type return ParsingFrontend(lexer_conf, parser_conf, options) @classmethod def deserialize(cls, data, memo, lexer_conf, callbacks, options): parser_conf = ParserConf.deserialize(data['parser_conf'], memo) parser = LALR_Parser.deserialize(data['parser'], memo, callbacks, options.debug) parser_conf.callbacks = callbacks return ParsingFrontend(lexer_conf, parser_conf, options, parser=parser)
Static methods
def deserialize(data, memo, lexer_conf, callbacks, options)
-
Expand source code
@classmethod def deserialize(cls, data, memo, lexer_conf, callbacks, options): parser_conf = ParserConf.deserialize(data['parser_conf'], memo) parser = LALR_Parser.deserialize(data['parser'], memo, callbacks, options.debug) parser_conf.callbacks = callbacks return ParsingFrontend(lexer_conf, parser_conf, options, parser=parser)
class Meta
-
Expand source code
class Meta: def __init__(self): self.empty = True
class NonTerminal (name)
-
Expand source code
class NonTerminal(Symbol): __serialize_fields__ = 'name', is_term = False
Ancestors
Class variables
var is_term
Inherited members
class ParseConf (parse_table, callbacks, start)
-
Expand source code
class ParseConf(object): __slots__ = 'parse_table', 'callbacks', 'start', 'start_state', 'end_state', 'states' def __init__(self, parse_table, callbacks, start): 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
Instance variables
var callbacks
-
Return an attribute of instance, which is of type owner.
var end_state
-
Return an attribute of instance, which is of type owner.
var parse_table
-
Return an attribute of instance, which is of type owner.
var start
-
Return an attribute of instance, which is of type owner.
var start_state
-
Return an attribute of instance, which is of type owner.
var states
-
Return an attribute of instance, which is of type owner.
class ParseError (*args, **kwargs)
-
Common base class for all non-exit exceptions.
Expand source code
class ParseError(LarkError): pass
Ancestors
- LarkError
- builtins.Exception
- builtins.BaseException
Subclasses
class ParseTable (states, start_states, end_states)
-
Expand source code
class ParseTable: 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() rules = 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'])
Subclasses
Static methods
def deserialize(data, memo)
-
Expand source code
@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'])
Methods
def serialize(self, memo)
-
Expand source code
def serialize(self, memo): tokens = Enumerator() rules = 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, }
class ParseTreeBuilder (rules, tree_class, propagate_positions=False, ambiguous=False, maybe_placeholders=False)
-
Expand source code
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): 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), self.propagate_positions and PropagatePositions, 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 = {} 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) else: if isinstance(transformer, InlineTransformer): f = ptb_inline_args(f) elif isinstance(transformer, Transformer_InPlace): f = inplace_transformer(f) except AttributeError: f = partial(self.tree_class, 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
Methods
def create_callback(self, transformer=None)
-
Expand source code
def create_callback(self, transformer=None): callbacks = {} 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) else: if isinstance(transformer, InlineTransformer): f = ptb_inline_args(f) elif isinstance(transformer, Transformer_InPlace): f = inplace_transformer(f) except AttributeError: f = partial(self.tree_class, 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 ParserConf (rules, callbacks, start)
-
Expand source code
class ParserConf(Serialize): __serialize_fields__ = 'rules', 'start', 'parser_type' def __init__(self, rules, callbacks, start): assert isinstance(start, list) self.rules = rules self.callbacks = callbacks self.start = start self.parser_type = None
Ancestors
class ParserState (parse_conf, lexer, state_stack=None, value_stack=None)
-
Expand source code
class ParserState(object): __slots__ = 'parse_conf', 'lexer', 'state_stack', 'value_stack' def __init__(self, parse_conf, lexer, 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): return self.state_stack[-1] ## def __eq__(self, other): 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 type(self)( self.parse_conf, self.lexer, ## copy(self.state_stack), deepcopy(self.value_stack), ) def copy(self): return copy(self) def feed_token(self, token, is_end=False): 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) _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]
Instance variables
var lexer
-
Return an attribute of instance, which is of type owner.
var parse_conf
-
Return an attribute of instance, which is of type owner.
var position
-
Expand source code
@property def position(self): return self.state_stack[-1]
var state_stack
-
Return an attribute of instance, which is of type owner.
var value_stack
-
Return an attribute of instance, which is of type owner.
Methods
def copy(self)
-
Expand source code
def copy(self): return copy(self)
def feed_token(self, token, is_end=False)
-
Expand source code
def feed_token(self, token, is_end=False): 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) _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 ParsingFrontend (lexer_conf, parser_conf, options, parser=None)
-
Expand source code
class ParsingFrontend(Serialize): __serialize_fields__ = 'lexer_conf', 'parser_conf', 'parser', 'options' def __init__(self, lexer_conf, parser_conf, options, parser=None): self.parser_conf = parser_conf self.lexer_conf = lexer_conf self.options = options ## if parser: ## self.parser = parser else: create_parser = { 'lalr': create_lalr_parser, 'earley': create_earley_parser, 'cyk': CYK_FrontEnd, }[parser_conf.parser_type] self.parser = create_parser(lexer_conf, parser_conf, options) ## lexer_type = 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 try: create_lexer = { 'standard': create_traditional_lexer, 'contextual': create_contextual_lexer, }[lexer_type] except KeyError: assert issubclass(lexer_type, Lexer), lexer_type self.lexer = _wrap_lexer(lexer_type)(lexer_conf) else: self.lexer = create_lexer(lexer_conf, self.parser, lexer_conf.postlex) if lexer_conf.postlex: self.lexer = PostLexConnector(self.lexer, lexer_conf.postlex) def _verify_start(self, start=None): if start is None: start = self.parser_conf.start if len(start) > 1: raise ConfigurationError("Lark initialized with more than 1 possible start rule. Must specify which start rule to parse", start) start ,= start 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 parse(self, text, start=None, on_error=None): start = self._verify_start(start) stream = text if self.skip_lexer else LexerThread(self.lexer, text) kw = {} if on_error is None else {'on_error': on_error} return self.parser.parse(stream, start, **kw) def parse_interactive(self, text=None, start=None): start = self._verify_start(start) if self.parser_conf.parser_type != 'lalr': raise ConfigurationError("parse_interactive() currently only works with parser='lalr' ") stream = text if self.skip_lexer else LexerThread(self.lexer, text) return self.parser.parse_interactive(stream, start)
Ancestors
Methods
def parse(self, text, start=None, on_error=None)
-
Expand source code
def parse(self, text, start=None, on_error=None): start = self._verify_start(start) stream = text if self.skip_lexer else LexerThread(self.lexer, text) kw = {} if on_error is None else {'on_error': on_error} return self.parser.parse(stream, start, **kw)
def parse_interactive(self, text=None, start=None)
-
Expand source code
def parse_interactive(self, text=None, start=None): start = self._verify_start(start) if self.parser_conf.parser_type != 'lalr': raise ConfigurationError("parse_interactive() currently only works with parser='lalr' ") stream = text if self.skip_lexer else LexerThread(self.lexer, text) return self.parser.parse_interactive(stream, start)
class Pattern (value, flags=(), raw=None)
-
Expand source code
class Pattern(Serialize): raw = None type = None def __init__(self, value, flags=(), raw=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 def to_regexp(self): raise NotImplementedError() def min_width(self): raise NotImplementedError() def max_width(self): raise NotImplementedError() if Py36: ## def _get_flags(self, value): for f in self.flags: value = ('(?%s:%s)' % (f, value)) return value else: def _get_flags(self, value): for f in self.flags: value = ('(?%s)' % f) + value return value
Ancestors
Subclasses
Class variables
var raw
var type
Methods
def max_width(self)
-
Expand source code
def max_width(self): raise NotImplementedError()
def min_width(self)
-
Expand source code
def min_width(self): raise NotImplementedError()
def to_regexp(self)
-
Expand source code
def to_regexp(self): raise NotImplementedError()
class PatternRE (value, flags=(), raw=None)
-
Expand source code
class PatternRE(Pattern): __serialize_fields__ = 'value', 'flags', '_width' type = "re" def to_regexp(self): 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): return self._get_width()[0] @property def max_width(self): return self._get_width()[1]
Ancestors
Class variables
var type
Instance variables
var max_width
-
Expand source code
@property def max_width(self): return self._get_width()[1]
var min_width
-
Expand source code
@property def min_width(self): return self._get_width()[0]
Methods
def to_regexp(self)
-
Expand source code
def to_regexp(self): return self._get_flags(self.value)
class PatternStr (value, flags=(), raw=None)
-
Expand source code
class PatternStr(Pattern): __serialize_fields__ = 'value', 'flags' type = "str" def to_regexp(self): return self._get_flags(re.escape(self.value)) @property def min_width(self): return len(self.value) max_width = min_width
Ancestors
Class variables
var type
Instance variables
var max_width
-
Expand source code
@property def min_width(self): return len(self.value)
var min_width
-
Expand source code
@property def min_width(self): return len(self.value)
Methods
def to_regexp(self)
-
Expand source code
def to_regexp(self): return self._get_flags(re.escape(self.value))
class PostLex
-
Helper class that provides a standard way to create an ABC using inheritance.
Expand source code
class PostLex(ABC): @abstractmethod def process(self, stream): return stream always_accept = ()
Ancestors
- abc.ABC
Subclasses
Class variables
var always_accept
Methods
def process(self, stream)
-
Expand source code
@abstractmethod def process(self, stream): return stream
class PostLexConnector (lexer, postlexer)
-
Expand source code
class PostLexConnector: def __init__(self, lexer, postlexer): self.lexer = lexer self.postlexer = postlexer def make_lexer_state(self, text): return self.lexer.make_lexer_state(text) def lex(self, lexer_state, parser_state): i = self.lexer.lex(lexer_state, parser_state) return self.postlexer.process(i)
Methods
def lex(self, lexer_state, parser_state)
-
Expand source code
def lex(self, lexer_state, parser_state): i = self.lexer.lex(lexer_state, parser_state) return self.postlexer.process(i)
def make_lexer_state(self, text)
-
Expand source code
def make_lexer_state(self, text): return self.lexer.make_lexer_state(text)
class PropagatePositions (node_builder)
-
Expand source code
class PropagatePositions: def __init__(self, node_builder): self.node_builder = node_builder def __call__(self, children): res = self.node_builder(children) ## if isinstance(res, Tree): res_meta = res.meta for c in children: if isinstance(c, Tree): child_meta = c.meta if not child_meta.empty: res_meta.line = child_meta.line res_meta.column = child_meta.column res_meta.start_pos = child_meta.start_pos res_meta.empty = False break elif isinstance(c, Token): res_meta.line = c.line res_meta.column = c.column res_meta.start_pos = c.pos_in_stream res_meta.empty = False break for c in reversed(children): if isinstance(c, Tree): child_meta = c.meta if not child_meta.empty: res_meta.end_line = child_meta.end_line res_meta.end_column = child_meta.end_column res_meta.end_pos = child_meta.end_pos res_meta.empty = False break elif isinstance(c, Token): res_meta.end_line = c.end_line res_meta.end_column = c.end_column res_meta.end_pos = c.end_pos res_meta.empty = False break return res
class Rule (origin, expansion, order=0, alias=None, options=None)
-
Expand source code
class Rule(Serialize): #-- __slots__ = ('origin', 'expansion', 'alias', 'options', 'order', '_hash') __serialize_fields__ = 'origin', 'expansion', 'order', 'alias', 'options' __serialize_namespace__ = Terminal, NonTerminal, RuleOptions def __init__(self, origin, expansion, order=0, alias=None, options=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
Ancestors
Instance variables
var alias
-
Return an attribute of instance, which is of type owner.
var expansion
-
Return an attribute of instance, which is of type owner.
var options
-
Return an attribute of instance, which is of type owner.
var order
-
Return an attribute of instance, which is of type owner.
var origin
-
Return an attribute of instance, which is of type owner.
class RuleOptions (keep_all_tokens=False, expand1=False, priority=None, template_source=None, empty_indices=())
-
Expand source code
class RuleOptions(Serialize): __serialize_fields__ = 'keep_all_tokens', 'expand1', 'priority', 'template_source', 'empty_indices' def __init__(self, keep_all_tokens=False, expand1=False, priority=None, template_source=None, empty_indices=()): 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 )
Ancestors
class Serialize
-
Expand source code
class Serialize(object): #-- def memo_serialize(self, types_to_memoize): memo = SerializeMemoizer(types_to_memoize) return self.serialize(memo), memo.serialize() def serialize(self, memo=None): 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__ postprocess = getattr(self, '_serialize', None) if postprocess: postprocess(res, memo) return res @classmethod def deserialize(cls, data, memo): 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) postprocess = getattr(inst, '_deserialize', None) if postprocess: postprocess() return inst
Subclasses
- LALR_Parser
- Lark
- LarkOptions
- LexerConf
- ParserConf
- ParsingFrontend
- Pattern
- Rule
- RuleOptions
- SerializeMemoizer
- Symbol
- TerminalDef
Static methods
def deserialize(data, memo)
-
Expand source code
@classmethod def deserialize(cls, data, memo): 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) postprocess = getattr(inst, '_deserialize', None) if postprocess: postprocess() return inst
Methods
def memo_serialize(self, types_to_memoize)
-
Expand source code
def memo_serialize(self, types_to_memoize): memo = SerializeMemoizer(types_to_memoize) return self.serialize(memo), memo.serialize()
def serialize(self, memo=None)
-
Expand source code
def serialize(self, memo=None): 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__ postprocess = getattr(self, '_serialize', None) if postprocess: postprocess(res, memo) return res
class SerializeMemoizer (types_to_memoize)
-
Expand source code
class SerializeMemoizer(Serialize): #-- __serialize_fields__ = 'memoized', def __init__(self, types_to_memoize): self.types_to_memoize = tuple(types_to_memoize) self.memoized = Enumerator() def in_types(self, value): return isinstance(value, self.types_to_memoize) def serialize(self): return _serialize(self.memoized.reversed(), None) @classmethod def deserialize(cls, data, namespace, memo): return _deserialize(data, namespace, memo)
Ancestors
Static methods
def deserialize(data, namespace, memo)
-
Expand source code
@classmethod def deserialize(cls, data, namespace, memo): return _deserialize(data, namespace, memo)
Methods
def in_types(self, value)
-
Expand source code
def in_types(self, value): return isinstance(value, self.types_to_memoize)
def serialize(self)
-
Expand source code
def serialize(self): return _serialize(self.memoized.reversed(), None)
class Symbol (name)
-
Expand source code
class Symbol(Serialize): __slots__ = ('name',) is_term = NotImplemented def __init__(self, name): self.name = name def __eq__(self, other): assert isinstance(other, Symbol), other 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__)
Ancestors
Subclasses
Class variables
var is_term
Instance variables
var fullrepr
-
Return repr(self).
Expand source code
def __repr__(self): return '%s(%r)' % (type(self).__name__, self.name)
var name
-
Return an attribute of instance, which is of type owner.
class Terminal (name, filter_out=False)
-
Expand source code
class Terminal(Symbol): __serialize_fields__ = 'name', 'filter_out' is_term = True def __init__(self, name, filter_out=False): self.name = name self.filter_out = filter_out @property def fullrepr(self): return '%s(%r, %r)' % (type(self).__name__, self.name, self.filter_out)
Ancestors
Class variables
var is_term
Inherited members
class TerminalDef (name, pattern, priority=1)
-
Expand source code
class TerminalDef(Serialize): __serialize_fields__ = 'name', 'pattern', 'priority' __serialize_namespace__ = PatternStr, PatternRE def __init__(self, name, pattern, priority=1): 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): if self.name.startswith('__'): ## return self.pattern.raw or self.name else: return self.name
Ancestors
Methods
def user_repr(self)
-
Expand source code
def user_repr(self): if self.name.startswith('__'): ## return self.pattern.raw or self.name else: return self.name
class Token (type_, value, pos_in_stream=None, line=None, column=None, end_line=None, end_column=None, end_pos=None)
-
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str
Create a new string object from the given object. If encoding or errors is specified, then the object must expose a data buffer that will be decoded using the given encoding and error handler. Otherwise, returns the result of object.str() (if defined) or repr(object). encoding defaults to sys.getdefaultencoding(). errors defaults to 'strict'.
Expand source code
class Token(Str): #-- __slots__ = ('type', 'pos_in_stream', 'value', 'line', 'column', 'end_line', 'end_column', 'end_pos') def __new__(cls, type_, value, pos_in_stream=None, line=None, column=None, end_line=None, end_column=None, end_pos=None): try: self = super(Token, cls).__new__(cls, value) except UnicodeDecodeError: value = value.decode('latin1') self = super(Token, cls).__new__(cls, value) self.type = type_ self.pos_in_stream = pos_in_stream self.value = value self.line = line self.column = column self.end_line = end_line self.end_column = end_column self.end_pos = end_pos return self def update(self, type_=None, value=None): 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_, value, borrow_t): return cls(type_, value, borrow_t.pos_in_stream, 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.pos_in_stream, 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.pos_in_stream, 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__
Ancestors
- builtins.str
Static methods
def new_borrow_pos(type_, value, borrow_t)
-
Expand source code
@classmethod def new_borrow_pos(cls, type_, value, borrow_t): return cls(type_, value, borrow_t.pos_in_stream, borrow_t.line, borrow_t.column, borrow_t.end_line, borrow_t.end_column, borrow_t.end_pos)
Instance variables
var column
-
Return an attribute of instance, which is of type owner.
var end_column
-
Return an attribute of instance, which is of type owner.
var end_line
-
Return an attribute of instance, which is of type owner.
var end_pos
-
Return an attribute of instance, which is of type owner.
var line
-
Return an attribute of instance, which is of type owner.
var pos_in_stream
-
Return an attribute of instance, which is of type owner.
var type
-
Return an attribute of instance, which is of type owner.
var value
-
Return an attribute of instance, which is of type owner.
Methods
def update(self, type_=None, value=None)
-
Expand source code
def update(self, type_=None, value=None): return Token.new_borrow_pos( type_ if type_ is not None else self.type, value if value is not None else self.value, self )
class TraditionalLexer (conf)
-
Expand source code
class TraditionalLexer(Lexer): def __init__(self, conf): terminals = list(conf.terminals) assert all(isinstance(t, TerminalDef) for t in terminals), terminals self.re = conf.re_module if not conf.skip_validation: ## for t in terminals: try: self.re.compile(t.pattern.to_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 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})) ## 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._mres = None def _build(self): 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 self._mres = build_mres(terminals, self.g_regex_flags, self.re, self.use_bytes) @property def mres(self): if self._mres is None: self._build() return self._mres def match(self, text, pos): for mre, type_from_index in self.mres: m = mre.match(text, pos) if m: return m.group(0), type_from_index[m.lastindex] def lex(self, state, parser_state): with suppress(EOFError): while True: yield self.next_token(state, parser_state) def next_token(self, lex_state, parser_state=None): line_ctr = lex_state.line_ctr while line_ctr.char_pos < len(lex_state.text): res = self.match(lex_state.text, line_ctr.char_pos) if not res: allowed = {v for m, tfi in self.mres for v in tfi.values()} - self.ignore_types if not allowed: allowed = {"<END-OF-FILE>"} raise UnexpectedCharacters(lex_state.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 if type_ not in self.ignore_types: t = Token(type_, value, line_ctr.char_pos, line_ctr.line, line_ctr.column) line_ctr.feed(value, type_ in self.newline_types) 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 isinstance(t, Token): raise LexError("Callbacks must return a token (returned %r)" % t) lex_state.last_token = t return t else: if type_ in self.callback: t2 = Token(type_, value, line_ctr.char_pos, line_ctr.line, line_ctr.column) self.callback[type_](t2) line_ctr.feed(value, type_ in self.newline_types) ## raise EOFError(self)
Ancestors
Instance variables
var mres
-
Expand source code
@property def mres(self): if self._mres is None: self._build() return self._mres
Methods
def lex(self, state, parser_state)
-
Expand source code
def lex(self, state, parser_state): with suppress(EOFError): while True: yield self.next_token(state, parser_state)
def match(self, text, pos)
-
Expand source code
def match(self, text, pos): for mre, type_from_index in self.mres: m = mre.match(text, pos) if m: return m.group(0), type_from_index[m.lastindex]
def next_token(self, lex_state, parser_state=None)
-
Expand source code
def next_token(self, lex_state, parser_state=None): line_ctr = lex_state.line_ctr while line_ctr.char_pos < len(lex_state.text): res = self.match(lex_state.text, line_ctr.char_pos) if not res: allowed = {v for m, tfi in self.mres for v in tfi.values()} - self.ignore_types if not allowed: allowed = {"<END-OF-FILE>"} raise UnexpectedCharacters(lex_state.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 if type_ not in self.ignore_types: t = Token(type_, value, line_ctr.char_pos, line_ctr.line, line_ctr.column) line_ctr.feed(value, type_ in self.newline_types) 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 isinstance(t, Token): raise LexError("Callbacks must return a token (returned %r)" % t) lex_state.last_token = t return t else: if type_ in self.callback: t2 = Token(type_, value, line_ctr.char_pos, line_ctr.line, line_ctr.column) self.callback[type_](t2) line_ctr.feed(value, type_ in self.newline_types) ## raise EOFError(self)
class Transformer (visit_tokens=True)
-
Expand source code
class Transformer(_Decoratable): #-- __visit_tokens__ = True ## def __init__(self, visit_tokens=True): 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, Discard): 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, Discard): raise except Exception as e: raise VisitError(token.type, token, e) def _transform_children(self, children): for c in children: try: if isinstance(c, Tree): yield self._transform_tree(c) elif self.__visit_tokens__ and isinstance(c, Token): yield self._call_userfunc_token(c) else: yield c except Discard: pass def _transform_tree(self, tree): children = list(self._transform_children(tree.children)) return self._call_userfunc(tree, children) def transform(self, tree): #-- return self._transform_tree(tree) def __mul__(self, other): #-- return TransformerChain(self, other) def __default__(self, data, children, meta): #-- return Tree(data, children, meta) def __default_token__(self, token): #-- return token
Ancestors
- runflow.hcl2_parser._Decoratable
Subclasses
Methods
def transform(self, tree)
-
Expand source code
def transform(self, tree): #-- return self._transform_tree(tree)
class TransformerChain (*transformers)
-
Expand source code
class TransformerChain(object): def __init__(self, *transformers): self.transformers = transformers def transform(self, tree): for t in self.transformers: tree = t.transform(tree) return tree def __mul__(self, other): return TransformerChain(*self.transformers + (other,))
Methods
def transform(self, tree)
-
Expand source code
def transform(self, tree): for t in self.transformers: tree = t.transform(tree) return tree
class Transformer_InPlace (visit_tokens=True)
-
Expand source code
class Transformer_InPlace(Transformer): #-- def _transform_tree(self, tree): ## return self._call_userfunc(tree) def transform(self, tree): for subtree in tree.iter_subtrees(): subtree.children = list(self._transform_children(subtree.children)) return self._transform_tree(tree)
Ancestors
- Transformer
- runflow.hcl2_parser._Decoratable
Methods
def transform(self, tree)
-
Expand source code
def transform(self, tree): for subtree in tree.iter_subtrees(): subtree.children = list(self._transform_children(subtree.children)) return self._transform_tree(tree)
class Transformer_InPlaceRecursive (visit_tokens=True)
-
Expand source code
class Transformer_InPlaceRecursive(Transformer): #-- def _transform_tree(self, tree): tree.children = list(self._transform_children(tree.children)) return self._call_userfunc(tree)
Ancestors
- Transformer
- runflow.hcl2_parser._Decoratable
class Transformer_NonRecursive (visit_tokens=True)
-
Expand source code
class Transformer_NonRecursive(Transformer): #-- def transform(self, tree): ## rev_postfix = [] q = [tree] while q: t = q.pop() rev_postfix.append(t) if isinstance(t, Tree): q += t.children ## stack = [] for x in reversed(rev_postfix): if isinstance(x, Tree): size = len(x.children) if size: args = stack[-size:] del stack[-size:] else: args = [] stack.append(self._call_userfunc(x, args)) elif self.__visit_tokens__ and isinstance(x, Token): stack.append(self._call_userfunc_token(x)) else: stack.append(x) t ,= stack ## return t
Ancestors
- Transformer
- runflow.hcl2_parser._Decoratable
Methods
def transform(self, tree)
-
Expand source code
def transform(self, tree): ## rev_postfix = [] q = [tree] while q: t = q.pop() rev_postfix.append(t) if isinstance(t, Tree): q += t.children ## stack = [] for x in reversed(rev_postfix): if isinstance(x, Tree): size = len(x.children) if size: args = stack[-size:] del stack[-size:] else: args = [] stack.append(self._call_userfunc(x, args)) elif self.__visit_tokens__ and isinstance(x, Token): stack.append(self._call_userfunc_token(x)) else: stack.append(x) t ,= stack ## return t
class Tree (data, children, meta=None)
-
Expand source code
class Tree(object): #-- def __init__(self, data, children, meta=None): self.data = data self.children = children self._meta = meta @property def meta(self): if self._meta is None: self._meta = Meta() return self._meta def __repr__(self): return 'Tree(%r, %r)' % (self.data, self.children) def _pretty_label(self): return self.data def _pretty(self, level, indent_str): if len(self.children) == 1 and not isinstance(self.children[0], Tree): return [indent_str*level, self._pretty_label(), '\t', '%s' % (self.children[0],), '\n'] l = [indent_str*level, self._pretty_label(), '\n'] for n in self.children: if isinstance(n, Tree): l += n._pretty(level+1, indent_str) else: l += [indent_str*(level+1), '%s' % (n,), '\n'] return l def pretty(self, indent_str=' '): #-- return ''.join(self._pretty(0, indent_str)) 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): return hash((self.data, tuple(self.children))) def iter_subtrees(self): #-- queue = [self] subtrees = OrderedDict() 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 find_pred(self, pred): #-- return filter(pred, self.iter_subtrees()) def find_data(self, data): #-- return self.find_pred(lambda t: t.data == data)
Instance variables
var meta
-
Expand source code
@property def meta(self): if self._meta is None: self._meta = Meta() return self._meta
Methods
def find_data(self, data)
-
Expand source code
def find_data(self, data): #-- return self.find_pred(lambda t: t.data == data)
def find_pred(self, pred)
-
Expand source code
def find_pred(self, pred): #-- return filter(pred, self.iter_subtrees())
def iter_subtrees(self)
-
Expand source code
def iter_subtrees(self): #-- queue = [self] subtrees = OrderedDict() 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 pretty(self, indent_str=' ')
-
Expand source code
def pretty(self, indent_str=' '): #-- return ''.join(self._pretty(0, indent_str))
class UnexpectedCharacters (seq, lex_pos, line, column, allowed=None, considered_tokens=None, state=None, token_history=None, terminals_by_name=None, considered_rules=None)
-
Common base class for all non-exit exceptions.
Expand source code
class UnexpectedCharacters(LexError, UnexpectedInput): 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): ## 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) super(UnexpectedCharacters, self).__init__() 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
Ancestors
- LexError
- UnexpectedInput
- LarkError
- builtins.Exception
- builtins.BaseException
class UnexpectedEOF (expected, state=None, terminals_by_name=None)
-
Common base class for all non-exit exceptions.
Expand source code
class UnexpectedEOF(ParseError, UnexpectedInput): def __init__(self, expected, state=None, terminals_by_name=None): 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 super(UnexpectedEOF, self).__init__() def __str__(self): message = "Unexpected end-of-input. " message += self._format_expected(self.expected) return message
Ancestors
- ParseError
- UnexpectedInput
- LarkError
- builtins.Exception
- builtins.BaseException
class UnexpectedInput (*args, **kwargs)
-
Common base class for all non-exit exceptions.
Expand source code
class UnexpectedInput(LarkError): #-- pos_in_stream = None _terminals_by_name = None def get_context(self, text, span=40): #-- assert self.pos_in_stream is not None, self pos = self.pos_in_stream 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, examples, token_type_match_fallback=False, use_accepts=False): #-- assert self.state is not None, "Not supported for this exception" if isinstance(examples, dict): examples = examples.items() candidate = (None, False) for i, (label, example) in enumerate(examples): assert not isinstance(example, STRING_TYPE) for j, malformed in enumerate(example): try: parse_fn(malformed) except UnexpectedInput as ut: if ut.state == self.state: if use_accepts and hasattr(self, 'accepts') 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 try: 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 except AttributeError: pass 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)
Ancestors
- LarkError
- builtins.Exception
- builtins.BaseException
Subclasses
Class variables
var pos_in_stream
Methods
def get_context(self, text, span=40)
-
Expand source code
def get_context(self, text, span=40): #-- assert self.pos_in_stream is not None, self pos = self.pos_in_stream 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, examples, token_type_match_fallback=False, use_accepts=False)
-
Expand source code
def match_examples(self, parse_fn, examples, token_type_match_fallback=False, use_accepts=False): #-- assert self.state is not None, "Not supported for this exception" if isinstance(examples, dict): examples = examples.items() candidate = (None, False) for i, (label, example) in enumerate(examples): assert not isinstance(example, STRING_TYPE) for j, malformed in enumerate(example): try: parse_fn(malformed) except UnexpectedInput as ut: if ut.state == self.state: if use_accepts and hasattr(self, 'accepts') 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 try: 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 except AttributeError: pass if candidate[0] is None: logger.debug("Same State match at example [%s][%s]" % (i, j)) candidate = label, False return candidate[0]
class UnexpectedToken (token, expected, considered_rules=None, state=None, interactive_parser=None, terminals_by_name=None, token_history=None)
-
Common base class for all non-exit exceptions.
Expand source code
class UnexpectedToken(ParseError, UnexpectedInput): #-- def __init__(self, token, expected, considered_rules=None, state=None, interactive_parser=None, terminals_by_name=None, token_history=None): ## self.line = getattr(token, 'line', '?') self.column = getattr(token, 'column', '?') self.pos_in_stream = getattr(token, 'pos_in_stream', 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 super(UnexpectedToken, self).__init__() @property def accepts(self): 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 @property def puppet(self): warn("UnexpectedToken.puppet attribute has been renamed to interactive_parser", DeprecationWarning) return self.interactive_parser
Ancestors
- ParseError
- UnexpectedInput
- LarkError
- builtins.Exception
- builtins.BaseException
Instance variables
var accepts
-
Expand source code
@property def accepts(self): if self._accepts is NO_VALUE: self._accepts = self.interactive_parser and self.interactive_parser.accepts() return self._accepts
var puppet
-
Expand source code
@property def puppet(self): warn("UnexpectedToken.puppet attribute has been renamed to interactive_parser", DeprecationWarning) return self.interactive_parser
class UnlessCallback (mres)
-
Expand source code
class UnlessCallback: def __init__(self, mres): self.mres = mres def __call__(self, t): for mre, type_from_index in self.mres: m = mre.match(t.value) if m: t.type = type_from_index[m.lastindex] break return t
class VisitError (rule, obj, orig_exc)
-
Common base class for all non-exit exceptions.
Expand source code
class VisitError(LarkError): #-- def __init__(self, rule, obj, orig_exc): self.obj = obj self.orig_exc = orig_exc message = 'Error trying to process rule "%s":\n\n%s' % (rule, orig_exc) super(VisitError, self).__init__(message)
Ancestors
- LarkError
- builtins.Exception
- builtins.BaseException
class Visitor
-
Expand source code
class Visitor(VisitorBase): #-- def visit(self, tree): #-- for subtree in tree.iter_subtrees(): self._call_userfunc(subtree) return tree def visit_topdown(self,tree): #-- for subtree in tree.iter_subtrees_topdown(): self._call_userfunc(subtree) return tree
Ancestors
Methods
def visit(self, tree)
-
Expand source code
def visit(self, tree): #-- for subtree in tree.iter_subtrees(): self._call_userfunc(subtree) return tree
def visit_topdown(self, tree)
-
Expand source code
def visit_topdown(self,tree): #-- for subtree in tree.iter_subtrees_topdown(): self._call_userfunc(subtree) return tree
class VisitorBase
-
Expand source code
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
Subclasses
class Visitor_Recursive
-
Expand source code
class Visitor_Recursive(VisitorBase): #-- def visit(self, tree): #-- for child in tree.children: if isinstance(child, Tree): self.visit(child) self._call_userfunc(tree) return tree def visit_topdown(self,tree): #-- self._call_userfunc(tree) for child in tree.children: if isinstance(child, Tree): self.visit_topdown(child) return tree
Ancestors
Methods
def visit(self, tree)
-
Expand source code
def visit(self, tree): #-- for child in tree.children: if isinstance(child, Tree): self.visit(child) self._call_userfunc(tree) return tree
def visit_topdown(self, tree)
-
Expand source code
def visit_topdown(self,tree): #-- self._call_userfunc(tree) for child in tree.children: if isinstance(child, Tree): self.visit_topdown(child) return tree