From fd0741555b733f66c0a35c698d0cac5e73010ae0 Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Sat, 14 Apr 2012 14:10:13 -0400 Subject: Issue #2377: Make importlib the implementation of __import__(). importlib._bootstrap is now frozen into Python/importlib.h and stored as _frozen_importlib in sys.modules. Py_Initialize() loads the frozen code along with sys and imp and then uses _frozen_importlib._install() to set builtins.__import__() w/ _frozen_importlib.__import__(). --- Include/abstract.h | 4 + Include/dictobject.h | 2 + Include/import.h | 3 + Include/pystate.h | 2 + Include/pythonrun.h | 2 +- Lib/importlib/_bootstrap.py | 35 +- Lib/importlib/test/import_/test_path.py | 2 +- Lib/importlib/test/import_/util.py | 1 - Lib/importlib/test/regrtest.py | 12 - Lib/importlib/test/source/test_file_loader.py | 2 +- Lib/importlib/test/source/test_finder.py | 7 +- Lib/importlib/test/source/test_path_hook.py | 3 +- Lib/importlib/test/source/test_source_encoding.py | 4 +- Lib/importlib/test/util.py | 2 +- Lib/os.py | 2 + Lib/pydoc.py | 5 +- Lib/site.py | 3 +- Lib/test/test_frozen.py | 26 +- Lib/test/test_import.py | 7 +- Lib/test/test_pkg.py | 31 +- Lib/test/test_pydoc.py | 9 +- Lib/test/test_runpy.py | 7 + Lib/test/test_support.py | 2 + Lib/test/test_trace.py | 2 +- Makefile.pre.in | 6 + Misc/NEWS | 2 + Objects/abstract.c | 29 + Objects/dictobject.c | 10 + Objects/exceptions.c | 8 +- Python/bltinmodule.c | 2 +- Python/dynload_shlib.c | 4 - Python/freeze_importlib.py | 37 + Python/frozen.c | 3 + Python/import.c | 766 ++--- Python/importdl.c | 4 - Python/importlib.h | 3087 +++++++++++++++++++++ Python/pystate.c | 2 + Python/pythonrun.c | 61 +- 38 files changed, 3597 insertions(+), 599 deletions(-) create mode 100644 Python/freeze_importlib.py create mode 100644 Python/importlib.h diff --git a/Include/abstract.h b/Include/abstract.h index 4a27bfb..e879fa1b 100644 --- a/Include/abstract.h +++ b/Include/abstract.h @@ -339,6 +339,10 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/ PyAPI_FUNC(PyObject *) PyObject_CallMethodObjArgs(PyObject *o, PyObject *method, ...); + PyAPI_FUNC(PyObject *) _PyObject_CallMethodObjIdArgs(PyObject *o, + struct _Py_Identifier *method, + ...); + /* Call the method named m of object o with a variable number of diff --git a/Include/dictobject.h b/Include/dictobject.h index 63c810e..24c38f5 100644 --- a/Include/dictobject.h +++ b/Include/dictobject.h @@ -109,6 +109,8 @@ PyAPI_DATA(PyTypeObject) PyDictValues_Type; PyAPI_FUNC(PyObject *) PyDict_New(void); PyAPI_FUNC(PyObject *) PyDict_GetItem(PyObject *mp, PyObject *key); PyAPI_FUNC(PyObject *) PyDict_GetItemWithError(PyObject *mp, PyObject *key); +PyAPI_FUNC(PyObject *) _PyDict_GetItemIdWithError(PyObject *dp, + struct _Py_Identifier *key); PyAPI_FUNC(int) PyDict_SetItem(PyObject *mp, PyObject *key, PyObject *item); PyAPI_FUNC(int) PyDict_DelItem(PyObject *mp, PyObject *key); PyAPI_FUNC(void) PyDict_Clear(PyObject *mp); diff --git a/Include/import.h b/Include/import.h index 45544111..bc21ae2 100644 --- a/Include/import.h +++ b/Include/import.h @@ -7,6 +7,9 @@ extern "C" { #endif +PyAPI_FUNC(void) _PyImportZip_Init(void); + +PyMODINIT_FUNC PyInit_imp(void); PyAPI_FUNC(long) PyImport_GetMagicNumber(void); PyAPI_FUNC(const char *) PyImport_GetMagicTag(void); PyAPI_FUNC(PyObject *) PyImport_ExecCodeModule( diff --git a/Include/pystate.h b/Include/pystate.h index 1bbb4e2..68d512b 100644 --- a/Include/pystate.h +++ b/Include/pystate.h @@ -25,6 +25,7 @@ typedef struct _is { PyObject *modules_by_index; PyObject *sysdict; PyObject *builtins; + PyObject *importlib; PyObject *modules_reloading; PyObject *codec_search_path; @@ -33,6 +34,7 @@ typedef struct _is { int codecs_initialized; int fscodec_initialized; + #ifdef HAVE_DLOPEN int dlopenflags; #endif diff --git a/Include/pythonrun.h b/Include/pythonrun.h index 74ab986..48e39a4 100644 --- a/Include/pythonrun.h +++ b/Include/pythonrun.h @@ -188,7 +188,7 @@ PyAPI_FUNC(const char *) _Py_hgversion(void); PyAPI_FUNC(PyObject *) _PyBuiltin_Init(void); PyAPI_FUNC(PyObject *) _PySys_Init(void); PyAPI_FUNC(void) _PyImport_Init(void); -PyAPI_FUNC(void) _PyExc_Init(void); +PyAPI_FUNC(void) _PyExc_Init(PyObject * bltinmod); PyAPI_FUNC(void) _PyImportHooks_Init(void); PyAPI_FUNC(int) _PyFrame_Init(void); PyAPI_FUNC(void) _PyFloat_Init(void); diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py index 7bf07eb..12b4219 100644 --- a/Lib/importlib/_bootstrap.py +++ b/Lib/importlib/_bootstrap.py @@ -160,6 +160,13 @@ code_type = type(_wrap.__code__) # Finder/loader utility code ################################################## +def verbose_message(message, *args): + """Print the message to stderr if -v/PYTHONVERBOSE is turned on.""" + if sys.flags.verbose: + if not message.startswith('#') and not message.startswith('import '): + message = '# ' + message + print(message.format(*args), file=sys.stderr) + def set_package(fxn): """Set __package__ on the returned module.""" @@ -388,9 +395,13 @@ class _LoaderBasics: raise ImportError("bad magic number in {}".format(fullname), name=fullname, path=bytecode_path) elif len(raw_timestamp) != 4: - raise EOFError("bad timestamp in {}".format(fullname)) + message = 'bad timestamp in {}'.format(fullname) + verbose_message(message) + raise EOFError(message) elif len(raw_size) != 4: - raise EOFError("bad size in {}".format(fullname)) + message = 'bad size in {}'.format(fullname) + verbose_message(message) + raise EOFError(message) if source_stats is not None: try: source_mtime = int(source_stats['mtime']) @@ -398,9 +409,10 @@ class _LoaderBasics: pass else: if _r_long(raw_timestamp) != source_mtime: - raise ImportError( - "bytecode is stale for {}".format(fullname), - name=fullname, path=bytecode_path) + message = 'bytecode is stale for {}'.format(fullname) + verbose_message(message) + raise ImportError(message, name=fullname, + path=bytecode_path) try: source_size = source_stats['size'] & 0xFFFFFFFF except KeyError: @@ -506,9 +518,13 @@ class SourceLoader(_LoaderBasics): except (ImportError, EOFError): pass else: + verbose_message('{} matches {}', bytecode_path, + source_path) found = marshal.loads(bytes_data) if isinstance(found, code_type): imp._fix_co_filename(found, source_path) + verbose_message('code object from {}', + bytecode_path) return found else: msg = "Non-code object in {}" @@ -517,6 +533,7 @@ class SourceLoader(_LoaderBasics): source_bytes = self.get_data(source_path) code_object = compile(source_bytes, source_path, 'exec', dont_inherit=True) + verbose_message('code object from {}', source_path) if (not sys.dont_write_bytecode and bytecode_path is not None and source_mtime is not None): # If e.g. Jython ever implements imp.cache_from_source to have @@ -528,6 +545,7 @@ class SourceLoader(_LoaderBasics): data.extend(marshal.dumps(code_object)) try: self.set_data(bytecode_path, data) + verbose_message('wrote {!r}', bytecode_path) except NotImplementedError: pass return code_object @@ -596,6 +614,7 @@ class _SourceFileLoader(_FileLoader, SourceLoader): return try: _write_atomic(path, data) + verbose_message('created {!r}', path) except (PermissionError, FileExistsError): # Don't worry if you can't write bytecode or someone is writing # it at the same time. @@ -615,6 +634,7 @@ class _SourcelessFileLoader(_FileLoader, _LoaderBasics): bytes_data = self._bytes_from_bytecode(fullname, data, path, None) found = marshal.loads(bytes_data) if isinstance(found, code_type): + verbose_message('code object from {!r}', path) return found else: raise ImportError("Non-code object in {}".format(path), @@ -644,7 +664,9 @@ class _ExtensionFileLoader: """Load an extension module.""" is_reload = fullname in sys.modules try: - return imp.load_dynamic(fullname, self._path) + module = imp.load_dynamic(fullname, self._path) + verbose_message('extension module loaded from {!r}', self._path) + return module except: if not is_reload and fullname in sys.modules: del sys.modules[fullname] @@ -953,6 +975,7 @@ def _find_and_load(name, import_): elif name not in sys.modules: # The parent import may have already imported this module. loader.load_module(name) + verbose_message('import {!r} # {!r}', name, loader) # Backwards-compatibility; be nicer to skip the dict lookup. module = sys.modules[name] if parent: diff --git a/Lib/importlib/test/import_/test_path.py b/Lib/importlib/test/import_/test_path.py index 5713319..a211bdf 100644 --- a/Lib/importlib/test/import_/test_path.py +++ b/Lib/importlib/test/import_/test_path.py @@ -87,7 +87,7 @@ class FinderTests(unittest.TestCase): class DefaultPathFinderTests(unittest.TestCase): - """Test importlib._bootstrap._DefaultPathFinder.""" + """Test _bootstrap._DefaultPathFinder.""" def test_implicit_hooks(self): # Test that the implicit path hooks are used. diff --git a/Lib/importlib/test/import_/util.py b/Lib/importlib/test/import_/util.py index 649c5ed..86ac065 100644 --- a/Lib/importlib/test/import_/util.py +++ b/Lib/importlib/test/import_/util.py @@ -1,6 +1,5 @@ import functools import importlib -import importlib._bootstrap import unittest diff --git a/Lib/importlib/test/regrtest.py b/Lib/importlib/test/regrtest.py index dc0eb97..9cc9ee7 100644 --- a/Lib/importlib/test/regrtest.py +++ b/Lib/importlib/test/regrtest.py @@ -13,16 +13,4 @@ from test import regrtest if __name__ == '__main__': __builtins__.__import__ = importlib.__import__ - exclude = ['--exclude', - 'test_frozen', # Does not expect __loader__ attribute - 'test_pkg', # Does not expect __loader__ attribute - 'test_pydoc', # Does not expect __loader__ attribute - ] - - # Switching on --exclude implies running all test but the ones listed, so - # only use it when one is not running an explicit test - if len(sys.argv) == 1: - # No programmatic way to specify tests to exclude - sys.argv.extend(exclude) - regrtest.main(quiet=True, verbose2=True) diff --git a/Lib/importlib/test/source/test_file_loader.py b/Lib/importlib/test/source/test_file_loader.py index cb1c317..710339c 100644 --- a/Lib/importlib/test/source/test_file_loader.py +++ b/Lib/importlib/test/source/test_file_loader.py @@ -1,5 +1,5 @@ +from ... import _bootstrap import importlib -from importlib import _bootstrap from .. import abc from .. import util from . import util as source_util diff --git a/Lib/importlib/test/source/test_finder.py b/Lib/importlib/test/source/test_finder.py index 68e9ae7..315aa77 100644 --- a/Lib/importlib/test/source/test_finder.py +++ b/Lib/importlib/test/source/test_finder.py @@ -1,10 +1,11 @@ -from importlib import _bootstrap from .. import abc from . import util as source_util -from test.support import make_legacy_pyc -import os + +from importlib import _bootstrap import errno +import os import py_compile +from test.support import make_legacy_pyc import unittest import warnings diff --git a/Lib/importlib/test/source/test_path_hook.py b/Lib/importlib/test/source/test_path_hook.py index 374f7b6..3de822c 100644 --- a/Lib/importlib/test/source/test_path_hook.py +++ b/Lib/importlib/test/source/test_path_hook.py @@ -1,5 +1,6 @@ -from importlib import _bootstrap from . import util as source_util + +from importlib import _bootstrap import unittest diff --git a/Lib/importlib/test/source/test_source_encoding.py b/Lib/importlib/test/source/test_source_encoding.py index 794a3df..72a1360 100644 --- a/Lib/importlib/test/source/test_source_encoding.py +++ b/Lib/importlib/test/source/test_source_encoding.py @@ -1,6 +1,6 @@ -from importlib import _bootstrap from . import util as source_util +from importlib import _bootstrap import codecs import re import sys @@ -36,7 +36,7 @@ class EncodingTest(unittest.TestCase): with open(mapping[self.module_name], 'wb') as file: file.write(source) loader = _bootstrap._SourceFileLoader(self.module_name, - mapping[self.module_name]) + mapping[self.module_name]) return loader.load_module(self.module_name) def create_source(self, encoding): diff --git a/Lib/importlib/test/util.py b/Lib/importlib/test/util.py index 93b7cd2..7ba7a97 100644 --- a/Lib/importlib/test/util.py +++ b/Lib/importlib/test/util.py @@ -35,7 +35,7 @@ def uncache(*names): for name in names: if name in ('sys', 'marshal', 'imp'): raise ValueError( - "cannot uncache {0} as it will break _importlib".format(name)) + "cannot uncache {0}".format(name)) try: del sys.modules[name] except KeyError: diff --git a/Lib/os.py b/Lib/os.py index fe6cb11..bd18023 100644 --- a/Lib/os.py +++ b/Lib/os.py @@ -42,6 +42,8 @@ def _get_exports_list(module): except AttributeError: return [n for n in dir(module) if n[0] != '_'] +# Any new dependencies of the os module and/or changes in path separator +# requires updating importlib as well. if 'posix' in _names: name = 'posix' linesep = '\n' diff --git a/Lib/pydoc.py b/Lib/pydoc.py index cc22d73..8b94993 100755 --- a/Lib/pydoc.py +++ b/Lib/pydoc.py @@ -299,9 +299,8 @@ def safeimport(path, forceload=0, cache={}): elif exc is SyntaxError: # A SyntaxError occurred before we could execute the module. raise ErrorDuringImport(value.filename, info) - elif exc is ImportError and extract_tb(tb)[-1][2]=='safeimport': - # The import error occurred directly in this function, - # which means there is no such module in the path. + elif exc is ImportError and value.name == path: + # No such module in the path. return None else: # Some other error occurred during the importing process. diff --git a/Lib/site.py b/Lib/site.py index b83498e..c289f56 100644 --- a/Lib/site.py +++ b/Lib/site.py @@ -81,7 +81,8 @@ def makepath(*paths): def abs_paths(): """Set all module __file__ and __cached__ attributes to an absolute path""" for m in set(sys.modules.values()): - if hasattr(m, '__loader__'): + if (getattr(getattr(m, '__loader__', None), '__module__', None) != + '_frozen_importlib'): continue # don't mess with a PEP 302-supplied __file__ try: m.__file__ = os.path.abspath(m.__file__) diff --git a/Lib/test/test_frozen.py b/Lib/test/test_frozen.py index 5243ebb..dbd229b 100644 --- a/Lib/test/test_frozen.py +++ b/Lib/test/test_frozen.py @@ -5,6 +5,12 @@ import unittest import sys class FrozenTests(unittest.TestCase): + + module_attrs = frozenset(['__builtins__', '__cached__', '__doc__', + '__file__', '__loader__', '__name__', + '__package__']) + package_attrs = frozenset(list(module_attrs) + ['__path__']) + def test_frozen(self): with captured_stdout() as stdout: try: @@ -12,7 +18,9 @@ class FrozenTests(unittest.TestCase): except ImportError as x: self.fail("import __hello__ failed:" + str(x)) self.assertEqual(__hello__.initialized, True) - self.assertEqual(len(dir(__hello__)), 7, dir(__hello__)) + expect = set(self.module_attrs) + expect.add('initialized') + self.assertEqual(set(dir(__hello__)), expect) self.assertEqual(stdout.getvalue(), 'Hello world!\n') with captured_stdout() as stdout: @@ -21,10 +29,13 @@ class FrozenTests(unittest.TestCase): except ImportError as x: self.fail("import __phello__ failed:" + str(x)) self.assertEqual(__phello__.initialized, True) + expect = set(self.package_attrs) + expect.add('initialized') if not "__phello__.spam" in sys.modules: - self.assertEqual(len(dir(__phello__)), 8, dir(__phello__)) + self.assertEqual(set(dir(__phello__)), expect) else: - self.assertEqual(len(dir(__phello__)), 9, dir(__phello__)) + expect.add('spam') + self.assertEqual(set(dir(__phello__)), expect) self.assertEqual(__phello__.__path__, [__phello__.__name__]) self.assertEqual(stdout.getvalue(), 'Hello world!\n') @@ -34,8 +45,13 @@ class FrozenTests(unittest.TestCase): except ImportError as x: self.fail("import __phello__.spam failed:" + str(x)) self.assertEqual(__phello__.spam.initialized, True) - self.assertEqual(len(dir(__phello__.spam)), 7) - self.assertEqual(len(dir(__phello__)), 9) + spam_expect = set(self.module_attrs) + spam_expect.add('initialized') + self.assertEqual(set(dir(__phello__.spam)), spam_expect) + phello_expect = set(self.package_attrs) + phello_expect.add('initialized') + phello_expect.add('spam') + self.assertEqual(set(dir(__phello__)), phello_expect) self.assertEqual(stdout.getvalue(), 'Hello world!\n') try: diff --git a/Lib/test/test_import.py b/Lib/test/test_import.py index bd2da72..87409fc 100644 --- a/Lib/test/test_import.py +++ b/Lib/test/test_import.py @@ -73,6 +73,7 @@ class ImportTests(unittest.TestCase): if TESTFN in sys.modules: del sys.modules[TESTFN] + importlib.invalidate_caches() try: try: mod = __import__(TESTFN) @@ -402,6 +403,7 @@ func_filename = func.__code__.co_filename py_compile.compile(self.file_name, dfile=target) os.remove(self.file_name) pyc_file = make_legacy_pyc(self.file_name) + importlib.invalidate_caches() mod = self.import_module() self.assertEqual(mod.module_filename, pyc_file) self.assertEqual(mod.code_filename, target) @@ -509,7 +511,7 @@ class RelativeImportTests(unittest.TestCase): # Check relative import fails with package set to a non-string ns = dict(__package__=object()) - self.assertRaises(ValueError, check_relative) + self.assertRaises(TypeError, check_relative) def test_absolute_import_without_future(self): # If explicit relative import syntax is used, then do not try @@ -644,6 +646,7 @@ class PycacheTests(unittest.TestCase): pass unload('pep3147.foo') unload('pep3147') + importlib.invalidate_caches() m = __import__('pep3147.foo') init_pyc = imp.cache_from_source( os.path.join('pep3147', '__init__.py')) @@ -666,9 +669,11 @@ class PycacheTests(unittest.TestCase): pass with open(os.path.join('pep3147', 'foo.py'), 'w'): pass + importlib.invalidate_caches() m = __import__('pep3147.foo') unload('pep3147.foo') unload('pep3147') + importlib.invalidate_caches() m = __import__('pep3147.foo') init_pyc = imp.cache_from_source( os.path.join('pep3147', '__init__.py')) diff --git a/Lib/test/test_pkg.py b/Lib/test/test_pkg.py index a4ddb15..4d0eee8 100644 --- a/Lib/test/test_pkg.py +++ b/Lib/test/test_pkg.py @@ -196,14 +196,15 @@ class TestPkg(unittest.TestCase): import t5 self.assertEqual(fixdir(dir(t5)), - ['__cached__', '__doc__', '__file__', '__name__', - '__package__', '__path__', 'foo', 'string', 't5']) + ['__cached__', '__doc__', '__file__', '__loader__', + '__name__', '__package__', '__path__', 'foo', + 'string', 't5']) self.assertEqual(fixdir(dir(t5.foo)), - ['__cached__', '__doc__', '__file__', '__name__', - '__package__', 'string']) + ['__cached__', '__doc__', '__file__', '__loader__', + '__name__', '__package__', 'string']) self.assertEqual(fixdir(dir(t5.string)), - ['__cached__', '__doc__', '__file__', '__name__', - '__package__', 'spam']) + ['__cached__', '__doc__', '__file__', '__loader__', + '__name__', '__package__', 'spam']) def test_6(self): hier = [ @@ -219,14 +220,14 @@ class TestPkg(unittest.TestCase): import t6 self.assertEqual(fixdir(dir(t6)), ['__all__', '__cached__', '__doc__', '__file__', - '__name__', '__package__', '__path__']) + '__loader__', '__name__', '__package__', '__path__']) s = """ import t6 from t6 import * self.assertEqual(fixdir(dir(t6)), ['__all__', '__cached__', '__doc__', '__file__', - '__name__', '__package__', '__path__', - 'eggs', 'ham', 'spam']) + '__loader__', '__name__', '__package__', + '__path__', 'eggs', 'ham', 'spam']) self.assertEqual(dir(), ['eggs', 'ham', 'self', 'spam', 't6']) """ self.run_code(s) @@ -252,19 +253,19 @@ class TestPkg(unittest.TestCase): t7, sub, subsub = None, None, None import t7 as tas self.assertEqual(fixdir(dir(tas)), - ['__cached__', '__doc__', '__file__', '__name__', - '__package__', '__path__']) + ['__cached__', '__doc__', '__file__', '__loader__', + '__name__', '__package__', '__path__']) self.assertFalse(t7) from t7 import sub as subpar self.assertEqual(fixdir(dir(subpar)), - ['__cached__', '__doc__', '__file__', '__name__', - '__package__', '__path__']) + ['__cached__', '__doc__', '__file__', '__loader__', + '__name__', '__package__', '__path__']) self.assertFalse(t7) self.assertFalse(sub) from t7.sub import subsub as subsubsub self.assertEqual(fixdir(dir(subsubsub)), - ['__cached__', '__doc__', '__file__', '__name__', - '__package__', '__path__', 'spam']) + ['__cached__', '__doc__', '__file__', '__loader__', + '__name__', '__package__', '__path__', 'spam']) self.assertFalse(t7) self.assertFalse(sub) self.assertFalse(subsub) diff --git a/Lib/test/test_pydoc.py b/Lib/test/test_pydoc.py index e805ed8..a9f75b9 100644 --- a/Lib/test/test_pydoc.py +++ b/Lib/test/test_pydoc.py @@ -383,11 +383,10 @@ class PydocImportTest(unittest.TestCase): modname = 'testmod_xyzzy' testpairs = ( ('i_am_not_here', 'i_am_not_here'), - ('test.i_am_not_here_either', 'i_am_not_here_either'), - ('test.i_am_not_here.neither_am_i', 'i_am_not_here.neither_am_i'), - ('i_am_not_here.{}'.format(modname), - 'i_am_not_here.{}'.format(modname)), - ('test.{}'.format(modname), modname), + ('test.i_am_not_here_either', 'test.i_am_not_here_either'), + ('test.i_am_not_here.neither_am_i', 'test.i_am_not_here'), + ('i_am_not_here.{}'.format(modname), 'i_am_not_here'), + ('test.{}'.format(modname), 'test.{}'.format(modname)), ) sourcefn = os.path.join(TESTFN, modname) + os.extsep + "py" diff --git a/Lib/test/test_runpy.py b/Lib/test/test_runpy.py index 2cede19..de44df0 100644 --- a/Lib/test/test_runpy.py +++ b/Lib/test/test_runpy.py @@ -5,6 +5,7 @@ import os.path import sys import re import tempfile +import importlib import py_compile from test.support import ( forget, make_legacy_pyc, run_unittest, unload, verbose, no_tracing, @@ -172,11 +173,13 @@ class RunModuleTest(unittest.TestCase): self.assertIn("x", d1) self.assertEqual(d1["x"], 1) del d1 # Ensure __loader__ entry doesn't keep file open + importlib.invalidate_caches() __import__(mod_name) os.remove(mod_fname) make_legacy_pyc(mod_fname) unload(mod_name) # In case loader caches paths if verbose: print("Running from compiled:", mod_name) + importlib.invalidate_caches() d2 = run_module(mod_name) # Read from bytecode self.assertIn("x", d2) self.assertEqual(d2["x"], 1) @@ -196,11 +199,13 @@ class RunModuleTest(unittest.TestCase): self.assertIn("x", d1) self.assertTrue(d1["x"] == 1) del d1 # Ensure __loader__ entry doesn't keep file open + importlib.invalidate_caches() __import__(mod_name) os.remove(mod_fname) make_legacy_pyc(mod_fname) unload(mod_name) # In case loader caches paths if verbose: print("Running from compiled:", pkg_name) + importlib.invalidate_caches() d2 = run_module(pkg_name) # Read from bytecode self.assertIn("x", d2) self.assertTrue(d2["x"] == 1) @@ -250,11 +255,13 @@ from ..uncle.cousin import nephew self.assertIn("sibling", d1) self.assertIn("nephew", d1) del d1 # Ensure __loader__ entry doesn't keep file open + importlib.invalidate_caches() __import__(mod_name) os.remove(mod_fname) make_legacy_pyc(mod_fname) unload(mod_name) # In case the loader caches paths if verbose: print("Running from compiled:", mod_name) + importlib.invalidate_caches() d2 = run_module(mod_name, run_name=run_name) # Read from bytecode self.assertIn("__package__", d2) self.assertTrue(d2["__package__"] == pkg_name) diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py index 394e210..14fcdbf 100644 --- a/Lib/test/test_support.py +++ b/Lib/test/test_support.py @@ -1,5 +1,6 @@ #!/usr/bin/env python +import importlib import sys import os import unittest @@ -59,6 +60,7 @@ class TestSupport(unittest.TestCase): with open(mod_filename, 'w') as f: print('foo = 1', file=f) sys.path.insert(0, os.curdir) + importlib.invalidate_caches() try: mod = __import__(TESTFN) self.assertIn(TESTFN, sys.modules) diff --git a/Lib/test/test_trace.py b/Lib/test/test_trace.py index d9bef38..fa0d48c 100644 --- a/Lib/test/test_trace.py +++ b/Lib/test/test_trace.py @@ -322,7 +322,7 @@ class TestCoverage(unittest.TestCase): self._coverage(tracer) if os.path.exists(TESTFN): files = os.listdir(TESTFN) - self.assertEqual(files, []) + self.assertEqual(files, ['_importlib.cover']) # Ignore __import__ def test_issue9936(self): tracer = trace.Trace(trace=0, count=1) diff --git a/Makefile.pre.in b/Makefile.pre.in index 71be3ac..3133720 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -573,7 +573,12 @@ Modules/Setup: $(srcdir)/Modules/Setup.dist Modules/_testembed: Modules/_testembed.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY) $(LINKCC) $(PY_LDFLAGS) $(LINKFORSHARED) -o $@ Modules/_testembed.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST) +############################################################################ +# Importlib +Python/importlib.h: $(srcdir)/Lib/importlib/_bootstrap.py $(srcdir)/Python/freeze_importlib.py + ./$(BUILDPYTHON) $(srcdir)/Python/freeze_importlib.py \ + $(srcdir)/Lib/importlib/_bootstrap.py Python/importlib.h ############################################################################ # Special rules for object files @@ -787,6 +792,7 @@ PYTHON_HEADERS= \ $(srcdir)/Include/unicodeobject.h \ $(srcdir)/Include/warnings.h \ $(srcdir)/Include/weakrefobject.h \ + $(srcdir)/Python/importlib.h \ pyconfig.h \ $(PARSER_HEADERS) diff --git a/Misc/NEWS b/Misc/NEWS index 91d5a40..467762e 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -10,6 +10,8 @@ What's New in Python 3.3.0 Alpha 3? Core and Builtins ----------------- +- Issue #2377: Make importlib the implementation of __import__(). + - Issue #1559549: ImportError now has 'name' and 'path' attributes that are set using keyword arguments to its constructor. They are currently not set by import as they are meant for use by importlib. diff --git a/Objects/abstract.c b/Objects/abstract.c index 4737d54..42cd169 100644 --- a/Objects/abstract.c +++ b/Objects/abstract.c @@ -2377,6 +2377,35 @@ PyObject_CallMethodObjArgs(PyObject *callable, PyObject *name, ...) } PyObject * +_PyObject_CallMethodObjIdArgs(PyObject *callable, + struct _Py_Identifier *name, ...) +{ + PyObject *args, *tmp; + va_list vargs; + + if (callable == NULL || name == NULL) + return null_error(); + + callable = _PyObject_GetAttrId(callable, name); + if (callable == NULL) + return NULL; + + /* count the args */ + va_start(vargs, name); + args = objargs_mktuple(vargs); + va_end(vargs); + if (args == NULL) { + Py_DECREF(callable); + return NULL; + } + tmp = PyObject_Call(callable, args, NULL); + Py_DECREF(args); + Py_DECREF(callable); + + return tmp; +} + +PyObject * PyObject_CallFunctionObjArgs(PyObject *callable, ...) { PyObject *args, *tmp; diff --git a/Objects/dictobject.c b/Objects/dictobject.c index 3db7a5e..5d8910f 100644 --- a/Objects/dictobject.c +++ b/Objects/dictobject.c @@ -788,6 +788,16 @@ PyDict_GetItemWithError(PyObject *op, PyObject *key) return ep->me_value; } +PyObject * +_PyDict_GetItemIdWithError(PyObject *dp, struct _Py_Identifier *key) +{ + PyObject *kv; + kv = _PyUnicode_FromId(key); /* borrowed */ + if (kv == NULL) + return NULL; + return PyDict_GetItemWithError(dp, kv); +} + static int dict_set_item_by_hash_or_entry(register PyObject *op, PyObject *key, Py_hash_t hash, PyDictEntry *ep, PyObject *value) diff --git a/Objects/exceptions.c b/Objects/exceptions.c index f3dde11..a2f2e44 100644 --- a/Objects/exceptions.c +++ b/Objects/exceptions.c @@ -2344,9 +2344,9 @@ PyObject *PyExc_RecursionErrorInst = NULL; #endif /* MS_WINDOWS */ void -_PyExc_Init(void) +_PyExc_Init(PyObject *bltinmod) { - PyObject *bltinmod, *bdict; + PyObject *bdict; PRE_INIT(BaseException) PRE_INIT(Exception) @@ -2414,9 +2414,6 @@ _PyExc_Init(void) PRE_INIT(ProcessLookupError); PRE_INIT(TimeoutError); - bltinmod = PyImport_ImportModule("builtins"); - if (bltinmod == NULL) - Py_FatalError("exceptions bootstrapping error."); bdict = PyModule_GetDict(bltinmod); if (bdict == NULL) Py_FatalError("exceptions bootstrapping error."); @@ -2546,7 +2543,6 @@ _PyExc_Init(void) Py_DECREF(args_tuple); } } - Py_DECREF(bltinmod); } void diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index a2fb1d9..47e8c8f 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -187,7 +187,7 @@ builtin___import__(PyObject *self, PyObject *args, PyObject *kwds) static char *kwlist[] = {"name", "globals", "locals", "fromlist", "level", 0}; PyObject *name, *globals = NULL, *locals = NULL, *fromlist = NULL; - int level = -1; + int level = 0; if (!PyArg_ParseTupleAndKeywords(args, kwds, "U|OOOi:__import__", kwlist, &name, &globals, &locals, &fromlist, &level)) diff --git a/Python/dynload_shlib.c b/Python/dynload_shlib.c index ab24238..94c6494 100644 --- a/Python/dynload_shlib.c +++ b/Python/dynload_shlib.c @@ -115,10 +115,6 @@ dl_funcptr _PyImport_GetDynLoadFunc(const char *shortname, dlopenflags = PyThreadState_GET()->interp->dlopenflags; #endif - if (Py_VerboseFlag) - PySys_WriteStderr("dlopen(\"%s\", %x);\n", pathname, - dlopenflags); - #ifdef __VMS /* VMS currently don't allow a pathname, use a logical name instead */ /* Concatenate 'python_module_' and shortname */ diff --git a/Python/freeze_importlib.py b/Python/freeze_importlib.py new file mode 100644 index 0000000..a069a0b --- /dev/null +++ b/Python/freeze_importlib.py @@ -0,0 +1,37 @@ +#! /usr/bin/env python +"""Freeze importlib for use as the implementation of import.""" +import marshal + + +header = """/* Auto-generated by Python/freeze_importlib.py */""" + + +def main(input_path, output_path): + with open(input_path, 'r', encoding='utf-8') as input_file: + source = input_file.read() + + code = compile(source, '', 'exec') + + lines = [header] + lines.append('unsigned char _Py_M__importlib[] = {') + data = marshal.dumps(code) + # Code from Tools/freeze/makefreeze.py:writecode() + for i in range(0, len(data), 16): + line = [' '] + for c in data[i:i+16]: + line.append('%d,' % c) + lines.append(''.join(line)) + lines.append('};\n') + with open(output_path, 'w') as output_file: + output_file.write('\n'.join(lines)) + + +if __name__ == '__main__': + import sys + + args = sys.argv[1:] + if len(args) != 2: + print('Need to specify input and output file paths', file=sys.stderr) + sys.exit(1) + + main(*args) diff --git a/Python/frozen.c b/Python/frozen.c index ddf6224..25fdc17 100644 --- a/Python/frozen.c +++ b/Python/frozen.c @@ -2,6 +2,7 @@ /* Dummy frozen modules initializer */ #include "Python.h" +#include "importlib.h" /* In order to test the support for frozen modules, by default we define a single frozen module, __hello__. Loading it will print @@ -28,6 +29,8 @@ static unsigned char M___hello__[] = { #define SIZE (int)sizeof(M___hello__) static struct _frozen _PyImport_FrozenModules[] = { + /* importlib */ + {"_frozen_importlib", _Py_M__importlib, (int)sizeof(_Py_M__importlib)}, /* Test module */ {"__hello__", M___hello__, SIZE}, /* Test package (negative size indicates package-ness) */ diff --git a/Python/import.c b/Python/import.c index 144ca71..87c1214 100644 --- a/Python/import.c +++ b/Python/import.c @@ -203,17 +203,13 @@ _PyImport_Init(void) void _PyImportHooks_Init(void) { - PyObject *v, *path_hooks = NULL, *zimpimport; + PyObject *v, *path_hooks = NULL; int err = 0; - /* adding sys.path_hooks and sys.path_importer_cache, setting up - zipimport */ if (PyType_Ready(&PyNullImporter_Type) < 0) goto error; - if (Py_VerboseFlag) - PySys_WriteStderr("# installing zipimport hook\n"); - + /* adding sys.path_hooks and sys.path_importer_cache */ v = PyList_New(0); if (v == NULL) goto error; @@ -234,11 +230,26 @@ _PyImportHooks_Init(void) err = PySys_SetObject("path_hooks", path_hooks); if (err) { error: - PyErr_Print(); - Py_FatalError("initializing sys.meta_path, sys.path_hooks, " - "path_importer_cache, or NullImporter failed" - ); + PyErr_Print(); + Py_FatalError("initializing sys.meta_path, sys.path_hooks, " + "path_importer_cache, or NullImporter failed" + ); } + Py_DECREF(path_hooks); +} + +void +_PyImportZip_Init(void) +{ + PyObject *path_hooks, *zimpimport; + int err = 0; + + path_hooks = PySys_GetObject("path_hooks"); + if (path_hooks == NULL) + goto error; + + if (Py_VerboseFlag) + PySys_WriteStderr("# installing zipimport hook\n"); zimpimport = PyImport_ImportModule("zipimport"); if (zimpimport == NULL) { @@ -261,14 +272,20 @@ _PyImportHooks_Init(void) /* sys.path_hooks.append(zipimporter) */ err = PyList_Append(path_hooks, zipimporter); Py_DECREF(zipimporter); - if (err) + if (err < 0) { goto error; + } if (Py_VerboseFlag) PySys_WriteStderr( "# installed zipimport hook\n"); } } - Py_DECREF(path_hooks); + + return; + + error: + PyErr_Print(); + Py_FatalError("initializing zipimport or NullImporter failed"); } /* Locking primitives to prevent parallel imports of the same module @@ -2542,8 +2559,6 @@ init_builtin(PyObject *name) name); return -1; } - if (Py_VerboseFlag) - PySys_FormatStderr("import %U # builtin\n", name); mod = (*p->initfunc)(); if (mod == 0) return -1; @@ -2654,9 +2669,6 @@ PyImport_ImportFrozenModuleObject(PyObject *name) ispackage = (size < 0); if (ispackage) size = -size; - if (Py_VerboseFlag) - PySys_FormatStderr("import %U # frozen%s\n", - name, ispackage ? " package" : ""); co = PyMarshal_ReadObjectFromString((char *)p->code, size); if (co == NULL) return -1; @@ -2786,568 +2798,278 @@ PyImport_ImportModuleNoBlock(const char *name) return result; } -/* Forward declarations for helper routines */ -static PyObject *get_parent(PyObject *globals, - PyObject **p_name, - int level); -static PyObject *load_next(PyObject *mod, PyObject *altmod, - PyObject *inputname, PyObject **p_outputname, - PyObject **p_prefix); -static int mark_miss(PyObject *name); -static int ensure_fromlist(PyObject *mod, PyObject *fromlist, - PyObject *buf, int recursive); -static PyObject * import_submodule(PyObject *mod, PyObject *name, - PyObject *fullname); - -/* The Magnum Opus of dotted-name import :-) */ -static PyObject * -import_module_level(PyObject *name, PyObject *globals, PyObject *locals, - PyObject *fromlist, int level) +PyObject * +PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals, + PyObject *locals, PyObject *given_fromlist, + int level) { - PyObject *parent, *next, *inputname, *outputname; - PyObject *head = NULL; - PyObject *tail = NULL; - PyObject *prefix = NULL; - PyObject *result = NULL; - Py_ssize_t sep, altsep; - - if (PyUnicode_READY(name)) - return NULL; - - sep = PyUnicode_FindChar(name, SEP, 0, PyUnicode_GET_LENGTH(name), 1); - if (sep == -2) - return NULL; -#ifdef ALTSEP - altsep = PyUnicode_FindChar(name, ALTSEP, 0, PyUnicode_GET_LENGTH(name), 1); - if (altsep == -2) - return NULL; -#else - altsep = -1; -#endif - if (sep != -1 || altsep != -1) - { - PyErr_SetString(PyExc_ImportError, - "Import by filename is not supported."); - return NULL; - } - - parent = get_parent(globals, &prefix, level); - if (parent == NULL) { - return NULL; - } - - if (PyUnicode_READY(prefix)) - return NULL; - - head = load_next(parent, level < 0 ? Py_None : parent, name, &outputname, - &prefix); - if (head == NULL) - goto out; - - tail = head; - Py_INCREF(tail); - - if (outputname != NULL) { - while (1) { - inputname = outputname; - next = load_next(tail, tail, inputname, &outputname, - &prefix); - Py_CLEAR(tail); - Py_CLEAR(inputname); - if (next == NULL) - goto out; - tail = next; + _Py_IDENTIFIER(__import__); + _Py_IDENTIFIER(__package__); + _Py_IDENTIFIER(__path__); + _Py_IDENTIFIER(__name__); + _Py_IDENTIFIER(_find_and_load); + _Py_IDENTIFIER(_handle_fromlist); + _Py_static_string(single_dot, "."); + PyObject *abs_name = NULL; + PyObject *builtins_import = NULL; + PyObject *final_mod = NULL; + PyObject *mod = NULL; + PyObject *package = NULL; + PyObject *globals = NULL; + PyObject *fromlist = NULL; + PyInterpreterState *interp = PyThreadState_GET()->interp; - if (outputname == NULL) { - break; - } + /* Make sure to use default values so as to not have + PyObject_CallMethodObjArgs() truncate the parameter list because of a + NULL argument. */ + if (given_globals == NULL) { + globals = PyDict_New(); + if (globals == NULL) { + goto error; } } - if (tail == Py_None) { - /* If tail is Py_None, both get_parent and load_next found - an empty module name: someone called __import__("") or - doctored faulty bytecode */ - PyErr_SetString(PyExc_ValueError, "Empty module name"); - goto out; + else { + /* Only have to care what given_globals is if it will be used + fortsomething. */ + if (level > 0 && !PyDict_Check(given_globals)) { + PyErr_SetString(PyExc_TypeError, "globals must be a dict"); + goto error; + } + globals = given_globals; + Py_INCREF(globals); } - if (fromlist != NULL) { - if (fromlist == Py_None || !PyObject_IsTrue(fromlist)) - fromlist = NULL; + if (given_fromlist == NULL) { + fromlist = PyList_New(0); + if (fromlist == NULL) { + goto error; + } } - - if (fromlist == NULL) { - result = head; - Py_INCREF(result); - goto out; + else { + fromlist = given_fromlist; + Py_INCREF(fromlist); } - - if (!ensure_fromlist(tail, fromlist, prefix, 0)) - goto out; - - result = tail; - Py_INCREF(result); - out: - Py_XDECREF(head); - Py_XDECREF(tail); - Py_XDECREF(prefix); - return result; -} - -PyObject * -PyImport_ImportModuleLevelObject(PyObject *name, PyObject *globals, - PyObject *locals, PyObject *fromlist, - int level) -{ - PyObject *mod; - _PyImport_AcquireLock(); - mod = import_module_level(name, globals, locals, fromlist, level); - if (_PyImport_ReleaseLock() < 0) { - Py_XDECREF(mod); - PyErr_SetString(PyExc_RuntimeError, - "not holding the import lock"); - return NULL; + if (name == NULL) { + PyErr_SetString(PyExc_ValueError, "Empty module name"); + goto error; } - return mod; -} -PyObject * -PyImport_ImportModuleLevel(const char *name, PyObject *globals, PyObject *locals, - PyObject *fromlist, int level) -{ - PyObject *nameobj, *mod; - nameobj = PyUnicode_FromString(name); - if (nameobj == NULL) - return NULL; - mod = PyImport_ImportModuleLevelObject(nameobj, globals, locals, - fromlist, level); - Py_DECREF(nameobj); - return mod; -} + /* The below code is importlib.__import__() & _gcd_import(), ported to C + for added performance. */ - -/* Return the package that an import is being performed in. If globals comes - from the module foo.bar.bat (not itself a package), this returns the - sys.modules entry for foo.bar. If globals is from a package's __init__.py, - the package's entry in sys.modules is returned, as a borrowed reference. - - The name of the returned package is returned in *p_name. - - If globals doesn't come from a package or a module in a package, or a - corresponding entry is not found in sys.modules, Py_None is returned. -*/ -static PyObject * -get_parent(PyObject *globals, PyObject **p_name, int level) -{ - PyObject *nameobj; - - static PyObject *namestr = NULL; - static PyObject *pathstr = NULL; - static PyObject *pkgstr = NULL; - PyObject *pkgname, *modname, *modpath, *modules, *parent; - int orig_level = level; - - if (globals == NULL || !PyDict_Check(globals) || !level) - goto return_none; - - if (namestr == NULL) { - namestr = PyUnicode_InternFromString("__name__"); - if (namestr == NULL) - return NULL; + if (!PyUnicode_Check(name)) { + PyErr_SetString(PyExc_TypeError, "module name must be a string"); + goto error; } - if (pathstr == NULL) { - pathstr = PyUnicode_InternFromString("__path__"); - if (pathstr == NULL) - return NULL; + else if (PyUnicode_READY(name) < 0) { + goto error; } - if (pkgstr == NULL) { - pkgstr = PyUnicode_InternFromString("__package__"); - if (pkgstr == NULL) - return NULL; + if (level < 0) { + PyErr_SetString(PyExc_ValueError, "level must be >= 0"); + goto error; } - - pkgname = PyDict_GetItem(globals, pkgstr); - - if ((pkgname != NULL) && (pkgname != Py_None)) { - /* __package__ is set, so use it */ - if (!PyUnicode_Check(pkgname)) { - PyErr_SetString(PyExc_ValueError, - "__package__ set to non-string"); - return NULL; - } - if (PyUnicode_GET_LENGTH(pkgname) == 0) { - if (level > 0) { - PyErr_SetString(PyExc_ValueError, - "Attempted relative import in non-package"); - return NULL; + else if (level > 0) { + package = _PyDict_GetItemId(globals, &PyId___package__); + if (package != NULL && package != Py_None) { + Py_INCREF(package); + if (!PyUnicode_Check(package)) { + PyErr_SetString(PyExc_TypeError, "package must be a string"); + goto error; } - goto return_none; } - Py_INCREF(pkgname); - nameobj = pkgname; - } else { - /* __package__ not set, so figure it out and set it */ - modname = PyDict_GetItem(globals, namestr); - if (modname == NULL || !PyUnicode_Check(modname)) - goto return_none; - - modpath = PyDict_GetItem(globals, pathstr); - if (modpath != NULL) { - /* __path__ is set, so modname is already the package name */ - int error; - - error = PyDict_SetItem(globals, pkgstr, modname); - if (error) { - PyErr_SetString(PyExc_ValueError, - "Could not set __package__"); - return NULL; + else { + package = _PyDict_GetItemIdWithError(globals, &PyId___name__); + if (package == NULL) { + goto error; } - Py_INCREF(modname); - nameobj = modname; - } else { - /* Normal module, so work out the package name if any */ - Py_ssize_t len; - len = PyUnicode_FindChar(modname, '.', - 0, PyUnicode_GET_LENGTH(modname), -1); - if (len == -2) - return NULL; - if (len < 0) { - if (level > 0) { - PyErr_SetString(PyExc_ValueError, - "Attempted relative import in non-package"); - return NULL; + else if (!PyUnicode_Check(package)) { + PyErr_SetString(PyExc_TypeError, "__name__ must be a string"); + } + Py_INCREF(package); + + if (_PyDict_GetItemId(globals, &PyId___path__) == NULL) { + PyObject *borrowed_dot = _PyUnicode_FromId(&single_dot); + if (borrowed_dot == NULL) { + goto error; } - if (PyDict_SetItem(globals, pkgstr, Py_None)) { - PyErr_SetString(PyExc_ValueError, - "Could not set __package__"); - return NULL; + PyObject *partition = PyUnicode_RPartition(package, + borrowed_dot); + Py_DECREF(package); + if (partition == NULL) { + goto error; } - goto return_none; + package = PyTuple_GET_ITEM(partition, 0); + Py_INCREF(package); + Py_DECREF(partition); } - pkgname = PyUnicode_Substring(modname, 0, len); - if (pkgname == NULL) - return NULL; - if (PyDict_SetItem(globals, pkgstr, pkgname)) { - Py_DECREF(pkgname); - PyErr_SetString(PyExc_ValueError, - "Could not set __package__"); - return NULL; - } - nameobj = pkgname; } - } - if (level > 1) { - Py_ssize_t dot, end = PyUnicode_GET_LENGTH(nameobj); - PyObject *newname; - while (--level > 0) { - dot = PyUnicode_FindChar(nameobj, '.', 0, end, -1); - if (dot == -2) { - Py_DECREF(nameobj); - return NULL; - } - if (dot < 0) { - Py_DECREF(nameobj); - PyErr_SetString(PyExc_ValueError, - "Attempted relative import beyond " - "toplevel package"); - return NULL; - } - end = dot; - } - newname = PyUnicode_Substring(nameobj, 0, end); - Py_DECREF(nameobj); - if (newname == NULL) - return NULL; - nameobj = newname; - } - modules = PyImport_GetModuleDict(); - parent = PyDict_GetItem(modules, nameobj); - if (parent == NULL) { - int err; - - if (orig_level >= 1) { + if (PyDict_GetItem(interp->modules, package) == NULL) { PyErr_Format(PyExc_SystemError, - "Parent module %R not loaded, " - "cannot perform relative import", nameobj); - Py_DECREF(nameobj); - return NULL; + "Parent module %R not loaded, cannot perform relative " + "import", package); + goto error; } - - err = PyErr_WarnFormat( - PyExc_RuntimeWarning, 1, - "Parent module %R not found while handling absolute import", - nameobj); - Py_DECREF(nameobj); - if (err) - return NULL; - - goto return_none; } - *p_name = nameobj; - return parent; - /* We expect, but can't guarantee, if parent != None, that: - - parent.__name__ == name - - parent.__dict__ is globals - If this is violated... Who cares? */ - -return_none: - nameobj = PyUnicode_New(0, 0); - if (nameobj == NULL) - return NULL; - *p_name = nameobj; - return Py_None; -} - -/* altmod is either None or same as mod */ -static PyObject * -load_next(PyObject *mod, PyObject *altmod, - PyObject *inputname, PyObject **p_outputname, - PyObject **p_prefix) -{ - Py_ssize_t dot; - Py_ssize_t len; - PyObject *fullname, *name = NULL, *result; - - *p_outputname = NULL; - - len = PyUnicode_GET_LENGTH(inputname); - if (len == 0) { - /* completely empty module name should only happen in - 'from . import' (or '__import__("")')*/ - Py_INCREF(mod); - return mod; + else { /* level == 0 */ + if (PyUnicode_GET_LENGTH(name) == 0) { + PyErr_SetString(PyExc_ValueError, "Empty module name"); + goto error; + } + package = Py_None; + Py_INCREF(package); } + if (level > 0) { + Py_ssize_t last_dot = PyUnicode_GET_LENGTH(package); + PyObject *base = NULL; + int level_up = 1; - dot = PyUnicode_FindChar(inputname, '.', 0, len, 1); - if (dot >= 0) { - len = dot; - if (len == 0) { - PyErr_SetString(PyExc_ValueError, - "Empty module name"); - goto error; + for (level_up = 1; level_up < level; level_up += 1) { + last_dot = PyUnicode_FindChar(package, '.', 0, last_dot, -1); + if (last_dot == -2) { + goto error; + } + else if (last_dot == -1) { + PyErr_SetString(PyExc_ValueError, + "attempted relative import beyond top-level " + "package"); + goto error; + } } - } + base = PyUnicode_Substring(package, 0, last_dot); + if (PyUnicode_GET_LENGTH(name) > 0) { + PyObject *borrowed_dot = NULL; + PyObject *seq = PyTuple_Pack(2, base, name); - /* name = inputname[:len] */ - name = PyUnicode_Substring(inputname, 0, len); - if (name == NULL) - goto error; + borrowed_dot = _PyUnicode_FromId(&single_dot); + if (borrowed_dot == NULL || seq == NULL) { + goto error; + } - if (PyUnicode_GET_LENGTH(*p_prefix)) { - /* fullname = prefix + "." + name */ - fullname = PyUnicode_FromFormat("%U.%U", *p_prefix, name); - if (fullname == NULL) - goto error; - } - else { - fullname = name; - Py_INCREF(fullname); - } - - result = import_submodule(mod, name, fullname); - Py_DECREF(*p_prefix); - /* Transfer reference. */ - *p_prefix = fullname; - if (result == Py_None && altmod != mod) { - Py_DECREF(result); - /* Here, altmod must be None and mod must not be None */ - result = import_submodule(altmod, name, name); - if (result != NULL && result != Py_None) { - if (mark_miss(*p_prefix) != 0) { - Py_DECREF(result); + abs_name = PyUnicode_Join(borrowed_dot, seq); + Py_DECREF(seq); + if (abs_name == NULL) { goto error; } - Py_DECREF(*p_prefix); - *p_prefix = name; - Py_INCREF(*p_prefix); + } + else { + abs_name = base; } } - if (result == NULL) - goto error; - - if (result == Py_None) { - Py_DECREF(result); - PyErr_Format(PyExc_ImportError, - "No module named %R", inputname); - goto error; + else { + abs_name = name; + Py_INCREF(abs_name); } - if (dot >= 0) { - *p_outputname = PyUnicode_Substring(inputname, dot+1, - PyUnicode_GET_LENGTH(inputname)); - if (*p_outputname == NULL) { - Py_DECREF(result); - goto error; +#if WITH_THREAD + _PyImport_AcquireLock(); +#endif + /* From this point forward, goto error_with_unlock! */ + if (PyDict_Check(globals)) { + builtins_import = _PyDict_GetItemId(globals, &PyId___import__); + } + if (builtins_import == NULL) { + builtins_import = _PyDict_GetItemId(interp->builtins, &PyId___import__); + if (builtins_import == NULL) { + Py_FatalError("__import__ missing"); } } + Py_INCREF(builtins_import); - Py_DECREF(name); - return result; - -error: - Py_XDECREF(name); - return NULL; -} + mod = PyDict_GetItem(interp->modules, abs_name); + if (mod == Py_None) { + PyErr_Format(PyExc_ImportError, + "import of %R halted; None in sys.modules", abs_name); + goto error_with_unlock; + } + else if (mod != NULL) { + Py_INCREF(mod); + } + else { + mod = _PyObject_CallMethodObjIdArgs(interp->importlib, + &PyId__find_and_load, abs_name, + builtins_import, NULL); + if (mod == NULL) { + goto error_with_unlock; + } + } -static int -mark_miss(PyObject *name) -{ - PyObject *modules = PyImport_GetModuleDict(); - return PyDict_SetItem(modules, name, Py_None); -} + if (PyObject_Not(fromlist)) { + if (level == 0 || PyUnicode_GET_LENGTH(name) > 0) { + PyObject *front = NULL; + PyObject *borrowed_dot = _PyUnicode_FromId(&single_dot); -static int -ensure_fromlist(PyObject *mod, PyObject *fromlist, PyObject *name, - int recursive) -{ - int i; - PyObject *fullname; - Py_ssize_t fromlist_len; + if (borrowed_dot == NULL) { + goto error_with_unlock; + } - if (!_PyObject_HasAttrId(mod, &PyId___path__)) - return 1; + PyObject *partition = PyUnicode_Partition(name, borrowed_dot); + if (partition == NULL) { + goto error_with_unlock; + } - fromlist_len = PySequence_Size(fromlist); + front = PyTuple_GET_ITEM(partition, 0); + Py_INCREF(front); + Py_DECREF(partition); - for (i = 0; i < fromlist_len; i++) { - PyObject *item = PySequence_GetItem(fromlist, i); - int hasit; - if (item == NULL) - return 0; - if (!PyUnicode_Check(item)) { - PyErr_SetString(PyExc_TypeError, - "Item in ``from list'' not a string"); - Py_DECREF(item); - return 0; - } - if (PyUnicode_READ_CHAR(item, 0) == '*') { - PyObject *all; - _Py_IDENTIFIER(__all__); - Py_DECREF(item); - /* See if the package defines __all__ */ - if (recursive) - continue; /* Avoid endless recursion */ - all = _PyObject_GetAttrId(mod, &PyId___all__); - if (all == NULL) - PyErr_Clear(); + if (level == 0) { + final_mod = PyDict_GetItemWithError(interp->modules, front); + Py_DECREF(front); + Py_XINCREF(final_mod); + } else { - int ret = ensure_fromlist(mod, all, name, 1); - Py_DECREF(all); - if (!ret) - return 0; + Py_ssize_t cut_off = PyUnicode_GetLength(name) - + PyUnicode_GetLength(front); + Py_ssize_t abs_name_len = PyUnicode_GetLength(abs_name); + PyObject *to_return = PyUnicode_Substring(name, 0, + abs_name_len - cut_off); + + final_mod = PyDict_GetItem(interp->modules, to_return); + Py_INCREF(final_mod); + Py_DECREF(to_return); } - continue; } - hasit = PyObject_HasAttr(mod, item); - if (!hasit) { - PyObject *submod; - fullname = PyUnicode_FromFormat("%U.%U", name, item); - if (fullname != NULL) { - submod = import_submodule(mod, item, fullname); - Py_DECREF(fullname); - } - else - submod = NULL; - Py_XDECREF(submod); - if (submod == NULL) { - Py_DECREF(item); - return 0; - } + else { + final_mod = mod; + Py_INCREF(mod); } - Py_DECREF(item); - } - - return 1; -} - -static int -add_submodule(PyObject *mod, PyObject *submod, PyObject *fullname, - PyObject *subname, PyObject *modules) -{ - if (mod == Py_None) - return 1; - /* Irrespective of the success of this load, make a - reference to it in the parent package module. A copy gets - saved in the modules dictionary under the full name, so get a - reference from there, if need be. (The exception is when the - load failed with a SyntaxError -- then there's no trace in - sys.modules. In that case, of course, do nothing extra.) */ - if (submod == NULL) { - submod = PyDict_GetItem(modules, fullname); - if (submod == NULL) - return 1; - } - if (PyModule_Check(mod)) { - /* We can't use setattr here since it can give a - * spurious warning if the submodule name shadows a - * builtin name */ - PyObject *dict = PyModule_GetDict(mod); - if (!dict) - return 0; - if (PyDict_SetItem(dict, subname, submod) < 0) - return 0; } else { - if (PyObject_SetAttr(mod, subname, submod) < 0) - return 0; + final_mod = _PyObject_CallMethodObjIdArgs(interp->importlib, + &PyId__handle_fromlist, mod, + fromlist, builtins_import, + NULL); } - return 1; + error_with_unlock: +#if WITH_THREAD + if (_PyImport_ReleaseLock() < 0) { + PyErr_SetString(PyExc_RuntimeError, "not holding the import lock"); + } +#endif + error: + Py_XDECREF(abs_name); + Py_XDECREF(builtins_import); + Py_XDECREF(mod); + Py_XDECREF(package); + Py_XDECREF(globals); + Py_XDECREF(fromlist); + return final_mod; } -static PyObject * -import_submodule(PyObject *mod, PyObject *subname, PyObject *fullname) +PyObject * +PyImport_ImportModuleLevel(const char *name, PyObject *globals, PyObject *locals, + PyObject *fromlist, int level) { - PyObject *modules = PyImport_GetModuleDict(); - PyObject *m = NULL, *bufobj, *path_list, *loader; - struct filedescr *fdp; - FILE *fp; - - /* Require: - if mod == None: subname == fullname - else: mod.__name__ + "." + subname == fullname - */ - - if ((m = PyDict_GetItem(modules, fullname)) != NULL) { - Py_INCREF(m); - return m; - } - - if (mod == Py_None) - path_list = NULL; - else { - path_list = _PyObject_GetAttrId(mod, &PyId___path__); - if (path_list == NULL) { - PyErr_Clear(); - Py_INCREF(Py_None); - return Py_None; - } - } - - fdp = find_module(fullname, subname, path_list, - &bufobj, &fp, &loader); - Py_XDECREF(path_list); - if (fdp == NULL) { - if (!PyErr_ExceptionMatches(PyExc_ImportError)) - return NULL; - PyErr_Clear(); - Py_INCREF(Py_None); - return Py_None; - } - m = load_module(fullname, fp, bufobj, fdp->type, loader); - Py_XDECREF(bufobj); - Py_XDECREF(loader); - if (fp) - fclose(fp); - if (m == NULL) - return NULL; - if (!add_submodule(mod, m, fullname, subname, modules)) { - Py_XDECREF(m); + PyObject *nameobj, *mod; + nameobj = PyUnicode_FromString(name); + if (nameobj == NULL) return NULL; - } - return m; + mod = PyImport_ImportModuleLevelObject(nameobj, globals, locals, + fromlist, level); + Py_DECREF(nameobj); + return mod; } diff --git a/Python/importdl.c b/Python/importdl.c index 9127d61..734b35f 100644 --- a/Python/importdl.c +++ b/Python/importdl.c @@ -106,10 +106,6 @@ _PyImport_LoadDynamicModule(PyObject *name, PyObject *path, FILE *fp) if (_PyImport_FixupExtensionObject(m, name, path) < 0) goto error; - if (Py_VerboseFlag) - PySys_FormatStderr( - "import %U # dynamically loaded from %R\n", - name, path); Py_DECREF(nameascii); return m; diff --git a/Python/importlib.h b/Python/importlib.h new file mode 100644 index 0000000..109ceac --- /dev/null +++ b/Python/importlib.h @@ -0,0 +1,3087 @@ +/* Auto-generated by Python/freeze_importlib.py */ +unsigned char _Py_M__importlib[] = { + 99,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0, + 0,64,0,0,0,115,239,2,0,0,100,0,0,90,0,0, + 100,99,0,90,1,0,100,4,0,100,5,0,132,0,0,90, + 2,0,100,6,0,100,7,0,132,0,0,90,3,0,100,8, + 0,100,9,0,132,0,0,90,4,0,100,10,0,100,11,0, + 132,0,0,90,5,0,100,12,0,100,13,0,132,0,0,90, + 6,0,100,14,0,100,15,0,132,0,0,90,7,0,100,16, + 0,100,17,0,132,0,0,90,8,0,100,18,0,100,19,0, + 132,0,0,90,9,0,100,20,0,100,21,0,132,0,0,90, + 10,0,100,22,0,100,23,0,132,0,0,90,11,0,100,24, + 0,100,25,0,132,0,0,90,12,0,100,26,0,100,27,0, + 132,0,0,90,13,0,101,14,0,101,13,0,106,15,0,131, + 1,0,90,16,0,100,28,0,100,29,0,132,0,0,90,17, + 0,100,30,0,100,31,0,132,0,0,90,18,0,100,32,0, + 100,33,0,132,0,0,90,19,0,100,34,0,100,35,0,132, + 0,0,90,20,0,100,36,0,100,37,0,132,0,0,90,21, + 0,100,38,0,100,39,0,132,0,0,90,22,0,100,40,0, + 100,41,0,132,0,0,90,23,0,100,42,0,100,43,0,132, + 0,0,90,24,0,71,100,44,0,100,45,0,132,0,0,100, + 45,0,131,2,0,90,25,0,71,100,46,0,100,47,0,132, + 0,0,100,47,0,131,2,0,90,26,0,71,100,48,0,100, + 49,0,132,0,0,100,49,0,131,2,0,90,27,0,71,100, + 50,0,100,51,0,132,0,0,100,51,0,101,27,0,131,3, + 0,90,28,0,71,100,52,0,100,53,0,132,0,0,100,53, + 0,131,2,0,90,29,0,71,100,54,0,100,55,0,132,0, + 0,100,55,0,101,29,0,101,28,0,131,4,0,90,30,0, + 71,100,56,0,100,57,0,132,0,0,100,57,0,101,29,0, + 101,27,0,131,4,0,90,31,0,71,100,58,0,100,59,0, + 132,0,0,100,59,0,131,2,0,90,32,0,71,100,60,0, + 100,61,0,132,0,0,100,61,0,131,2,0,90,33,0,71, + 100,62,0,100,63,0,132,0,0,100,63,0,131,2,0,90, + 34,0,71,100,64,0,100,65,0,132,0,0,100,65,0,131, + 2,0,90,35,0,71,100,66,0,100,67,0,132,0,0,100, + 67,0,131,2,0,90,36,0,71,100,68,0,100,69,0,132, + 0,0,100,69,0,131,2,0,90,37,0,100,70,0,100,71, + 0,132,0,0,90,38,0,101,38,0,90,39,0,71,100,72, + 0,100,73,0,132,0,0,100,73,0,101,33,0,131,3,0, + 90,40,0,71,100,74,0,100,75,0,132,0,0,100,75,0, + 131,2,0,90,41,0,100,76,0,100,77,0,132,0,0,90, + 42,0,100,78,0,100,79,0,132,0,0,90,43,0,100,80, + 0,100,81,0,132,0,0,90,44,0,101,25,0,101,26,0, + 101,40,0,103,3,0,90,45,0,100,82,0,90,46,0,100, + 83,0,100,84,0,132,0,0,90,47,0,100,98,0,100,85, + 0,100,86,0,100,87,0,132,2,0,90,49,0,100,88,0, + 100,89,0,132,0,0,90,50,0,100,90,0,100,91,0,132, + 0,0,90,51,0,105,0,0,105,0,0,103,0,0,100,85, + 0,100,92,0,100,93,0,132,4,0,90,52,0,100,94,0, + 100,95,0,132,0,0,90,53,0,100,96,0,100,97,0,132, + 0,0,90,54,0,100,98,0,83,40,100,0,0,0,117,83, + 1,0,0,67,111,114,101,32,105,109,112,108,101,109,101,110, + 116,97,116,105,111,110,32,111,102,32,105,109,112,111,114,116, + 46,10,10,84,104,105,115,32,109,111,100,117,108,101,32,105, + 115,32,78,79,84,32,109,101,97,110,116,32,116,111,32,98, + 101,32,100,105,114,101,99,116,108,121,32,105,109,112,111,114, + 116,101,100,33,32,73,116,32,104,97,115,32,98,101,101,110, + 32,100,101,115,105,103,110,101,100,32,115,117,99,104,10,116, + 104,97,116,32,105,116,32,99,97,110,32,98,101,32,98,111, + 111,116,115,116,114,97,112,112,101,100,32,105,110,116,111,32, + 80,121,116,104,111,110,32,97,115,32,116,104,101,32,105,109, + 112,108,101,109,101,110,116,97,116,105,111,110,32,111,102,32, + 105,109,112,111,114,116,46,32,65,115,10,115,117,99,104,32, + 105,116,32,114,101,113,117,105,114,101,115,32,116,104,101,32, + 105,110,106,101,99,116,105,111,110,32,111,102,32,115,112,101, + 99,105,102,105,99,32,109,111,100,117,108,101,115,32,97,110, + 100,32,97,116,116,114,105,98,117,116,101,115,32,105,110,32, + 111,114,100,101,114,32,116,111,10,119,111,114,107,46,32,79, + 110,101,32,115,104,111,117,108,100,32,117,115,101,32,105,109, + 112,111,114,116,108,105,98,32,97,115,32,116,104,101,32,112, + 117,98,108,105,99,45,102,97,99,105,110,103,32,118,101,114, + 115,105,111,110,32,111,102,32,116,104,105,115,32,109,111,100, + 117,108,101,46,10,10,117,3,0,0,0,119,105,110,117,6, + 0,0,0,99,121,103,119,105,110,117,6,0,0,0,100,97, + 114,119,105,110,99,0,0,0,0,0,0,0,0,1,0,0, + 0,4,0,0,0,67,0,0,0,115,58,0,0,0,116,0, + 0,116,1,0,116,2,0,106,3,0,106,4,0,116,5,0, + 131,2,0,131,1,0,114,42,0,100,1,0,100,2,0,132, + 0,0,125,0,0,110,12,0,100,3,0,100,2,0,132,0, + 0,125,0,0,124,0,0,83,40,4,0,0,0,78,99,0, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,83, + 0,0,0,115,13,0,0,0,100,1,0,116,0,0,106,1, + 0,107,6,0,83,40,2,0,0,0,117,53,0,0,0,84, + 114,117,101,32,105,102,32,102,105,108,101,110,97,109,101,115, + 32,109,117,115,116,32,98,101,32,99,104,101,99,107,101,100, + 32,99,97,115,101,45,105,110,115,101,110,115,105,116,105,118, + 101,108,121,46,115,12,0,0,0,80,89,84,72,79,78,67, + 65,83,69,79,75,40,2,0,0,0,117,3,0,0,0,95, + 111,115,117,7,0,0,0,101,110,118,105,114,111,110,40,0, + 0,0,0,40,0,0,0,0,40,0,0,0,0,117,29,0, + 0,0,60,102,114,111,122,101,110,32,105,109,112,111,114,116, + 108,105,98,46,95,98,111,111,116,115,116,114,97,112,62,117, + 11,0,0,0,95,114,101,108,97,120,95,99,97,115,101,27, + 0,0,0,115,2,0,0,0,0,2,117,37,0,0,0,95, + 109,97,107,101,95,114,101,108,97,120,95,99,97,115,101,46, + 60,108,111,99,97,108,115,62,46,95,114,101,108,97,120,95, + 99,97,115,101,99,0,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,83,0,0,0,115,4,0,0,0,100,1, + 0,83,40,2,0,0,0,117,53,0,0,0,84,114,117,101, + 32,105,102,32,102,105,108,101,110,97,109,101,115,32,109,117, + 115,116,32,98,101,32,99,104,101,99,107,101,100,32,99,97, + 115,101,45,105,110,115,101,110,115,105,116,105,118,101,108,121, + 46,70,40,1,0,0,0,117,5,0,0,0,70,97,108,115, + 101,40,0,0,0,0,40,0,0,0,0,40,0,0,0,0, + 117,29,0,0,0,60,102,114,111,122,101,110,32,105,109,112, + 111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97, + 112,62,117,11,0,0,0,95,114,101,108,97,120,95,99,97, + 115,101,31,0,0,0,115,2,0,0,0,0,2,40,6,0, + 0,0,117,3,0,0,0,97,110,121,117,3,0,0,0,109, + 97,112,117,3,0,0,0,115,121,115,117,8,0,0,0,112, + 108,97,116,102,111,114,109,117,10,0,0,0,115,116,97,114, + 116,115,119,105,116,104,117,26,0,0,0,67,65,83,69,95, + 73,78,83,69,78,83,73,84,73,86,69,95,80,76,65,84, + 70,79,82,77,83,40,1,0,0,0,117,11,0,0,0,95, + 114,101,108,97,120,95,99,97,115,101,40,0,0,0,0,40, + 0,0,0,0,117,29,0,0,0,60,102,114,111,122,101,110, + 32,105,109,112,111,114,116,108,105,98,46,95,98,111,111,116, + 115,116,114,97,112,62,117,16,0,0,0,95,109,97,107,101, + 95,114,101,108,97,120,95,99,97,115,101,25,0,0,0,115, + 8,0,0,0,0,1,27,1,15,4,12,3,117,16,0,0, + 0,95,109,97,107,101,95,114,101,108,97,120,95,99,97,115, + 101,99,1,0,0,0,0,0,0,0,2,0,0,0,3,0, + 0,0,67,0,0,0,115,108,0,0,0,116,0,0,124,0, + 0,131,1,0,125,0,0,103,0,0,125,1,0,124,1,0, + 106,1,0,124,0,0,100,1,0,64,131,1,0,1,124,1, + 0,106,1,0,124,0,0,100,2,0,63,100,1,0,64,131, + 1,0,1,124,1,0,106,1,0,124,0,0,100,3,0,63, + 100,1,0,64,131,1,0,1,124,1,0,106,1,0,124,0, + 0,100,4,0,63,100,1,0,64,131,1,0,1,116,2,0, + 124,1,0,131,1,0,83,40,5,0,0,0,117,111,0,0, + 0,67,111,110,118,101,114,116,32,97,32,51,50,45,98,105, + 116,32,105,110,116,101,103,101,114,32,116,111,32,108,105,116, + 116,108,101,45,101,110,100,105,97,110,46,10,10,32,32,32, + 32,88,88,88,32,84,101,109,112,111,114,97,114,121,32,117, + 110,116,105,108,32,109,97,114,115,104,97,108,39,115,32,108, + 111,110,103,32,102,117,110,99,116,105,111,110,115,32,97,114, + 101,32,101,120,112,111,115,101,100,46,10,10,32,32,32,32, + 105,255,0,0,0,105,8,0,0,0,105,16,0,0,0,105, + 24,0,0,0,40,3,0,0,0,117,3,0,0,0,105,110, + 116,117,6,0,0,0,97,112,112,101,110,100,117,9,0,0, + 0,98,121,116,101,97,114,114,97,121,40,2,0,0,0,117, + 1,0,0,0,120,117,9,0,0,0,105,110,116,95,98,121, + 116,101,115,40,0,0,0,0,40,0,0,0,0,117,29,0, + 0,0,60,102,114,111,122,101,110,32,105,109,112,111,114,116, + 108,105,98,46,95,98,111,111,116,115,116,114,97,112,62,117, + 7,0,0,0,95,119,95,108,111,110,103,38,0,0,0,115, + 14,0,0,0,0,6,12,1,6,1,17,1,21,1,21,1, + 21,1,117,7,0,0,0,95,119,95,108,111,110,103,99,1, + 0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,67, + 0,0,0,115,68,0,0,0,124,0,0,100,1,0,25,125, + 1,0,124,1,0,124,0,0,100,2,0,25,100,3,0,62, + 79,125,1,0,124,1,0,124,0,0,100,4,0,25,100,5, + 0,62,79,125,1,0,124,1,0,124,0,0,100,6,0,25, + 100,7,0,62,79,125,1,0,124,1,0,83,40,8,0,0, + 0,117,115,0,0,0,67,111,110,118,101,114,116,32,52,32, + 98,121,116,101,115,32,105,110,32,108,105,116,116,108,101,45, + 101,110,100,105,97,110,32,116,111,32,97,110,32,105,110,116, + 101,103,101,114,46,10,10,32,32,32,32,88,88,88,32,84, + 101,109,112,111,114,97,114,121,32,117,110,116,105,108,32,109, + 97,114,115,104,97,108,39,115,32,108,111,110,103,32,102,117, + 110,99,116,105,111,110,32,97,114,101,32,101,120,112,111,115, + 101,100,46,10,10,32,32,32,32,105,0,0,0,0,105,1, + 0,0,0,105,8,0,0,0,105,2,0,0,0,105,16,0, + 0,0,105,3,0,0,0,105,24,0,0,0,40,0,0,0, + 0,40,2,0,0,0,117,9,0,0,0,105,110,116,95,98, + 121,116,101,115,117,1,0,0,0,120,40,0,0,0,0,40, + 0,0,0,0,117,29,0,0,0,60,102,114,111,122,101,110, + 32,105,109,112,111,114,116,108,105,98,46,95,98,111,111,116, + 115,116,114,97,112,62,117,7,0,0,0,95,114,95,108,111, + 110,103,54,0,0,0,115,10,0,0,0,0,6,10,1,18, + 1,18,1,18,1,117,7,0,0,0,95,114,95,108,111,110, + 103,99,0,0,0,0,0,0,0,0,1,0,0,0,3,0, + 0,0,71,0,0,0,115,26,0,0,0,116,0,0,106,1, + 0,100,1,0,100,2,0,132,0,0,124,0,0,68,131,1, + 0,131,1,0,83,40,3,0,0,0,117,29,0,0,0,82, + 101,112,108,97,99,101,109,101,110,116,32,102,111,114,32,111, + 115,46,112,97,116,104,46,106,111,105,110,46,99,1,0,0, + 0,0,0,0,0,2,0,0,0,5,0,0,0,115,0,0, + 0,115,65,0,0,0,124,0,0,93,55,0,125,1,0,124, + 1,0,114,3,0,124,1,0,106,0,0,116,1,0,131,1, + 0,114,53,0,124,1,0,100,0,0,116,2,0,116,1,0, + 131,1,0,11,133,2,0,25,110,3,0,124,1,0,86,1, + 113,3,0,100,0,0,83,40,1,0,0,0,78,40,3,0, + 0,0,117,8,0,0,0,101,110,100,115,119,105,116,104,117, + 8,0,0,0,112,97,116,104,95,115,101,112,117,3,0,0, + 0,108,101,110,40,2,0,0,0,117,2,0,0,0,46,48, + 117,1,0,0,0,120,40,0,0,0,0,40,0,0,0,0, + 117,29,0,0,0,60,102,114,111,122,101,110,32,105,109,112, + 111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97, + 112,62,117,9,0,0,0,60,103,101,110,101,120,112,114,62, + 71,0,0,0,115,2,0,0,0,6,1,117,29,0,0,0, + 95,112,97,116,104,95,106,111,105,110,46,60,108,111,99,97, + 108,115,62,46,60,103,101,110,101,120,112,114,62,40,2,0, + 0,0,117,8,0,0,0,112,97,116,104,95,115,101,112,117, + 4,0,0,0,106,111,105,110,40,1,0,0,0,117,4,0, + 0,0,97,114,103,115,40,0,0,0,0,40,0,0,0,0, + 117,29,0,0,0,60,102,114,111,122,101,110,32,105,109,112, + 111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97, + 112,62,117,10,0,0,0,95,112,97,116,104,95,106,111,105, + 110,69,0,0,0,115,4,0,0,0,0,2,15,1,117,10, + 0,0,0,95,112,97,116,104,95,106,111,105,110,99,1,0, + 0,0,0,0,0,0,1,0,0,0,11,0,0,0,67,0, + 0,0,115,50,0,0,0,121,17,0,116,0,0,106,1,0, + 124,0,0,131,1,0,1,87,110,22,0,4,116,2,0,107, + 10,0,114,41,0,1,1,1,100,2,0,83,89,110,5,0, + 88,100,3,0,83,100,1,0,83,40,4,0,0,0,117,31, + 0,0,0,82,101,112,108,97,99,101,109,101,110,116,32,102, + 111,114,32,111,115,46,112,97,116,104,46,101,120,105,115,116, + 115,46,78,70,84,40,5,0,0,0,117,3,0,0,0,95, + 111,115,117,4,0,0,0,115,116,97,116,117,7,0,0,0, + 79,83,69,114,114,111,114,117,5,0,0,0,70,97,108,115, + 101,117,4,0,0,0,84,114,117,101,40,1,0,0,0,117, + 4,0,0,0,112,97,116,104,40,0,0,0,0,40,0,0, + 0,0,117,29,0,0,0,60,102,114,111,122,101,110,32,105, + 109,112,111,114,116,108,105,98,46,95,98,111,111,116,115,116, + 114,97,112,62,117,12,0,0,0,95,112,97,116,104,95,101, + 120,105,115,116,115,75,0,0,0,115,10,0,0,0,0,2, + 3,1,17,1,13,1,9,2,117,12,0,0,0,95,112,97, + 116,104,95,101,120,105,115,116,115,99,2,0,0,0,0,0, + 0,0,3,0,0,0,11,0,0,0,67,0,0,0,115,61, + 0,0,0,121,19,0,116,0,0,106,1,0,124,0,0,131, + 1,0,125,2,0,87,110,22,0,4,116,2,0,107,10,0, + 114,43,0,1,1,1,100,2,0,83,89,110,1,0,88,124, + 2,0,106,4,0,100,1,0,64,124,1,0,107,2,0,83, + 40,3,0,0,0,117,49,0,0,0,84,101,115,116,32,119, + 104,101,116,104,101,114,32,116,104,101,32,112,97,116,104,32, + 105,115,32,116,104,101,32,115,112,101,99,105,102,105,101,100, + 32,109,111,100,101,32,116,121,112,101,46,105,0,240,0,0, + 70,40,5,0,0,0,117,3,0,0,0,95,111,115,117,4, + 0,0,0,115,116,97,116,117,7,0,0,0,79,83,69,114, + 114,111,114,117,5,0,0,0,70,97,108,115,101,117,7,0, + 0,0,115,116,95,109,111,100,101,40,3,0,0,0,117,4, + 0,0,0,112,97,116,104,117,4,0,0,0,109,111,100,101, + 117,9,0,0,0,115,116,97,116,95,105,110,102,111,40,0, + 0,0,0,40,0,0,0,0,117,29,0,0,0,60,102,114, + 111,122,101,110,32,105,109,112,111,114,116,108,105,98,46,95, + 98,111,111,116,115,116,114,97,112,62,117,18,0,0,0,95, + 112,97,116,104,95,105,115,95,109,111,100,101,95,116,121,112, + 101,85,0,0,0,115,10,0,0,0,0,2,3,1,19,1, + 13,1,9,1,117,18,0,0,0,95,112,97,116,104,95,105, + 115,95,109,111,100,101,95,116,121,112,101,99,1,0,0,0, + 0,0,0,0,1,0,0,0,3,0,0,0,67,0,0,0, + 115,13,0,0,0,116,0,0,124,0,0,100,1,0,131,2, + 0,83,40,2,0,0,0,117,31,0,0,0,82,101,112,108, + 97,99,101,109,101,110,116,32,102,111,114,32,111,115,46,112, + 97,116,104,46,105,115,102,105,108,101,46,105,0,128,0,0, + 40,1,0,0,0,117,18,0,0,0,95,112,97,116,104,95, + 105,115,95,109,111,100,101,95,116,121,112,101,40,1,0,0, + 0,117,4,0,0,0,112,97,116,104,40,0,0,0,0,40, + 0,0,0,0,117,29,0,0,0,60,102,114,111,122,101,110, + 32,105,109,112,111,114,116,108,105,98,46,95,98,111,111,116, + 115,116,114,97,112,62,117,12,0,0,0,95,112,97,116,104, + 95,105,115,102,105,108,101,95,0,0,0,115,2,0,0,0, + 0,2,117,12,0,0,0,95,112,97,116,104,95,105,115,102, + 105,108,101,99,1,0,0,0,0,0,0,0,1,0,0,0, + 3,0,0,0,67,0,0,0,115,34,0,0,0,124,0,0, + 115,21,0,116,0,0,106,1,0,131,0,0,125,0,0,110, + 0,0,116,2,0,124,0,0,100,1,0,131,2,0,83,40, + 2,0,0,0,117,30,0,0,0,82,101,112,108,97,99,101, + 109,101,110,116,32,102,111,114,32,111,115,46,112,97,116,104, + 46,105,115,100,105,114,46,105,0,64,0,0,40,3,0,0, + 0,117,3,0,0,0,95,111,115,117,6,0,0,0,103,101, + 116,99,119,100,117,18,0,0,0,95,112,97,116,104,95,105, + 115,95,109,111,100,101,95,116,121,112,101,40,1,0,0,0, + 117,4,0,0,0,112,97,116,104,40,0,0,0,0,40,0, + 0,0,0,117,29,0,0,0,60,102,114,111,122,101,110,32, + 105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, + 116,114,97,112,62,117,11,0,0,0,95,112,97,116,104,95, + 105,115,100,105,114,101,0,0,0,115,6,0,0,0,0,2, + 6,1,15,1,117,11,0,0,0,95,112,97,116,104,95,105, + 115,100,105,114,99,2,0,0,0,0,0,0,0,3,0,0, + 0,5,0,0,0,67,0,0,0,115,75,0,0,0,120,68, + 0,116,0,0,124,1,0,131,1,0,68,93,42,0,125,2, + 0,124,0,0,106,1,0,124,2,0,131,1,0,114,13,0, + 124,0,0,100,1,0,116,2,0,124,2,0,131,1,0,11, + 133,2,0,25,83,113,13,0,87,116,3,0,100,2,0,131, + 1,0,130,1,0,100,1,0,83,40,3,0,0,0,117,38, + 0,0,0,82,101,112,108,97,99,101,109,101,110,116,32,102, + 111,114,32,111,115,46,112,97,116,104,46,115,112,108,105,116, + 101,120,116,40,41,91,48,93,46,78,117,33,0,0,0,112, + 97,116,104,32,105,115,32,110,111,116,32,111,102,32,116,104, + 101,32,115,112,101,99,105,102,105,101,100,32,116,121,112,101, + 40,4,0,0,0,117,12,0,0,0,95,115,117,102,102,105, + 120,95,108,105,115,116,117,8,0,0,0,101,110,100,115,119, + 105,116,104,117,3,0,0,0,108,101,110,117,10,0,0,0, + 86,97,108,117,101,69,114,114,111,114,40,3,0,0,0,117, + 4,0,0,0,112,97,116,104,117,8,0,0,0,101,120,116, + 95,116,121,112,101,117,6,0,0,0,115,117,102,102,105,120, + 40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,60, + 102,114,111,122,101,110,32,105,109,112,111,114,116,108,105,98, + 46,95,98,111,111,116,115,116,114,97,112,62,117,17,0,0, + 0,95,112,97,116,104,95,119,105,116,104,111,117,116,95,101, + 120,116,108,0,0,0,115,8,0,0,0,0,2,19,1,15, + 1,25,2,117,17,0,0,0,95,112,97,116,104,95,119,105, + 116,104,111,117,116,95,101,120,116,99,1,0,0,0,0,0, + 0,0,1,0,0,0,11,0,0,0,67,0,0,0,115,101, + 0,0,0,124,0,0,115,21,0,116,0,0,106,1,0,131, + 0,0,125,0,0,110,0,0,121,17,0,116,0,0,106,2, + 0,124,0,0,131,1,0,83,87,110,56,0,4,116,3,0, + 107,10,0,114,96,0,1,1,1,124,0,0,106,4,0,100, + 1,0,131,1,0,114,73,0,124,0,0,83,116,5,0,116, + 0,0,106,1,0,131,0,0,124,0,0,131,2,0,83,89, + 110,1,0,88,100,2,0,83,40,3,0,0,0,117,32,0, + 0,0,82,101,112,108,97,99,101,109,101,110,116,32,102,111, + 114,32,111,115,46,112,97,116,104,46,97,98,115,112,97,116, + 104,46,117,1,0,0,0,47,78,40,6,0,0,0,117,3, + 0,0,0,95,111,115,117,6,0,0,0,103,101,116,99,119, + 100,117,16,0,0,0,95,103,101,116,102,117,108,108,112,97, + 116,104,110,97,109,101,117,14,0,0,0,65,116,116,114,105, + 98,117,116,101,69,114,114,111,114,117,10,0,0,0,115,116, + 97,114,116,115,119,105,116,104,117,10,0,0,0,95,112,97, + 116,104,95,106,111,105,110,40,1,0,0,0,117,4,0,0, + 0,112,97,116,104,40,0,0,0,0,40,0,0,0,0,117, + 29,0,0,0,60,102,114,111,122,101,110,32,105,109,112,111, + 114,116,108,105,98,46,95,98,111,111,116,115,116,114,97,112, + 62,117,14,0,0,0,95,112,97,116,104,95,97,98,115,111, + 108,117,116,101,117,0,0,0,115,16,0,0,0,0,2,6, + 1,15,1,3,1,17,1,13,1,15,1,4,2,117,14,0, + 0,0,95,112,97,116,104,95,97,98,115,111,108,117,116,101, + 99,2,0,0,0,0,0,0,0,5,0,0,0,17,0,0, + 0,67,0,0,0,115,188,0,0,0,100,1,0,106,0,0, + 124,0,0,116,1,0,124,0,0,131,1,0,131,2,0,125, + 2,0,116,2,0,106,3,0,124,2,0,116,2,0,106,4, + 0,116,2,0,106,5,0,66,116,2,0,106,6,0,66,100, + 2,0,131,3,0,125,3,0,121,60,0,116,7,0,106,8, + 0,124,3,0,100,3,0,131,2,0,143,20,0,125,4,0, + 124,4,0,106,9,0,124,1,0,131,1,0,1,87,100,4, + 0,81,88,116,2,0,106,10,0,124,2,0,124,0,0,131, + 2,0,1,87,110,59,0,4,116,11,0,107,10,0,114,183, + 0,1,1,1,121,17,0,116,2,0,106,12,0,124,2,0, + 131,1,0,1,87,110,18,0,4,116,11,0,107,10,0,114, + 175,0,1,1,1,89,110,1,0,88,130,0,0,89,110,1, + 0,88,100,4,0,83,40,5,0,0,0,117,162,0,0,0, + 66,101,115,116,45,101,102,102,111,114,116,32,102,117,110,99, + 116,105,111,110,32,116,111,32,119,114,105,116,101,32,100,97, + 116,97,32,116,111,32,97,32,112,97,116,104,32,97,116,111, + 109,105,99,97,108,108,121,46,10,32,32,32,32,66,101,32, + 112,114,101,112,97,114,101,100,32,116,111,32,104,97,110,100, + 108,101,32,97,32,70,105,108,101,69,120,105,115,116,115,69, + 114,114,111,114,32,105,102,32,99,111,110,99,117,114,114,101, + 110,116,32,119,114,105,116,105,110,103,32,111,102,32,116,104, + 101,10,32,32,32,32,116,101,109,112,111,114,97,114,121,32, + 102,105,108,101,32,105,115,32,97,116,116,101,109,112,116,101, + 100,46,117,5,0,0,0,123,125,46,123,125,105,182,1,0, + 0,117,2,0,0,0,119,98,78,40,13,0,0,0,117,6, + 0,0,0,102,111,114,109,97,116,117,2,0,0,0,105,100, + 117,3,0,0,0,95,111,115,117,4,0,0,0,111,112,101, + 110,117,6,0,0,0,79,95,69,88,67,76,117,7,0,0, + 0,79,95,67,82,69,65,84,117,8,0,0,0,79,95,87, + 82,79,78,76,89,117,3,0,0,0,95,105,111,117,6,0, + 0,0,70,105,108,101,73,79,117,5,0,0,0,119,114,105, + 116,101,117,7,0,0,0,114,101,112,108,97,99,101,117,7, + 0,0,0,79,83,69,114,114,111,114,117,6,0,0,0,117, + 110,108,105,110,107,40,5,0,0,0,117,4,0,0,0,112, + 97,116,104,117,4,0,0,0,100,97,116,97,117,8,0,0, + 0,112,97,116,104,95,116,109,112,117,2,0,0,0,102,100, + 117,4,0,0,0,102,105,108,101,40,0,0,0,0,40,0, + 0,0,0,117,29,0,0,0,60,102,114,111,122,101,110,32, + 105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, + 116,114,97,112,62,117,13,0,0,0,95,119,114,105,116,101, + 95,97,116,111,109,105,99,130,0,0,0,115,24,0,0,0, + 0,5,24,1,38,1,3,3,21,1,19,1,20,1,13,1, + 3,1,17,1,13,1,5,1,117,13,0,0,0,95,119,114, + 105,116,101,95,97,116,111,109,105,99,99,2,0,0,0,0, + 0,0,0,3,0,0,0,7,0,0,0,67,0,0,0,115, + 95,0,0,0,120,69,0,100,1,0,100,2,0,100,3,0, + 100,4,0,103,4,0,68,93,49,0,125,2,0,116,0,0, + 124,1,0,124,2,0,131,2,0,114,19,0,116,1,0,124, + 0,0,124,2,0,116,2,0,124,1,0,124,2,0,131,2, + 0,131,3,0,1,113,19,0,113,19,0,87,124,0,0,106, + 3,0,106,4,0,124,1,0,106,3,0,131,1,0,1,100, + 5,0,83,40,6,0,0,0,117,38,0,0,0,83,105,109, + 112,108,101,32,115,117,98,115,116,105,116,117,116,101,32,102, + 111,114,32,102,117,110,99,116,111,111,108,115,46,119,114,97, + 112,115,46,117,10,0,0,0,95,95,109,111,100,117,108,101, + 95,95,117,8,0,0,0,95,95,110,97,109,101,95,95,117, + 12,0,0,0,95,95,113,117,97,108,110,97,109,101,95,95, + 117,7,0,0,0,95,95,100,111,99,95,95,78,40,5,0, + 0,0,117,7,0,0,0,104,97,115,97,116,116,114,117,7, + 0,0,0,115,101,116,97,116,116,114,117,7,0,0,0,103, + 101,116,97,116,116,114,117,8,0,0,0,95,95,100,105,99, + 116,95,95,117,6,0,0,0,117,112,100,97,116,101,40,3, + 0,0,0,117,3,0,0,0,110,101,119,117,3,0,0,0, + 111,108,100,117,7,0,0,0,114,101,112,108,97,99,101,40, + 0,0,0,0,40,0,0,0,0,117,29,0,0,0,60,102, + 114,111,122,101,110,32,105,109,112,111,114,116,108,105,98,46, + 95,98,111,111,116,115,116,114,97,112,62,117,5,0,0,0, + 95,119,114,97,112,151,0,0,0,115,8,0,0,0,0,2, + 25,1,15,1,32,1,117,5,0,0,0,95,119,114,97,112, + 99,1,0,0,0,0,0,0,0,2,0,0,0,5,0,0, + 0,71,0,0,0,115,92,0,0,0,116,0,0,106,1,0, + 106,2,0,114,88,0,124,0,0,106,3,0,100,1,0,131, + 1,0,12,114,57,0,124,0,0,106,3,0,100,2,0,131, + 1,0,12,114,57,0,100,3,0,124,0,0,23,125,0,0, + 110,0,0,116,4,0,124,0,0,106,5,0,124,1,0,140, + 0,0,100,4,0,116,0,0,106,6,0,131,1,1,1,110, + 0,0,100,5,0,83,40,6,0,0,0,117,61,0,0,0, + 80,114,105,110,116,32,116,104,101,32,109,101,115,115,97,103, + 101,32,116,111,32,115,116,100,101,114,114,32,105,102,32,45, + 118,47,80,89,84,72,79,78,86,69,82,66,79,83,69,32, + 105,115,32,116,117,114,110,101,100,32,111,110,46,117,1,0, + 0,0,35,117,7,0,0,0,105,109,112,111,114,116,32,117, + 2,0,0,0,35,32,117,4,0,0,0,102,105,108,101,78, + 40,7,0,0,0,117,3,0,0,0,115,121,115,117,5,0, + 0,0,102,108,97,103,115,117,7,0,0,0,118,101,114,98, + 111,115,101,117,10,0,0,0,115,116,97,114,116,115,119,105, + 116,104,117,5,0,0,0,112,114,105,110,116,117,6,0,0, + 0,102,111,114,109,97,116,117,6,0,0,0,115,116,100,101, + 114,114,40,2,0,0,0,117,7,0,0,0,109,101,115,115, + 97,103,101,117,4,0,0,0,97,114,103,115,40,0,0,0, + 0,40,0,0,0,0,117,29,0,0,0,60,102,114,111,122, + 101,110,32,105,109,112,111,114,116,108,105,98,46,95,98,111, + 111,116,115,116,114,97,112,62,117,15,0,0,0,118,101,114, + 98,111,115,101,95,109,101,115,115,97,103,101,163,0,0,0, + 115,8,0,0,0,0,2,12,1,32,1,13,1,117,15,0, + 0,0,118,101,114,98,111,115,101,95,109,101,115,115,97,103, + 101,99,1,0,0,0,0,0,0,0,2,0,0,0,3,0, + 0,0,3,0,0,0,115,35,0,0,0,135,0,0,102,1, + 0,100,1,0,100,2,0,134,0,0,125,1,0,116,0,0, + 124,1,0,136,0,0,131,2,0,1,124,1,0,83,40,3, + 0,0,0,117,39,0,0,0,83,101,116,32,95,95,112,97, + 99,107,97,103,101,95,95,32,111,110,32,116,104,101,32,114, + 101,116,117,114,110,101,100,32,109,111,100,117,108,101,46,99, + 0,0,0,0,0,0,0,0,3,0,0,0,4,0,0,0, + 31,0,0,0,115,108,0,0,0,136,0,0,124,0,0,124, + 1,0,142,0,0,125,2,0,116,0,0,124,2,0,100,1, + 0,131,2,0,12,115,46,0,124,2,0,106,1,0,100,0, + 0,107,8,0,114,104,0,124,2,0,106,3,0,124,2,0, + 95,1,0,116,0,0,124,2,0,100,2,0,131,2,0,115, + 104,0,124,2,0,106,1,0,106,4,0,100,3,0,131,1, + 0,100,4,0,25,124,2,0,95,1,0,113,104,0,110,0, + 0,124,2,0,83,40,5,0,0,0,78,117,11,0,0,0, + 95,95,112,97,99,107,97,103,101,95,95,117,8,0,0,0, + 95,95,112,97,116,104,95,95,117,1,0,0,0,46,105,0, + 0,0,0,40,5,0,0,0,117,7,0,0,0,104,97,115, + 97,116,116,114,117,11,0,0,0,95,95,112,97,99,107,97, + 103,101,95,95,117,4,0,0,0,78,111,110,101,117,8,0, + 0,0,95,95,110,97,109,101,95,95,117,10,0,0,0,114, + 112,97,114,116,105,116,105,111,110,40,3,0,0,0,117,4, + 0,0,0,97,114,103,115,117,6,0,0,0,107,119,97,114, + 103,115,117,6,0,0,0,109,111,100,117,108,101,40,1,0, + 0,0,117,3,0,0,0,102,120,110,40,0,0,0,0,117, + 29,0,0,0,60,102,114,111,122,101,110,32,105,109,112,111, + 114,116,108,105,98,46,95,98,111,111,116,115,116,114,97,112, + 62,117,19,0,0,0,115,101,116,95,112,97,99,107,97,103, + 101,95,119,114,97,112,112,101,114,173,0,0,0,115,12,0, + 0,0,0,1,15,1,31,1,12,1,15,1,31,1,117,40, + 0,0,0,115,101,116,95,112,97,99,107,97,103,101,46,60, + 108,111,99,97,108,115,62,46,115,101,116,95,112,97,99,107, + 97,103,101,95,119,114,97,112,112,101,114,40,1,0,0,0, + 117,5,0,0,0,95,119,114,97,112,40,2,0,0,0,117, + 3,0,0,0,102,120,110,117,19,0,0,0,115,101,116,95, + 112,97,99,107,97,103,101,95,119,114,97,112,112,101,114,40, + 0,0,0,0,40,1,0,0,0,117,3,0,0,0,102,120, + 110,117,29,0,0,0,60,102,114,111,122,101,110,32,105,109, + 112,111,114,116,108,105,98,46,95,98,111,111,116,115,116,114, + 97,112,62,117,11,0,0,0,115,101,116,95,112,97,99,107, + 97,103,101,171,0,0,0,115,6,0,0,0,0,2,18,7, + 13,1,117,11,0,0,0,115,101,116,95,112,97,99,107,97, + 103,101,99,1,0,0,0,0,0,0,0,2,0,0,0,3, + 0,0,0,3,0,0,0,115,35,0,0,0,135,0,0,102, + 1,0,100,1,0,100,2,0,134,0,0,125,1,0,116,0, + 0,124,1,0,136,0,0,131,2,0,1,124,1,0,83,40, + 3,0,0,0,117,38,0,0,0,83,101,116,32,95,95,108, + 111,97,100,101,114,95,95,32,111,110,32,116,104,101,32,114, + 101,116,117,114,110,101,100,32,109,111,100,117,108,101,46,99, + 1,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0, + 31,0,0,0,115,49,0,0,0,136,0,0,124,0,0,124, + 1,0,124,2,0,142,1,0,125,3,0,116,0,0,124,3, + 0,100,1,0,131,2,0,115,45,0,124,0,0,124,3,0, + 95,1,0,110,0,0,124,3,0,83,40,2,0,0,0,78, + 117,10,0,0,0,95,95,108,111,97,100,101,114,95,95,40, + 2,0,0,0,117,7,0,0,0,104,97,115,97,116,116,114, + 117,10,0,0,0,95,95,108,111,97,100,101,114,95,95,40, + 4,0,0,0,117,4,0,0,0,115,101,108,102,117,4,0, + 0,0,97,114,103,115,117,6,0,0,0,107,119,97,114,103, + 115,117,6,0,0,0,109,111,100,117,108,101,40,1,0,0, + 0,117,3,0,0,0,102,120,110,40,0,0,0,0,117,29, + 0,0,0,60,102,114,111,122,101,110,32,105,109,112,111,114, + 116,108,105,98,46,95,98,111,111,116,115,116,114,97,112,62, + 117,18,0,0,0,115,101,116,95,108,111,97,100,101,114,95, + 119,114,97,112,112,101,114,186,0,0,0,115,8,0,0,0, + 0,1,18,1,15,1,12,1,117,38,0,0,0,115,101,116, + 95,108,111,97,100,101,114,46,60,108,111,99,97,108,115,62, + 46,115,101,116,95,108,111,97,100,101,114,95,119,114,97,112, + 112,101,114,40,1,0,0,0,117,5,0,0,0,95,119,114, + 97,112,40,2,0,0,0,117,3,0,0,0,102,120,110,117, + 18,0,0,0,115,101,116,95,108,111,97,100,101,114,95,119, + 114,97,112,112,101,114,40,0,0,0,0,40,1,0,0,0, + 117,3,0,0,0,102,120,110,117,29,0,0,0,60,102,114, + 111,122,101,110,32,105,109,112,111,114,116,108,105,98,46,95, + 98,111,111,116,115,116,114,97,112,62,117,10,0,0,0,115, + 101,116,95,108,111,97,100,101,114,184,0,0,0,115,6,0, + 0,0,0,2,18,5,13,1,117,10,0,0,0,115,101,116, + 95,108,111,97,100,101,114,99,1,0,0,0,0,0,0,0, + 2,0,0,0,3,0,0,0,3,0,0,0,115,35,0,0, + 0,135,0,0,102,1,0,100,1,0,100,2,0,134,0,0, + 125,1,0,116,0,0,124,1,0,136,0,0,131,2,0,1, + 124,1,0,83,40,3,0,0,0,117,28,2,0,0,68,101, + 99,111,114,97,116,111,114,32,116,111,32,104,97,110,100,108, + 101,32,115,101,108,101,99,116,105,110,103,32,116,104,101,32, + 112,114,111,112,101,114,32,109,111,100,117,108,101,32,102,111, + 114,32,108,111,97,100,101,114,115,46,10,10,32,32,32,32, + 84,104,101,32,100,101,99,111,114,97,116,101,100,32,102,117, + 110,99,116,105,111,110,32,105,115,32,112,97,115,115,101,100, + 32,116,104,101,32,109,111,100,117,108,101,32,116,111,32,117, + 115,101,32,105,110,115,116,101,97,100,32,111,102,32,116,104, + 101,32,109,111,100,117,108,101,10,32,32,32,32,110,97,109, + 101,46,32,84,104,101,32,109,111,100,117,108,101,32,112,97, + 115,115,101,100,32,105,110,32,116,111,32,116,104,101,32,102, + 117,110,99,116,105,111,110,32,105,115,32,101,105,116,104,101, + 114,32,102,114,111,109,32,115,121,115,46,109,111,100,117,108, + 101,115,32,105,102,10,32,32,32,32,105,116,32,97,108,114, + 101,97,100,121,32,101,120,105,115,116,115,32,111,114,32,105, + 115,32,97,32,110,101,119,32,109,111,100,117,108,101,32,119, + 104,105,99,104,32,104,97,115,32,95,95,110,97,109,101,95, + 95,32,115,101,116,32,97,110,100,32,105,115,32,105,110,115, + 101,114,116,101,100,10,32,32,32,32,105,110,116,111,32,115, + 121,115,46,109,111,100,117,108,101,115,46,32,73,102,32,97, + 110,32,101,120,99,101,112,116,105,111,110,32,105,115,32,114, + 97,105,115,101,100,32,97,110,100,32,116,104,101,32,100,101, + 99,111,114,97,116,111,114,32,99,114,101,97,116,101,100,32, + 116,104,101,10,32,32,32,32,109,111,100,117,108,101,32,105, + 116,32,105,115,32,115,117,98,115,101,113,117,101,110,116,108, + 121,32,114,101,109,111,118,101,100,32,102,114,111,109,32,115, + 121,115,46,109,111,100,117,108,101,115,46,10,10,32,32,32, + 32,84,104,101,32,100,101,99,111,114,97,116,111,114,32,97, + 115,115,117,109,101,115,32,116,104,97,116,32,116,104,101,32, + 100,101,99,111,114,97,116,101,100,32,102,117,110,99,116,105, + 111,110,32,116,97,107,101,115,32,116,104,101,32,109,111,100, + 117,108,101,32,110,97,109,101,32,97,115,10,32,32,32,32, + 116,104,101,32,115,101,99,111,110,100,32,97,114,103,117,109, + 101,110,116,46,10,10,32,32,32,32,99,2,0,0,0,0, + 0,0,0,6,0,0,0,11,0,0,0,31,0,0,0,115, + 127,0,0,0,116,0,0,106,1,0,106,2,0,124,1,0, + 131,1,0,125,4,0,116,3,0,124,4,0,131,1,0,125, + 5,0,124,5,0,115,67,0,116,4,0,106,5,0,124,1, + 0,131,1,0,125,4,0,124,4,0,116,0,0,106,1,0, + 124,1,0,60,110,0,0,121,23,0,136,0,0,124,0,0, + 124,4,0,124,2,0,124,3,0,142,2,0,83,87,110,30, + 0,1,1,1,124,5,0,115,115,0,116,0,0,106,1,0, + 124,1,0,61,110,0,0,130,0,0,89,110,1,0,88,100, + 0,0,83,40,1,0,0,0,78,40,6,0,0,0,117,3, + 0,0,0,115,121,115,117,7,0,0,0,109,111,100,117,108, + 101,115,117,3,0,0,0,103,101,116,117,4,0,0,0,98, + 111,111,108,117,3,0,0,0,105,109,112,117,10,0,0,0, + 110,101,119,95,109,111,100,117,108,101,40,6,0,0,0,117, + 4,0,0,0,115,101,108,102,117,8,0,0,0,102,117,108, + 108,110,97,109,101,117,4,0,0,0,97,114,103,115,117,6, + 0,0,0,107,119,97,114,103,115,117,6,0,0,0,109,111, + 100,117,108,101,117,9,0,0,0,105,115,95,114,101,108,111, + 97,100,40,1,0,0,0,117,3,0,0,0,102,120,110,40, + 0,0,0,0,117,29,0,0,0,60,102,114,111,122,101,110, + 32,105,109,112,111,114,116,108,105,98,46,95,98,111,111,116, + 115,116,114,97,112,62,117,25,0,0,0,109,111,100,117,108, + 101,95,102,111,114,95,108,111,97,100,101,114,95,119,114,97, + 112,112,101,114,208,0,0,0,115,22,0,0,0,0,1,18, + 1,12,1,6,4,15,1,16,1,3,1,23,1,3,1,6, + 1,13,1,117,52,0,0,0,109,111,100,117,108,101,95,102, + 111,114,95,108,111,97,100,101,114,46,60,108,111,99,97,108, + 115,62,46,109,111,100,117,108,101,95,102,111,114,95,108,111, + 97,100,101,114,95,119,114,97,112,112,101,114,40,1,0,0, + 0,117,5,0,0,0,95,119,114,97,112,40,2,0,0,0, + 117,3,0,0,0,102,120,110,117,25,0,0,0,109,111,100, + 117,108,101,95,102,111,114,95,108,111,97,100,101,114,95,119, + 114,97,112,112,101,114,40,0,0,0,0,40,1,0,0,0, + 117,3,0,0,0,102,120,110,117,29,0,0,0,60,102,114, + 111,122,101,110,32,105,109,112,111,114,116,108,105,98,46,95, + 98,111,111,116,115,116,114,97,112,62,117,17,0,0,0,109, + 111,100,117,108,101,95,102,111,114,95,108,111,97,100,101,114, + 195,0,0,0,115,6,0,0,0,0,13,18,15,13,1,117, + 17,0,0,0,109,111,100,117,108,101,95,102,111,114,95,108, + 111,97,100,101,114,99,1,0,0,0,0,0,0,0,2,0, + 0,0,3,0,0,0,3,0,0,0,115,35,0,0,0,135, + 0,0,102,1,0,100,1,0,100,2,0,134,0,0,125,1, + 0,116,0,0,124,1,0,136,0,0,131,2,0,1,124,1, + 0,83,40,3,0,0,0,117,252,0,0,0,68,101,99,111, + 114,97,116,111,114,32,116,111,32,118,101,114,105,102,121,32, + 116,104,97,116,32,116,104,101,32,109,111,100,117,108,101,32, + 98,101,105,110,103,32,114,101,113,117,101,115,116,101,100,32, + 109,97,116,99,104,101,115,32,116,104,101,32,111,110,101,32, + 116,104,101,10,32,32,32,32,108,111,97,100,101,114,32,99, + 97,110,32,104,97,110,100,108,101,46,10,10,32,32,32,32, + 84,104,101,32,102,105,114,115,116,32,97,114,103,117,109,101, + 110,116,32,40,115,101,108,102,41,32,109,117,115,116,32,100, + 101,102,105,110,101,32,95,110,97,109,101,32,119,104,105,99, + 104,32,116,104,101,32,115,101,99,111,110,100,32,97,114,103, + 117,109,101,110,116,32,105,115,10,32,32,32,32,99,111,109, + 112,97,114,101,100,32,97,103,97,105,110,115,116,46,32,73, + 102,32,116,104,101,32,99,111,109,112,97,114,105,115,111,110, + 32,102,97,105,108,115,32,116,104,101,110,32,73,109,112,111, + 114,116,69,114,114,111,114,32,105,115,32,114,97,105,115,101, + 100,46,10,10,32,32,32,32,99,2,0,0,0,0,0,0, + 0,4,0,0,0,5,0,0,0,31,0,0,0,115,59,0, + 0,0,124,0,0,106,0,0,124,1,0,107,3,0,114,40, + 0,116,1,0,100,1,0,124,1,0,22,100,2,0,124,1, + 0,131,1,1,130,1,0,110,0,0,136,0,0,124,0,0, + 124,1,0,124,2,0,124,3,0,142,2,0,83,40,3,0, + 0,0,78,117,23,0,0,0,108,111,97,100,101,114,32,99, + 97,110,110,111,116,32,104,97,110,100,108,101,32,37,115,117, + 4,0,0,0,110,97,109,101,40,2,0,0,0,117,5,0, + 0,0,95,110,97,109,101,117,11,0,0,0,73,109,112,111, + 114,116,69,114,114,111,114,40,4,0,0,0,117,4,0,0, + 0,115,101,108,102,117,4,0,0,0,110,97,109,101,117,4, + 0,0,0,97,114,103,115,117,6,0,0,0,107,119,97,114, + 103,115,40,1,0,0,0,117,6,0,0,0,109,101,116,104, + 111,100,40,0,0,0,0,117,29,0,0,0,60,102,114,111, + 122,101,110,32,105,109,112,111,114,116,108,105,98,46,95,98, + 111,111,116,115,116,114,97,112,62,117,19,0,0,0,95,99, + 104,101,99,107,95,110,97,109,101,95,119,114,97,112,112,101, + 114,235,0,0,0,115,6,0,0,0,0,1,15,1,25,1, + 117,40,0,0,0,95,99,104,101,99,107,95,110,97,109,101, + 46,60,108,111,99,97,108,115,62,46,95,99,104,101,99,107, + 95,110,97,109,101,95,119,114,97,112,112,101,114,40,1,0, + 0,0,117,5,0,0,0,95,119,114,97,112,40,2,0,0, + 0,117,6,0,0,0,109,101,116,104,111,100,117,19,0,0, + 0,95,99,104,101,99,107,95,110,97,109,101,95,119,114,97, + 112,112,101,114,40,0,0,0,0,40,1,0,0,0,117,6, + 0,0,0,109,101,116,104,111,100,117,29,0,0,0,60,102, + 114,111,122,101,110,32,105,109,112,111,114,116,108,105,98,46, + 95,98,111,111,116,115,116,114,97,112,62,117,11,0,0,0, + 95,99,104,101,99,107,95,110,97,109,101,227,0,0,0,115, + 6,0,0,0,0,8,18,4,13,1,117,11,0,0,0,95, + 99,104,101,99,107,95,110,97,109,101,99,1,0,0,0,0, + 0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,115, + 35,0,0,0,135,0,0,102,1,0,100,1,0,100,2,0, + 134,0,0,125,1,0,116,0,0,124,1,0,136,0,0,131, + 2,0,1,124,1,0,83,40,3,0,0,0,117,49,0,0, + 0,68,101,99,111,114,97,116,111,114,32,116,111,32,118,101, + 114,105,102,121,32,116,104,101,32,110,97,109,101,100,32,109, + 111,100,117,108,101,32,105,115,32,98,117,105,108,116,45,105, + 110,46,99,2,0,0,0,0,0,0,0,2,0,0,0,4, + 0,0,0,19,0,0,0,115,58,0,0,0,124,1,0,116, + 0,0,106,1,0,107,7,0,114,45,0,116,2,0,100,1, + 0,106,3,0,124,1,0,131,1,0,100,2,0,124,1,0, + 131,1,1,130,1,0,110,0,0,136,0,0,124,0,0,124, + 1,0,131,2,0,83,40,3,0,0,0,78,117,28,0,0, + 0,123,48,125,32,105,115,32,110,111,116,32,97,32,98,117, + 105,108,116,45,105,110,32,109,111,100,117,108,101,117,4,0, + 0,0,110,97,109,101,40,4,0,0,0,117,3,0,0,0, + 115,121,115,117,20,0,0,0,98,117,105,108,116,105,110,95, + 109,111,100,117,108,101,95,110,97,109,101,115,117,11,0,0, + 0,73,109,112,111,114,116,69,114,114,111,114,117,6,0,0, + 0,102,111,114,109,97,116,40,2,0,0,0,117,4,0,0, + 0,115,101,108,102,117,8,0,0,0,102,117,108,108,110,97, + 109,101,40,1,0,0,0,117,3,0,0,0,102,120,110,40, + 0,0,0,0,117,29,0,0,0,60,102,114,111,122,101,110, + 32,105,109,112,111,114,116,108,105,98,46,95,98,111,111,116, + 115,116,114,97,112,62,117,25,0,0,0,95,114,101,113,117, + 105,114,101,115,95,98,117,105,108,116,105,110,95,119,114,97, + 112,112,101,114,245,0,0,0,115,8,0,0,0,0,1,15, + 1,18,1,12,1,117,52,0,0,0,95,114,101,113,117,105, + 114,101,115,95,98,117,105,108,116,105,110,46,60,108,111,99, + 97,108,115,62,46,95,114,101,113,117,105,114,101,115,95,98, + 117,105,108,116,105,110,95,119,114,97,112,112,101,114,40,1, + 0,0,0,117,5,0,0,0,95,119,114,97,112,40,2,0, + 0,0,117,3,0,0,0,102,120,110,117,25,0,0,0,95, + 114,101,113,117,105,114,101,115,95,98,117,105,108,116,105,110, + 95,119,114,97,112,112,101,114,40,0,0,0,0,40,1,0, + 0,0,117,3,0,0,0,102,120,110,117,29,0,0,0,60, + 102,114,111,122,101,110,32,105,109,112,111,114,116,108,105,98, + 46,95,98,111,111,116,115,116,114,97,112,62,117,17,0,0, + 0,95,114,101,113,117,105,114,101,115,95,98,117,105,108,116, + 105,110,243,0,0,0,115,6,0,0,0,0,2,18,5,13, + 1,117,17,0,0,0,95,114,101,113,117,105,114,101,115,95, + 98,117,105,108,116,105,110,99,1,0,0,0,0,0,0,0, + 2,0,0,0,3,0,0,0,3,0,0,0,115,35,0,0, + 0,135,0,0,102,1,0,100,1,0,100,2,0,134,0,0, + 125,1,0,116,0,0,124,1,0,136,0,0,131,2,0,1, + 124,1,0,83,40,3,0,0,0,117,47,0,0,0,68,101, + 99,111,114,97,116,111,114,32,116,111,32,118,101,114,105,102, + 121,32,116,104,101,32,110,97,109,101,100,32,109,111,100,117, + 108,101,32,105,115,32,102,114,111,122,101,110,46,99,2,0, + 0,0,0,0,0,0,2,0,0,0,4,0,0,0,19,0, + 0,0,115,58,0,0,0,116,0,0,106,1,0,124,1,0, + 131,1,0,115,45,0,116,2,0,100,1,0,106,3,0,124, + 1,0,131,1,0,100,2,0,124,1,0,131,1,1,130,1, + 0,110,0,0,136,0,0,124,0,0,124,1,0,131,2,0, + 83,40,3,0,0,0,78,117,26,0,0,0,123,48,125,32, + 105,115,32,110,111,116,32,97,32,102,114,111,122,101,110,32, + 109,111,100,117,108,101,117,4,0,0,0,110,97,109,101,40, + 4,0,0,0,117,3,0,0,0,105,109,112,117,9,0,0, + 0,105,115,95,102,114,111,122,101,110,117,11,0,0,0,73, + 109,112,111,114,116,69,114,114,111,114,117,6,0,0,0,102, + 111,114,109,97,116,40,2,0,0,0,117,4,0,0,0,115, + 101,108,102,117,8,0,0,0,102,117,108,108,110,97,109,101, + 40,1,0,0,0,117,3,0,0,0,102,120,110,40,0,0, + 0,0,117,29,0,0,0,60,102,114,111,122,101,110,32,105, + 109,112,111,114,116,108,105,98,46,95,98,111,111,116,115,116, + 114,97,112,62,117,24,0,0,0,95,114,101,113,117,105,114, + 101,115,95,102,114,111,122,101,110,95,119,114,97,112,112,101, + 114,0,1,0,0,115,8,0,0,0,0,1,15,1,18,1, + 12,1,117,50,0,0,0,95,114,101,113,117,105,114,101,115, + 95,102,114,111,122,101,110,46,60,108,111,99,97,108,115,62, + 46,95,114,101,113,117,105,114,101,115,95,102,114,111,122,101, + 110,95,119,114,97,112,112,101,114,40,1,0,0,0,117,5, + 0,0,0,95,119,114,97,112,40,2,0,0,0,117,3,0, + 0,0,102,120,110,117,24,0,0,0,95,114,101,113,117,105, + 114,101,115,95,102,114,111,122,101,110,95,119,114,97,112,112, + 101,114,40,0,0,0,0,40,1,0,0,0,117,3,0,0, + 0,102,120,110,117,29,0,0,0,60,102,114,111,122,101,110, + 32,105,109,112,111,114,116,108,105,98,46,95,98,111,111,116, + 115,116,114,97,112,62,117,16,0,0,0,95,114,101,113,117, + 105,114,101,115,95,102,114,111,122,101,110,254,0,0,0,115, + 6,0,0,0,0,2,18,5,13,1,117,16,0,0,0,95, + 114,101,113,117,105,114,101,115,95,102,114,111,122,101,110,99, + 1,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0, + 3,0,0,0,115,29,0,0,0,135,0,0,102,1,0,100, + 1,0,100,2,0,134,0,0,116,0,0,106,1,0,131,0, + 0,68,131,1,0,83,40,3,0,0,0,117,58,0,0,0, + 82,101,116,117,114,110,32,97,32,108,105,115,116,32,111,102, + 32,102,105,108,101,32,115,117,102,102,105,120,101,115,32,98, + 97,115,101,100,32,111,110,32,116,104,101,32,105,109,112,32, + 102,105,108,101,32,116,121,112,101,46,99,1,0,0,0,0, + 0,0,0,2,0,0,0,4,0,0,0,19,0,0,0,115, + 42,0,0,0,103,0,0,124,0,0,93,32,0,125,1,0, + 124,1,0,100,0,0,25,136,0,0,107,2,0,114,6,0, + 124,1,0,100,1,0,25,145,2,0,113,6,0,83,40,2, + 0,0,0,105,2,0,0,0,105,0,0,0,0,40,0,0, + 0,0,40,2,0,0,0,117,2,0,0,0,46,48,117,6, + 0,0,0,115,117,102,102,105,120,40,1,0,0,0,117,11, + 0,0,0,115,117,102,102,105,120,95,116,121,112,101,40,0, + 0,0,0,117,29,0,0,0,60,102,114,111,122,101,110,32, + 105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, + 116,114,97,112,62,117,10,0,0,0,60,108,105,115,116,99, + 111,109,112,62,11,1,0,0,115,4,0,0,0,9,0,3, + 1,117,32,0,0,0,95,115,117,102,102,105,120,95,108,105, + 115,116,46,60,108,111,99,97,108,115,62,46,60,108,105,115, + 116,99,111,109,112,62,40,2,0,0,0,117,3,0,0,0, + 105,109,112,117,12,0,0,0,103,101,116,95,115,117,102,102, + 105,120,101,115,40,1,0,0,0,117,11,0,0,0,115,117, + 102,102,105,120,95,116,121,112,101,40,0,0,0,0,40,1, + 0,0,0,117,11,0,0,0,115,117,102,102,105,120,95,116, + 121,112,101,117,29,0,0,0,60,102,114,111,122,101,110,32, + 105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, + 116,114,97,112,62,117,12,0,0,0,95,115,117,102,102,105, + 120,95,108,105,115,116,9,1,0,0,115,2,0,0,0,0, + 2,117,12,0,0,0,95,115,117,102,102,105,120,95,108,105, + 115,116,99,1,0,0,0,0,0,0,0,1,0,0,0,6, + 0,0,0,66,0,0,0,115,155,0,0,0,124,0,0,69, + 101,0,0,90,1,0,100,0,0,90,2,0,100,1,0,90, + 3,0,101,4,0,100,12,0,100,2,0,100,3,0,132,1, + 0,131,1,0,90,6,0,101,4,0,101,7,0,101,8,0, + 101,9,0,100,4,0,100,5,0,132,0,0,131,1,0,131, + 1,0,131,1,0,131,1,0,90,10,0,101,4,0,101,9, + 0,100,6,0,100,7,0,132,0,0,131,1,0,131,1,0, + 90,11,0,101,4,0,101,9,0,100,8,0,100,9,0,132, + 0,0,131,1,0,131,1,0,90,12,0,101,4,0,101,9, + 0,100,10,0,100,11,0,132,0,0,131,1,0,131,1,0, + 90,13,0,100,12,0,83,40,13,0,0,0,117,15,0,0, + 0,66,117,105,108,116,105,110,73,109,112,111,114,116,101,114, + 117,144,0,0,0,77,101,116,97,32,112,97,116,104,32,105, + 109,112,111,114,116,32,102,111,114,32,98,117,105,108,116,45, + 105,110,32,109,111,100,117,108,101,115,46,10,10,32,32,32, + 32,65,108,108,32,109,101,116,104,111,100,115,32,97,114,101, + 32,101,105,116,104,101,114,32,99,108,97,115,115,32,111,114, + 32,115,116,97,116,105,99,32,109,101,116,104,111,100,115,32, + 116,111,32,97,118,111,105,100,32,116,104,101,32,110,101,101, + 100,32,116,111,10,32,32,32,32,105,110,115,116,97,110,116, + 105,97,116,101,32,116,104,101,32,99,108,97,115,115,46,10, + 10,32,32,32,32,99,3,0,0,0,0,0,0,0,3,0, + 0,0,2,0,0,0,67,0,0,0,115,39,0,0,0,124, + 2,0,100,1,0,107,9,0,114,16,0,100,1,0,83,116, + 1,0,106,2,0,124,1,0,131,1,0,114,35,0,124,0, + 0,83,100,1,0,83,40,2,0,0,0,117,113,0,0,0, + 70,105,110,100,32,116,104,101,32,98,117,105,108,116,45,105, + 110,32,109,111,100,117,108,101,46,10,10,32,32,32,32,32, + 32,32,32,73,102,32,39,112,97,116,104,39,32,105,115,32, + 101,118,101,114,32,115,112,101,99,105,102,105,101,100,32,116, + 104,101,110,32,116,104,101,32,115,101,97,114,99,104,32,105, + 115,32,99,111,110,115,105,100,101,114,101,100,32,97,32,102, + 97,105,108,117,114,101,46,10,10,32,32,32,32,32,32,32, + 32,78,40,3,0,0,0,117,4,0,0,0,78,111,110,101, + 117,3,0,0,0,105,109,112,117,10,0,0,0,105,115,95, + 98,117,105,108,116,105,110,40,3,0,0,0,117,3,0,0, + 0,99,108,115,117,8,0,0,0,102,117,108,108,110,97,109, + 101,117,4,0,0,0,112,97,116,104,40,0,0,0,0,40, + 0,0,0,0,117,29,0,0,0,60,102,114,111,122,101,110, + 32,105,109,112,111,114,116,108,105,98,46,95,98,111,111,116, + 115,116,114,97,112,62,117,11,0,0,0,102,105,110,100,95, + 109,111,100,117,108,101,26,1,0,0,115,6,0,0,0,0, + 7,12,1,4,1,117,27,0,0,0,66,117,105,108,116,105, + 110,73,109,112,111,114,116,101,114,46,102,105,110,100,95,109, + 111,100,117,108,101,99,2,0,0,0,0,0,0,0,3,0, + 0,0,9,0,0,0,67,0,0,0,115,85,0,0,0,124, + 1,0,116,0,0,106,1,0,107,6,0,125,2,0,121,17, + 0,116,2,0,106,3,0,124,1,0,131,1,0,83,87,110, + 46,0,1,1,1,124,2,0,12,114,73,0,124,1,0,116, + 0,0,106,1,0,107,6,0,114,73,0,116,0,0,106,1, + 0,124,1,0,61,110,0,0,130,0,0,89,110,1,0,88, + 100,1,0,83,40,2,0,0,0,117,23,0,0,0,76,111, + 97,100,32,97,32,98,117,105,108,116,45,105,110,32,109,111, + 100,117,108,101,46,78,40,4,0,0,0,117,3,0,0,0, + 115,121,115,117,7,0,0,0,109,111,100,117,108,101,115,117, + 3,0,0,0,105,109,112,117,12,0,0,0,105,110,105,116, + 95,98,117,105,108,116,105,110,40,3,0,0,0,117,3,0, + 0,0,99,108,115,117,8,0,0,0,102,117,108,108,110,97, + 109,101,117,9,0,0,0,105,115,95,114,101,108,111,97,100, + 40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,60, + 102,114,111,122,101,110,32,105,109,112,111,114,116,108,105,98, + 46,95,98,111,111,116,115,116,114,97,112,62,117,11,0,0, + 0,108,111,97,100,95,109,111,100,117,108,101,37,1,0,0, + 115,14,0,0,0,0,6,15,1,3,1,17,1,3,1,22, + 1,13,1,117,27,0,0,0,66,117,105,108,116,105,110,73, + 109,112,111,114,116,101,114,46,108,111,97,100,95,109,111,100, + 117,108,101,99,2,0,0,0,0,0,0,0,2,0,0,0, + 1,0,0,0,67,0,0,0,115,4,0,0,0,100,1,0, + 83,40,2,0,0,0,117,57,0,0,0,82,101,116,117,114, + 110,32,78,111,110,101,32,97,115,32,98,117,105,108,116,45, + 105,110,32,109,111,100,117,108,101,115,32,100,111,32,110,111, + 116,32,104,97,118,101,32,99,111,100,101,32,111,98,106,101, + 99,116,115,46,78,40,1,0,0,0,117,4,0,0,0,78, + 111,110,101,40,2,0,0,0,117,3,0,0,0,99,108,115, + 117,8,0,0,0,102,117,108,108,110,97,109,101,40,0,0, + 0,0,40,0,0,0,0,117,29,0,0,0,60,102,114,111, + 122,101,110,32,105,109,112,111,114,116,108,105,98,46,95,98, + 111,111,116,115,116,114,97,112,62,117,8,0,0,0,103,101, + 116,95,99,111,100,101,51,1,0,0,115,2,0,0,0,0, + 4,117,24,0,0,0,66,117,105,108,116,105,110,73,109,112, + 111,114,116,101,114,46,103,101,116,95,99,111,100,101,99,2, + 0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,67, + 0,0,0,115,4,0,0,0,100,1,0,83,40,2,0,0, + 0,117,56,0,0,0,82,101,116,117,114,110,32,78,111,110, + 101,32,97,115,32,98,117,105,108,116,45,105,110,32,109,111, + 100,117,108,101,115,32,100,111,32,110,111,116,32,104,97,118, + 101,32,115,111,117,114,99,101,32,99,111,100,101,46,78,40, + 1,0,0,0,117,4,0,0,0,78,111,110,101,40,2,0, + 0,0,117,3,0,0,0,99,108,115,117,8,0,0,0,102, + 117,108,108,110,97,109,101,40,0,0,0,0,40,0,0,0, + 0,117,29,0,0,0,60,102,114,111,122,101,110,32,105,109, + 112,111,114,116,108,105,98,46,95,98,111,111,116,115,116,114, + 97,112,62,117,10,0,0,0,103,101,116,95,115,111,117,114, + 99,101,57,1,0,0,115,2,0,0,0,0,4,117,26,0, + 0,0,66,117,105,108,116,105,110,73,109,112,111,114,116,101, + 114,46,103,101,116,95,115,111,117,114,99,101,99,2,0,0, + 0,0,0,0,0,2,0,0,0,1,0,0,0,67,0,0, + 0,115,4,0,0,0,100,1,0,83,40,2,0,0,0,117, + 51,0,0,0,82,101,116,117,114,110,32,78,111,110,101,32, + 97,115,32,98,117,105,108,116,45,105,110,32,109,111,100,117, + 108,101,115,32,97,114,101,32,110,101,118,101,114,32,112,97, + 99,107,97,103,101,115,46,70,40,1,0,0,0,117,5,0, + 0,0,70,97,108,115,101,40,2,0,0,0,117,3,0,0, + 0,99,108,115,117,8,0,0,0,102,117,108,108,110,97,109, + 101,40,0,0,0,0,40,0,0,0,0,117,29,0,0,0, + 60,102,114,111,122,101,110,32,105,109,112,111,114,116,108,105, + 98,46,95,98,111,111,116,115,116,114,97,112,62,117,10,0, + 0,0,105,115,95,112,97,99,107,97,103,101,63,1,0,0, + 115,2,0,0,0,0,4,117,26,0,0,0,66,117,105,108, + 116,105,110,73,109,112,111,114,116,101,114,46,105,115,95,112, + 97,99,107,97,103,101,78,40,14,0,0,0,117,8,0,0, + 0,95,95,110,97,109,101,95,95,117,10,0,0,0,95,95, + 109,111,100,117,108,101,95,95,117,12,0,0,0,95,95,113, + 117,97,108,110,97,109,101,95,95,117,7,0,0,0,95,95, + 100,111,99,95,95,117,11,0,0,0,99,108,97,115,115,109, + 101,116,104,111,100,117,4,0,0,0,78,111,110,101,117,11, + 0,0,0,102,105,110,100,95,109,111,100,117,108,101,117,11, + 0,0,0,115,101,116,95,112,97,99,107,97,103,101,117,10, + 0,0,0,115,101,116,95,108,111,97,100,101,114,117,17,0, + 0,0,95,114,101,113,117,105,114,101,115,95,98,117,105,108, + 116,105,110,117,11,0,0,0,108,111,97,100,95,109,111,100, + 117,108,101,117,8,0,0,0,103,101,116,95,99,111,100,101, + 117,10,0,0,0,103,101,116,95,115,111,117,114,99,101,117, + 10,0,0,0,105,115,95,112,97,99,107,97,103,101,40,1, + 0,0,0,117,10,0,0,0,95,95,108,111,99,97,108,115, + 95,95,40,0,0,0,0,40,0,0,0,0,117,29,0,0, + 0,60,102,114,111,122,101,110,32,105,109,112,111,114,116,108, + 105,98,46,95,98,111,111,116,115,116,114,97,112,62,117,15, + 0,0,0,66,117,105,108,116,105,110,73,109,112,111,114,116, + 101,114,17,1,0,0,115,26,0,0,0,16,7,6,2,3, + 1,18,10,3,1,3,1,3,1,27,11,3,1,21,5,3, + 1,21,5,3,1,117,15,0,0,0,66,117,105,108,116,105, + 110,73,109,112,111,114,116,101,114,99,1,0,0,0,0,0, + 0,0,1,0,0,0,6,0,0,0,66,0,0,0,115,155, + 0,0,0,124,0,0,69,101,0,0,90,1,0,100,0,0, + 90,2,0,100,1,0,90,3,0,101,4,0,100,12,0,100, + 2,0,100,3,0,132,1,0,131,1,0,90,6,0,101,4, + 0,101,7,0,101,8,0,101,9,0,100,4,0,100,5,0, + 132,0,0,131,1,0,131,1,0,131,1,0,131,1,0,90, + 10,0,101,4,0,101,9,0,100,6,0,100,7,0,132,0, + 0,131,1,0,131,1,0,90,11,0,101,4,0,101,9,0, + 100,8,0,100,9,0,132,0,0,131,1,0,131,1,0,90, + 12,0,101,4,0,101,9,0,100,10,0,100,11,0,132,0, + 0,131,1,0,131,1,0,90,13,0,100,12,0,83,40,13, + 0,0,0,117,14,0,0,0,70,114,111,122,101,110,73,109, + 112,111,114,116,101,114,117,142,0,0,0,77,101,116,97,32, + 112,97,116,104,32,105,109,112,111,114,116,32,102,111,114,32, + 102,114,111,122,101,110,32,109,111,100,117,108,101,115,46,10, + 10,32,32,32,32,65,108,108,32,109,101,116,104,111,100,115, + 32,97,114,101,32,101,105,116,104,101,114,32,99,108,97,115, + 115,32,111,114,32,115,116,97,116,105,99,32,109,101,116,104, + 111,100,115,32,116,111,32,97,118,111,105,100,32,116,104,101, + 32,110,101,101,100,32,116,111,10,32,32,32,32,105,110,115, + 116,97,110,116,105,97,116,101,32,116,104,101,32,99,108,97, + 115,115,46,10,10,32,32,32,32,99,3,0,0,0,0,0, + 0,0,3,0,0,0,2,0,0,0,67,0,0,0,115,23, + 0,0,0,116,0,0,106,1,0,124,1,0,131,1,0,114, + 19,0,124,0,0,83,100,1,0,83,40,2,0,0,0,117, + 21,0,0,0,70,105,110,100,32,97,32,102,114,111,122,101, + 110,32,109,111,100,117,108,101,46,78,40,3,0,0,0,117, + 3,0,0,0,105,109,112,117,9,0,0,0,105,115,95,102, + 114,111,122,101,110,117,4,0,0,0,78,111,110,101,40,3, + 0,0,0,117,3,0,0,0,99,108,115,117,8,0,0,0, + 102,117,108,108,110,97,109,101,117,4,0,0,0,112,97,116, + 104,40,0,0,0,0,40,0,0,0,0,117,29,0,0,0, + 60,102,114,111,122,101,110,32,105,109,112,111,114,116,108,105, + 98,46,95,98,111,111,116,115,116,114,97,112,62,117,11,0, + 0,0,102,105,110,100,95,109,111,100,117,108,101,79,1,0, + 0,115,2,0,0,0,0,3,117,26,0,0,0,70,114,111, + 122,101,110,73,109,112,111,114,116,101,114,46,102,105,110,100, + 95,109,111,100,117,108,101,99,2,0,0,0,0,0,0,0, + 3,0,0,0,9,0,0,0,67,0,0,0,115,85,0,0, + 0,124,1,0,116,0,0,106,1,0,107,6,0,125,2,0, + 121,17,0,116,2,0,106,3,0,124,1,0,131,1,0,83, + 87,110,46,0,1,1,1,124,2,0,12,114,73,0,124,1, + 0,116,0,0,106,1,0,107,6,0,114,73,0,116,0,0, + 106,1,0,124,1,0,61,110,0,0,130,0,0,89,110,1, + 0,88,100,1,0,83,40,2,0,0,0,117,21,0,0,0, + 76,111,97,100,32,97,32,102,114,111,122,101,110,32,109,111, + 100,117,108,101,46,78,40,4,0,0,0,117,3,0,0,0, + 115,121,115,117,7,0,0,0,109,111,100,117,108,101,115,117, + 3,0,0,0,105,109,112,117,11,0,0,0,105,110,105,116, + 95,102,114,111,122,101,110,40,3,0,0,0,117,3,0,0, + 0,99,108,115,117,8,0,0,0,102,117,108,108,110,97,109, + 101,117,9,0,0,0,105,115,95,114,101,108,111,97,100,40, + 0,0,0,0,40,0,0,0,0,117,29,0,0,0,60,102, + 114,111,122,101,110,32,105,109,112,111,114,116,108,105,98,46, + 95,98,111,111,116,115,116,114,97,112,62,117,11,0,0,0, + 108,111,97,100,95,109,111,100,117,108,101,84,1,0,0,115, + 14,0,0,0,0,6,15,1,3,1,17,1,3,1,22,1, + 13,1,117,26,0,0,0,70,114,111,122,101,110,73,109,112, + 111,114,116,101,114,46,108,111,97,100,95,109,111,100,117,108, + 101,99,2,0,0,0,0,0,0,0,2,0,0,0,2,0, + 0,0,67,0,0,0,115,13,0,0,0,116,0,0,106,1, + 0,124,1,0,131,1,0,83,40,1,0,0,0,117,45,0, + 0,0,82,101,116,117,114,110,32,116,104,101,32,99,111,100, + 101,32,111,98,106,101,99,116,32,102,111,114,32,116,104,101, + 32,102,114,111,122,101,110,32,109,111,100,117,108,101,46,40, + 2,0,0,0,117,3,0,0,0,105,109,112,117,17,0,0, + 0,103,101,116,95,102,114,111,122,101,110,95,111,98,106,101, + 99,116,40,2,0,0,0,117,3,0,0,0,99,108,115,117, + 8,0,0,0,102,117,108,108,110,97,109,101,40,0,0,0, + 0,40,0,0,0,0,117,29,0,0,0,60,102,114,111,122, + 101,110,32,105,109,112,111,114,116,108,105,98,46,95,98,111, + 111,116,115,116,114,97,112,62,117,8,0,0,0,103,101,116, + 95,99,111,100,101,98,1,0,0,115,2,0,0,0,0,4, + 117,23,0,0,0,70,114,111,122,101,110,73,109,112,111,114, + 116,101,114,46,103,101,116,95,99,111,100,101,99,2,0,0, + 0,0,0,0,0,2,0,0,0,1,0,0,0,67,0,0, + 0,115,4,0,0,0,100,1,0,83,40,2,0,0,0,117, + 54,0,0,0,82,101,116,117,114,110,32,78,111,110,101,32, + 97,115,32,102,114,111,122,101,110,32,109,111,100,117,108,101, + 115,32,100,111,32,110,111,116,32,104,97,118,101,32,115,111, + 117,114,99,101,32,99,111,100,101,46,78,40,1,0,0,0, + 117,4,0,0,0,78,111,110,101,40,2,0,0,0,117,3, + 0,0,0,99,108,115,117,8,0,0,0,102,117,108,108,110, + 97,109,101,40,0,0,0,0,40,0,0,0,0,117,29,0, + 0,0,60,102,114,111,122,101,110,32,105,109,112,111,114,116, + 108,105,98,46,95,98,111,111,116,115,116,114,97,112,62,117, + 10,0,0,0,103,101,116,95,115,111,117,114,99,101,104,1, + 0,0,115,2,0,0,0,0,4,117,25,0,0,0,70,114, + 111,122,101,110,73,109,112,111,114,116,101,114,46,103,101,116, + 95,115,111,117,114,99,101,99,2,0,0,0,0,0,0,0, + 2,0,0,0,2,0,0,0,67,0,0,0,115,13,0,0, + 0,116,0,0,106,1,0,124,1,0,131,1,0,83,40,1, + 0,0,0,117,41,0,0,0,82,101,116,117,114,110,32,105, + 102,32,116,104,101,32,102,114,111,122,101,110,32,109,111,100, + 117,108,101,32,105,115,32,97,32,112,97,99,107,97,103,101, + 46,40,2,0,0,0,117,3,0,0,0,105,109,112,117,17, + 0,0,0,105,115,95,102,114,111,122,101,110,95,112,97,99, + 107,97,103,101,40,2,0,0,0,117,3,0,0,0,99,108, + 115,117,8,0,0,0,102,117,108,108,110,97,109,101,40,0, + 0,0,0,40,0,0,0,0,117,29,0,0,0,60,102,114, + 111,122,101,110,32,105,109,112,111,114,116,108,105,98,46,95, + 98,111,111,116,115,116,114,97,112,62,117,10,0,0,0,105, + 115,95,112,97,99,107,97,103,101,110,1,0,0,115,2,0, + 0,0,0,4,117,25,0,0,0,70,114,111,122,101,110,73, + 109,112,111,114,116,101,114,46,105,115,95,112,97,99,107,97, + 103,101,78,40,14,0,0,0,117,8,0,0,0,95,95,110, + 97,109,101,95,95,117,10,0,0,0,95,95,109,111,100,117, + 108,101,95,95,117,12,0,0,0,95,95,113,117,97,108,110, + 97,109,101,95,95,117,7,0,0,0,95,95,100,111,99,95, + 95,117,11,0,0,0,99,108,97,115,115,109,101,116,104,111, + 100,117,4,0,0,0,78,111,110,101,117,11,0,0,0,102, + 105,110,100,95,109,111,100,117,108,101,117,11,0,0,0,115, + 101,116,95,112,97,99,107,97,103,101,117,10,0,0,0,115, + 101,116,95,108,111,97,100,101,114,117,16,0,0,0,95,114, + 101,113,117,105,114,101,115,95,102,114,111,122,101,110,117,11, + 0,0,0,108,111,97,100,95,109,111,100,117,108,101,117,8, + 0,0,0,103,101,116,95,99,111,100,101,117,10,0,0,0, + 103,101,116,95,115,111,117,114,99,101,117,10,0,0,0,105, + 115,95,112,97,99,107,97,103,101,40,1,0,0,0,117,10, + 0,0,0,95,95,108,111,99,97,108,115,95,95,40,0,0, + 0,0,40,0,0,0,0,117,29,0,0,0,60,102,114,111, + 122,101,110,32,105,109,112,111,114,116,108,105,98,46,95,98, + 111,111,116,115,116,114,97,112,62,117,14,0,0,0,70,114, + 111,122,101,110,73,109,112,111,114,116,101,114,70,1,0,0, + 115,26,0,0,0,16,7,6,2,3,1,18,4,3,1,3, + 1,3,1,27,11,3,1,21,5,3,1,21,5,3,1,117, + 14,0,0,0,70,114,111,122,101,110,73,109,112,111,114,116, + 101,114,99,1,0,0,0,0,0,0,0,1,0,0,0,5, + 0,0,0,66,0,0,0,115,74,0,0,0,124,0,0,69, + 101,0,0,90,1,0,100,0,0,90,2,0,100,1,0,90, + 3,0,100,2,0,100,3,0,132,0,0,90,4,0,100,4, + 0,100,5,0,132,0,0,90,5,0,101,6,0,100,6,0, + 100,10,0,100,7,0,100,8,0,132,0,1,131,1,0,90, + 8,0,100,9,0,83,40,11,0,0,0,117,13,0,0,0, + 95,76,111,97,100,101,114,66,97,115,105,99,115,117,84,0, + 0,0,66,97,115,101,32,99,108,97,115,115,32,111,102,32, + 99,111,109,109,111,110,32,99,111,100,101,32,110,101,101,100, + 101,100,32,98,121,32,98,111,116,104,32,83,111,117,114,99, + 101,76,111,97,100,101,114,32,97,110,100,10,32,32,32,32, + 95,83,111,117,114,99,101,108,101,115,115,70,105,108,101,76, + 111,97,100,101,114,46,99,2,0,0,0,0,0,0,0,3, + 0,0,0,3,0,0,0,67,0,0,0,115,54,0,0,0, + 124,0,0,106,0,0,124,1,0,131,1,0,106,1,0,116, + 2,0,131,1,0,100,1,0,25,125,2,0,124,2,0,106, + 3,0,100,2,0,100,3,0,131,2,0,100,4,0,25,100, + 5,0,107,2,0,83,40,6,0,0,0,117,141,0,0,0, + 67,111,110,99,114,101,116,101,32,105,109,112,108,101,109,101, + 110,116,97,116,105,111,110,32,111,102,32,73,110,115,112,101, + 99,116,76,111,97,100,101,114,46,105,115,95,112,97,99,107, + 97,103,101,32,98,121,32,99,104,101,99,107,105,110,103,32, + 105,102,10,32,32,32,32,32,32,32,32,116,104,101,32,112, + 97,116,104,32,114,101,116,117,114,110,101,100,32,98,121,32, + 103,101,116,95,102,105,108,101,110,97,109,101,32,104,97,115, + 32,97,32,102,105,108,101,110,97,109,101,32,111,102,32,39, + 95,95,105,110,105,116,95,95,46,112,121,39,46,105,2,0, + 0,0,117,1,0,0,0,46,105,1,0,0,0,105,0,0, + 0,0,117,8,0,0,0,95,95,105,110,105,116,95,95,40, + 4,0,0,0,117,12,0,0,0,103,101,116,95,102,105,108, + 101,110,97,109,101,117,10,0,0,0,114,112,97,114,116,105, + 116,105,111,110,117,8,0,0,0,112,97,116,104,95,115,101, + 112,117,6,0,0,0,114,115,112,108,105,116,40,3,0,0, + 0,117,4,0,0,0,115,101,108,102,117,8,0,0,0,102, + 117,108,108,110,97,109,101,117,8,0,0,0,102,105,108,101, + 110,97,109,101,40,0,0,0,0,40,0,0,0,0,117,29, + 0,0,0,60,102,114,111,122,101,110,32,105,109,112,111,114, + 116,108,105,98,46,95,98,111,111,116,115,116,114,97,112,62, + 117,10,0,0,0,105,115,95,112,97,99,107,97,103,101,122, + 1,0,0,115,4,0,0,0,0,3,28,1,117,24,0,0, + 0,95,76,111,97,100,101,114,66,97,115,105,99,115,46,105, + 115,95,112,97,99,107,97,103,101,99,5,0,0,0,0,0, + 0,0,11,0,0,0,23,0,0,0,67,0,0,0,115,213, + 1,0,0,124,2,0,100,1,0,100,2,0,133,2,0,25, + 125,5,0,124,2,0,100,2,0,100,3,0,133,2,0,25, + 125,6,0,124,2,0,100,3,0,100,4,0,133,2,0,25, + 125,7,0,116,0,0,124,5,0,131,1,0,100,2,0,107, + 3,0,115,84,0,124,5,0,116,1,0,106,2,0,131,0, + 0,107,3,0,114,120,0,116,3,0,100,5,0,106,4,0, + 124,1,0,131,1,0,100,6,0,124,1,0,100,7,0,124, + 3,0,131,1,2,130,1,0,110,116,0,116,0,0,124,6, + 0,131,1,0,100,2,0,107,3,0,114,178,0,100,8,0, + 106,4,0,124,1,0,131,1,0,125,8,0,116,5,0,124, + 8,0,131,1,0,1,116,6,0,124,8,0,131,1,0,130, + 1,0,110,58,0,116,0,0,124,7,0,131,1,0,100,2, + 0,107,3,0,114,236,0,100,9,0,106,4,0,124,1,0, + 131,1,0,125,8,0,116,5,0,124,8,0,131,1,0,1, + 116,6,0,124,8,0,131,1,0,130,1,0,110,0,0,124, + 4,0,100,1,0,107,9,0,114,199,1,121,20,0,116,8, + 0,124,4,0,100,10,0,25,131,1,0,125,9,0,87,110, + 18,0,4,116,9,0,107,10,0,114,32,1,1,1,1,89, + 110,71,0,88,116,10,0,124,6,0,131,1,0,124,9,0, + 107,3,0,114,103,1,100,11,0,106,4,0,124,1,0,131, + 1,0,125,8,0,116,5,0,124,8,0,131,1,0,1,116, + 3,0,124,8,0,100,6,0,124,1,0,100,7,0,124,3, + 0,131,1,2,130,1,0,110,0,0,121,18,0,124,4,0, + 100,12,0,25,100,13,0,64,125,10,0,87,110,18,0,4, + 116,9,0,107,10,0,114,141,1,1,1,1,89,113,199,1, + 88,116,10,0,124,7,0,131,1,0,124,10,0,107,3,0, + 114,199,1,116,3,0,100,11,0,106,4,0,124,1,0,131, + 1,0,100,6,0,124,1,0,100,7,0,124,3,0,131,1, + 2,130,1,0,113,199,1,110,0,0,124,2,0,100,4,0, + 100,1,0,133,2,0,25,83,40,14,0,0,0,117,193,0, + 0,0,82,101,116,117,114,110,32,116,104,101,32,109,97,114, + 115,104,97,108,108,101,100,32,98,121,116,101,115,32,102,114, + 111,109,32,98,121,116,101,99,111,100,101,44,32,118,101,114, + 105,102,121,105,110,103,32,116,104,101,32,109,97,103,105,99, + 10,32,32,32,32,32,32,32,32,110,117,109,98,101,114,44, + 32,116,105,109,101,115,116,97,109,112,32,97,110,100,32,115, + 111,117,114,99,101,32,115,105,122,101,32,97,108,111,110,103, + 32,116,104,101,32,119,97,121,46,10,10,32,32,32,32,32, + 32,32,32,73,102,32,115,111,117,114,99,101,95,115,116,97, + 116,115,32,105,115,32,78,111,110,101,32,116,104,101,110,32, + 115,107,105,112,32,116,104,101,32,116,105,109,101,115,116,97, + 109,112,32,99,104,101,99,107,46,10,10,32,32,32,32,32, + 32,32,32,78,105,4,0,0,0,105,8,0,0,0,105,12, + 0,0,0,117,22,0,0,0,98,97,100,32,109,97,103,105, + 99,32,110,117,109,98,101,114,32,105,110,32,123,125,117,4, + 0,0,0,110,97,109,101,117,4,0,0,0,112,97,116,104, + 117,19,0,0,0,98,97,100,32,116,105,109,101,115,116,97, + 109,112,32,105,110,32,123,125,117,14,0,0,0,98,97,100, + 32,115,105,122,101,32,105,110,32,123,125,117,5,0,0,0, + 109,116,105,109,101,117,24,0,0,0,98,121,116,101,99,111, + 100,101,32,105,115,32,115,116,97,108,101,32,102,111,114,32, + 123,125,117,4,0,0,0,115,105,122,101,73,255,255,255,255, + 0,0,0,0,40,11,0,0,0,117,3,0,0,0,108,101, + 110,117,3,0,0,0,105,109,112,117,9,0,0,0,103,101, + 116,95,109,97,103,105,99,117,11,0,0,0,73,109,112,111, + 114,116,69,114,114,111,114,117,6,0,0,0,102,111,114,109, + 97,116,117,15,0,0,0,118,101,114,98,111,115,101,95,109, + 101,115,115,97,103,101,117,8,0,0,0,69,79,70,69,114, + 114,111,114,117,4,0,0,0,78,111,110,101,117,3,0,0, + 0,105,110,116,117,8,0,0,0,75,101,121,69,114,114,111, + 114,117,7,0,0,0,95,114,95,108,111,110,103,40,11,0, + 0,0,117,4,0,0,0,115,101,108,102,117,8,0,0,0, + 102,117,108,108,110,97,109,101,117,4,0,0,0,100,97,116, + 97,117,13,0,0,0,98,121,116,101,99,111,100,101,95,112, + 97,116,104,117,12,0,0,0,115,111,117,114,99,101,95,115, + 116,97,116,115,117,5,0,0,0,109,97,103,105,99,117,13, + 0,0,0,114,97,119,95,116,105,109,101,115,116,97,109,112, + 117,8,0,0,0,114,97,119,95,115,105,122,101,117,7,0, + 0,0,109,101,115,115,97,103,101,117,12,0,0,0,115,111, + 117,114,99,101,95,109,116,105,109,101,117,11,0,0,0,115, + 111,117,114,99,101,95,115,105,122,101,40,0,0,0,0,40, + 0,0,0,0,117,29,0,0,0,60,102,114,111,122,101,110, + 32,105,109,112,111,114,116,108,105,98,46,95,98,111,111,116, + 115,116,114,97,112,62,117,20,0,0,0,95,98,121,116,101, + 115,95,102,114,111,109,95,98,121,116,101,99,111,100,101,128, + 1,0,0,115,66,0,0,0,0,7,16,1,16,1,16,1, + 36,1,18,1,18,1,18,1,15,1,10,1,15,1,18,1, + 15,1,10,1,15,1,12,1,3,1,20,1,13,1,5,2, + 18,1,15,1,10,1,15,1,12,1,3,1,18,1,13,1, + 5,2,18,1,3,1,15,1,21,3,117,34,0,0,0,95, + 76,111,97,100,101,114,66,97,115,105,99,115,46,95,98,121, + 116,101,115,95,102,114,111,109,95,98,121,116,101,99,111,100, + 101,117,10,0,0,0,115,111,117,114,99,101,108,101,115,115, + 99,2,0,0,0,1,0,0,0,5,0,0,0,3,0,0, + 0,67,0,0,0,115,196,0,0,0,124,1,0,106,0,0, + 125,3,0,124,0,0,106,1,0,124,3,0,131,1,0,125, + 4,0,124,0,0,106,2,0,124,3,0,131,1,0,124,1, + 0,95,3,0,124,2,0,115,72,0,116,4,0,106,5,0, + 124,1,0,106,3,0,131,1,0,124,1,0,95,6,0,110, + 12,0,124,1,0,106,3,0,124,1,0,95,6,0,124,3, + 0,124,1,0,95,7,0,124,0,0,106,8,0,124,3,0, + 131,1,0,114,142,0,124,1,0,106,3,0,106,9,0,116, + 10,0,100,1,0,131,2,0,100,2,0,25,103,1,0,124, + 1,0,95,11,0,110,25,0,124,1,0,106,7,0,106,12, + 0,100,3,0,131,1,0,100,2,0,25,124,1,0,95,7, + 0,124,0,0,124,1,0,95,13,0,116,14,0,124,4,0, + 124,1,0,106,15,0,131,2,0,1,124,1,0,83,40,4, + 0,0,0,117,82,0,0,0,72,101,108,112,101,114,32,102, + 111,114,32,108,111,97,100,95,109,111,100,117,108,101,32,97, + 98,108,101,32,116,111,32,104,97,110,100,108,101,32,101,105, + 116,104,101,114,32,115,111,117,114,99,101,32,111,114,32,115, + 111,117,114,99,101,108,101,115,115,10,32,32,32,32,32,32, + 32,32,108,111,97,100,105,110,103,46,105,1,0,0,0,105, + 0,0,0,0,117,1,0,0,0,46,40,16,0,0,0,117, + 8,0,0,0,95,95,110,97,109,101,95,95,117,8,0,0, + 0,103,101,116,95,99,111,100,101,117,12,0,0,0,103,101, + 116,95,102,105,108,101,110,97,109,101,117,8,0,0,0,95, + 95,102,105,108,101,95,95,117,3,0,0,0,105,109,112,117, + 17,0,0,0,99,97,99,104,101,95,102,114,111,109,95,115, + 111,117,114,99,101,117,10,0,0,0,95,95,99,97,99,104, + 101,100,95,95,117,11,0,0,0,95,95,112,97,99,107,97, + 103,101,95,95,117,10,0,0,0,105,115,95,112,97,99,107, + 97,103,101,117,6,0,0,0,114,115,112,108,105,116,117,8, + 0,0,0,112,97,116,104,95,115,101,112,117,8,0,0,0, + 95,95,112,97,116,104,95,95,117,10,0,0,0,114,112,97, + 114,116,105,116,105,111,110,117,10,0,0,0,95,95,108,111, + 97,100,101,114,95,95,117,4,0,0,0,101,120,101,99,117, + 8,0,0,0,95,95,100,105,99,116,95,95,40,5,0,0, + 0,117,4,0,0,0,115,101,108,102,117,6,0,0,0,109, + 111,100,117,108,101,117,10,0,0,0,115,111,117,114,99,101, + 108,101,115,115,117,4,0,0,0,110,97,109,101,117,11,0, + 0,0,99,111,100,101,95,111,98,106,101,99,116,40,0,0, + 0,0,40,0,0,0,0,117,29,0,0,0,60,102,114,111, + 122,101,110,32,105,109,112,111,114,116,108,105,98,46,95,98, + 111,111,116,115,116,114,97,112,62,117,12,0,0,0,95,108, + 111,97,100,95,109,111,100,117,108,101,173,1,0,0,115,26, + 0,0,0,0,4,9,1,15,1,18,1,6,1,24,2,12, + 1,9,1,15,1,34,2,25,1,9,1,16,1,117,26,0, + 0,0,95,76,111,97,100,101,114,66,97,115,105,99,115,46, + 95,108,111,97,100,95,109,111,100,117,108,101,78,70,40,9, + 0,0,0,117,8,0,0,0,95,95,110,97,109,101,95,95, + 117,10,0,0,0,95,95,109,111,100,117,108,101,95,95,117, + 12,0,0,0,95,95,113,117,97,108,110,97,109,101,95,95, + 117,7,0,0,0,95,95,100,111,99,95,95,117,10,0,0, + 0,105,115,95,112,97,99,107,97,103,101,117,20,0,0,0, + 95,98,121,116,101,115,95,102,114,111,109,95,98,121,116,101, + 99,111,100,101,117,17,0,0,0,109,111,100,117,108,101,95, + 102,111,114,95,108,111,97,100,101,114,117,5,0,0,0,70, + 97,108,115,101,117,12,0,0,0,95,108,111,97,100,95,109, + 111,100,117,108,101,40,1,0,0,0,117,10,0,0,0,95, + 95,108,111,99,97,108,115,95,95,40,0,0,0,0,40,0, + 0,0,0,117,29,0,0,0,60,102,114,111,122,101,110,32, + 105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, + 116,114,97,112,62,117,13,0,0,0,95,76,111,97,100,101, + 114,66,97,115,105,99,115,117,1,0,0,115,10,0,0,0, + 16,3,6,2,12,6,12,45,6,1,117,13,0,0,0,95, + 76,111,97,100,101,114,66,97,115,105,99,115,99,1,0,0, + 0,0,0,0,0,1,0,0,0,2,0,0,0,66,0,0, + 0,115,92,0,0,0,124,0,0,69,101,0,0,90,1,0, + 100,0,0,90,2,0,100,1,0,100,2,0,132,0,0,90, + 3,0,100,3,0,100,4,0,132,0,0,90,4,0,100,5, + 0,100,6,0,132,0,0,90,5,0,100,7,0,100,8,0, + 132,0,0,90,6,0,100,9,0,100,10,0,132,0,0,90, + 7,0,100,11,0,100,12,0,132,0,0,90,8,0,100,13, + 0,83,40,14,0,0,0,117,12,0,0,0,83,111,117,114, + 99,101,76,111,97,100,101,114,99,2,0,0,0,0,0,0, + 0,2,0,0,0,1,0,0,0,67,0,0,0,115,10,0, + 0,0,116,0,0,130,1,0,100,1,0,83,40,2,0,0, + 0,117,121,0,0,0,79,112,116,105,111,110,97,108,32,109, + 101,116,104,111,100,32,116,104,97,116,32,114,101,116,117,114, + 110,115,32,116,104,101,32,109,111,100,105,102,105,99,97,116, + 105,111,110,32,116,105,109,101,32,40,97,110,32,105,110,116, + 41,32,102,111,114,32,116,104,101,10,32,32,32,32,32,32, + 32,32,115,112,101,99,105,102,105,101,100,32,112,97,116,104, + 44,32,119,104,101,114,101,32,112,97,116,104,32,105,115,32, + 97,32,115,116,114,46,10,32,32,32,32,32,32,32,32,78, + 40,1,0,0,0,117,19,0,0,0,78,111,116,73,109,112, + 108,101,109,101,110,116,101,100,69,114,114,111,114,40,2,0, + 0,0,117,4,0,0,0,115,101,108,102,117,4,0,0,0, + 112,97,116,104,40,0,0,0,0,40,0,0,0,0,117,29, + 0,0,0,60,102,114,111,122,101,110,32,105,109,112,111,114, + 116,108,105,98,46,95,98,111,111,116,115,116,114,97,112,62, + 117,10,0,0,0,112,97,116,104,95,109,116,105,109,101,196, + 1,0,0,115,2,0,0,0,0,4,117,23,0,0,0,83, + 111,117,114,99,101,76,111,97,100,101,114,46,112,97,116,104, + 95,109,116,105,109,101,99,2,0,0,0,0,0,0,0,2, + 0,0,0,3,0,0,0,67,0,0,0,115,20,0,0,0, + 105,1,0,124,0,0,106,0,0,124,1,0,131,1,0,100, + 1,0,54,83,40,2,0,0,0,117,114,1,0,0,79,112, + 116,105,111,110,97,108,32,109,101,116,104,111,100,32,114,101, + 116,117,114,110,105,110,103,32,97,32,109,101,116,97,100,97, + 116,97,32,100,105,99,116,32,102,111,114,32,116,104,101,32, + 115,112,101,99,105,102,105,101,100,32,112,97,116,104,10,32, + 32,32,32,32,32,32,32,116,111,32,98,121,32,116,104,101, + 32,112,97,116,104,32,40,115,116,114,41,46,10,32,32,32, + 32,32,32,32,32,80,111,115,115,105,98,108,101,32,107,101, + 121,115,58,10,32,32,32,32,32,32,32,32,45,32,39,109, + 116,105,109,101,39,32,40,109,97,110,100,97,116,111,114,121, + 41,32,105,115,32,116,104,101,32,110,117,109,101,114,105,99, + 32,116,105,109,101,115,116,97,109,112,32,111,102,32,108,97, + 115,116,32,115,111,117,114,99,101,10,32,32,32,32,32,32, + 32,32,32,32,99,111,100,101,32,109,111,100,105,102,105,99, + 97,116,105,111,110,59,10,32,32,32,32,32,32,32,32,45, + 32,39,115,105,122,101,39,32,40,111,112,116,105,111,110,97, + 108,41,32,105,115,32,116,104,101,32,115,105,122,101,32,105, + 110,32,98,121,116,101,115,32,111,102,32,116,104,101,32,115, + 111,117,114,99,101,32,99,111,100,101,46,10,10,32,32,32, + 32,32,32,32,32,73,109,112,108,101,109,101,110,116,105,110, + 103,32,116,104,105,115,32,109,101,116,104,111,100,32,97,108, + 108,111,119,115,32,116,104,101,32,108,111,97,100,101,114,32, + 116,111,32,114,101,97,100,32,98,121,116,101,99,111,100,101, + 32,102,105,108,101,115,46,10,32,32,32,32,32,32,32,32, + 117,5,0,0,0,109,116,105,109,101,40,1,0,0,0,117, + 10,0,0,0,112,97,116,104,95,109,116,105,109,101,40,2, + 0,0,0,117,4,0,0,0,115,101,108,102,117,4,0,0, + 0,112,97,116,104,40,0,0,0,0,40,0,0,0,0,117, + 29,0,0,0,60,102,114,111,122,101,110,32,105,109,112,111, + 114,116,108,105,98,46,95,98,111,111,116,115,116,114,97,112, + 62,117,10,0,0,0,112,97,116,104,95,115,116,97,116,115, + 202,1,0,0,115,2,0,0,0,0,10,117,23,0,0,0, + 83,111,117,114,99,101,76,111,97,100,101,114,46,112,97,116, + 104,95,115,116,97,116,115,99,3,0,0,0,0,0,0,0, + 3,0,0,0,1,0,0,0,67,0,0,0,115,10,0,0, + 0,116,0,0,130,1,0,100,1,0,83,40,2,0,0,0, + 117,151,0,0,0,79,112,116,105,111,110,97,108,32,109,101, + 116,104,111,100,32,119,104,105,99,104,32,119,114,105,116,101, + 115,32,100,97,116,97,32,40,98,121,116,101,115,41,32,116, + 111,32,97,32,102,105,108,101,32,112,97,116,104,32,40,97, + 32,115,116,114,41,46,10,10,32,32,32,32,32,32,32,32, + 73,109,112,108,101,109,101,110,116,105,110,103,32,116,104,105, + 115,32,109,101,116,104,111,100,32,97,108,108,111,119,115,32, + 102,111,114,32,116,104,101,32,119,114,105,116,105,110,103,32, + 111,102,32,98,121,116,101,99,111,100,101,32,102,105,108,101, + 115,46,10,10,32,32,32,32,32,32,32,32,78,40,1,0, + 0,0,117,19,0,0,0,78,111,116,73,109,112,108,101,109, + 101,110,116,101,100,69,114,114,111,114,40,3,0,0,0,117, + 4,0,0,0,115,101,108,102,117,4,0,0,0,112,97,116, + 104,117,4,0,0,0,100,97,116,97,40,0,0,0,0,40, + 0,0,0,0,117,29,0,0,0,60,102,114,111,122,101,110, + 32,105,109,112,111,114,116,108,105,98,46,95,98,111,111,116, + 115,116,114,97,112,62,117,8,0,0,0,115,101,116,95,100, + 97,116,97,214,1,0,0,115,2,0,0,0,0,6,117,21, + 0,0,0,83,111,117,114,99,101,76,111,97,100,101,114,46, + 115,101,116,95,100,97,116,97,99,2,0,0,0,0,0,0, + 0,7,0,0,0,12,0,0,0,67,0,0,0,115,156,0, + 0,0,100,1,0,100,2,0,108,0,0,125,2,0,124,0, + 0,106,1,0,124,1,0,131,1,0,125,3,0,121,19,0, + 124,0,0,106,2,0,124,3,0,131,1,0,125,4,0,87, + 110,36,0,4,116,3,0,107,10,0,114,84,0,1,1,1, + 116,4,0,100,3,0,100,4,0,124,1,0,131,1,1,130, + 1,0,89,110,1,0,88,124,2,0,106,5,0,116,6,0, + 106,7,0,124,4,0,131,1,0,106,8,0,131,1,0,125, + 5,0,116,6,0,106,9,0,100,2,0,100,5,0,131,2, + 0,125,6,0,124,6,0,106,12,0,124,4,0,106,12,0, + 124,5,0,100,1,0,25,131,1,0,131,1,0,83,40,6, + 0,0,0,117,52,0,0,0,67,111,110,99,114,101,116,101, + 32,105,109,112,108,101,109,101,110,116,97,116,105,111,110,32, + 111,102,32,73,110,115,112,101,99,116,76,111,97,100,101,114, + 46,103,101,116,95,115,111,117,114,99,101,46,105,0,0,0, + 0,78,117,39,0,0,0,115,111,117,114,99,101,32,110,111, + 116,32,97,118,97,105,108,97,98,108,101,32,116,104,114,111, + 117,103,104,32,103,101,116,95,100,97,116,97,40,41,117,4, + 0,0,0,110,97,109,101,84,40,13,0,0,0,117,8,0, + 0,0,116,111,107,101,110,105,122,101,117,12,0,0,0,103, + 101,116,95,102,105,108,101,110,97,109,101,117,8,0,0,0, + 103,101,116,95,100,97,116,97,117,7,0,0,0,73,79,69, + 114,114,111,114,117,11,0,0,0,73,109,112,111,114,116,69, + 114,114,111,114,117,15,0,0,0,100,101,116,101,99,116,95, + 101,110,99,111,100,105,110,103,117,3,0,0,0,95,105,111, + 117,7,0,0,0,66,121,116,101,115,73,79,117,8,0,0, + 0,114,101,97,100,108,105,110,101,117,25,0,0,0,73,110, + 99,114,101,109,101,110,116,97,108,78,101,119,108,105,110,101, + 68,101,99,111,100,101,114,117,4,0,0,0,78,111,110,101, + 117,4,0,0,0,84,114,117,101,117,6,0,0,0,100,101, + 99,111,100,101,40,7,0,0,0,117,4,0,0,0,115,101, + 108,102,117,8,0,0,0,102,117,108,108,110,97,109,101,117, + 8,0,0,0,116,111,107,101,110,105,122,101,117,4,0,0, + 0,112,97,116,104,117,12,0,0,0,115,111,117,114,99,101, + 95,98,121,116,101,115,117,8,0,0,0,101,110,99,111,100, + 105,110,103,117,15,0,0,0,110,101,119,108,105,110,101,95, + 100,101,99,111,100,101,114,40,0,0,0,0,40,0,0,0, + 0,117,29,0,0,0,60,102,114,111,122,101,110,32,105,109, + 112,111,114,116,108,105,98,46,95,98,111,111,116,115,116,114, + 97,112,62,117,10,0,0,0,103,101,116,95,115,111,117,114, + 99,101,223,1,0,0,115,20,0,0,0,0,2,12,1,15, + 1,3,1,19,1,13,1,9,1,14,1,27,1,18,1,117, + 23,0,0,0,83,111,117,114,99,101,76,111,97,100,101,114, + 46,103,101,116,95,115,111,117,114,99,101,99,2,0,0,0, + 0,0,0,0,12,0,0,0,37,0,0,0,67,0,0,0, + 115,39,2,0,0,124,0,0,106,0,0,124,1,0,131,1, + 0,125,2,0,116,1,0,106,2,0,124,2,0,131,1,0, + 125,3,0,100,10,0,125,4,0,124,3,0,100,10,0,107, + 9,0,114,64,1,121,19,0,124,0,0,106,4,0,124,2, + 0,131,1,0,125,5,0,87,110,18,0,4,116,5,0,107, + 10,0,114,87,0,1,1,1,89,113,64,1,88,116,6,0, + 124,5,0,100,1,0,25,131,1,0,125,4,0,121,19,0, + 124,0,0,106,7,0,124,3,0,131,1,0,125,6,0,87, + 110,18,0,4,116,8,0,107,10,0,114,143,0,1,1,1, + 89,113,64,1,88,121,28,0,124,0,0,106,9,0,124,1, + 0,124,6,0,124,3,0,124,5,0,131,4,0,125,7,0, + 87,110,24,0,4,116,10,0,116,11,0,102,2,0,107,10, + 0,114,198,0,1,1,1,89,113,64,1,88,116,12,0,100, + 2,0,124,3,0,124,2,0,131,3,0,1,116,13,0,106, + 14,0,124,7,0,131,1,0,125,8,0,116,15,0,124,8, + 0,116,16,0,131,2,0,114,22,1,116,1,0,106,17,0, + 124,8,0,124,2,0,131,2,0,1,116,12,0,100,3,0, + 124,3,0,131,2,0,1,124,8,0,83,100,4,0,125,9, + 0,116,10,0,124,9,0,106,18,0,124,3,0,131,1,0, + 100,5,0,124,1,0,100,6,0,124,3,0,131,1,2,130, + 1,0,110,0,0,124,0,0,106,7,0,124,2,0,131,1, + 0,125,10,0,116,19,0,124,10,0,124,2,0,100,7,0, + 100,8,0,100,11,0,131,3,1,125,11,0,116,12,0,100, + 3,0,124,2,0,131,2,0,1,116,21,0,106,22,0,12, + 114,35,2,124,3,0,100,10,0,107,9,0,114,35,2,124, + 4,0,100,10,0,107,9,0,114,35,2,116,23,0,116,1, + 0,106,24,0,131,0,0,131,1,0,125,6,0,124,6,0, + 106,25,0,116,26,0,124,4,0,131,1,0,131,1,0,1, + 124,6,0,106,25,0,116,26,0,116,27,0,124,10,0,131, + 1,0,131,1,0,131,1,0,1,124,6,0,106,25,0,116, + 13,0,106,28,0,124,11,0,131,1,0,131,1,0,1,121, + 33,0,124,0,0,106,29,0,124,3,0,124,6,0,131,2, + 0,1,116,12,0,100,9,0,124,3,0,131,2,0,1,87, + 113,35,2,4,116,5,0,107,10,0,114,31,2,1,1,1, + 89,113,35,2,88,110,0,0,124,11,0,83,40,12,0,0, + 0,117,190,0,0,0,67,111,110,99,114,101,116,101,32,105, + 109,112,108,101,109,101,110,116,97,116,105,111,110,32,111,102, + 32,73,110,115,112,101,99,116,76,111,97,100,101,114,46,103, + 101,116,95,99,111,100,101,46,10,10,32,32,32,32,32,32, + 32,32,82,101,97,100,105,110,103,32,111,102,32,98,121,116, + 101,99,111,100,101,32,114,101,113,117,105,114,101,115,32,112, + 97,116,104,95,115,116,97,116,115,32,116,111,32,98,101,32, + 105,109,112,108,101,109,101,110,116,101,100,46,32,84,111,32, + 119,114,105,116,101,10,32,32,32,32,32,32,32,32,98,121, + 116,101,99,111,100,101,44,32,115,101,116,95,100,97,116,97, + 32,109,117,115,116,32,97,108,115,111,32,98,101,32,105,109, + 112,108,101,109,101,110,116,101,100,46,10,10,32,32,32,32, + 32,32,32,32,117,5,0,0,0,109,116,105,109,101,117,13, + 0,0,0,123,125,32,109,97,116,99,104,101,115,32,123,125, + 117,19,0,0,0,99,111,100,101,32,111,98,106,101,99,116, + 32,102,114,111,109,32,123,125,117,21,0,0,0,78,111,110, + 45,99,111,100,101,32,111,98,106,101,99,116,32,105,110,32, + 123,125,117,4,0,0,0,110,97,109,101,117,4,0,0,0, + 112,97,116,104,117,4,0,0,0,101,120,101,99,117,12,0, + 0,0,100,111,110,116,95,105,110,104,101,114,105,116,117,10, + 0,0,0,119,114,111,116,101,32,123,33,114,125,78,84,40, + 30,0,0,0,117,12,0,0,0,103,101,116,95,102,105,108, + 101,110,97,109,101,117,3,0,0,0,105,109,112,117,17,0, + 0,0,99,97,99,104,101,95,102,114,111,109,95,115,111,117, + 114,99,101,117,4,0,0,0,78,111,110,101,117,10,0,0, + 0,112,97,116,104,95,115,116,97,116,115,117,19,0,0,0, + 78,111,116,73,109,112,108,101,109,101,110,116,101,100,69,114, + 114,111,114,117,3,0,0,0,105,110,116,117,8,0,0,0, + 103,101,116,95,100,97,116,97,117,7,0,0,0,73,79,69, + 114,114,111,114,117,20,0,0,0,95,98,121,116,101,115,95, + 102,114,111,109,95,98,121,116,101,99,111,100,101,117,11,0, + 0,0,73,109,112,111,114,116,69,114,114,111,114,117,8,0, + 0,0,69,79,70,69,114,114,111,114,117,15,0,0,0,118, + 101,114,98,111,115,101,95,109,101,115,115,97,103,101,117,7, + 0,0,0,109,97,114,115,104,97,108,117,5,0,0,0,108, + 111,97,100,115,117,10,0,0,0,105,115,105,110,115,116,97, + 110,99,101,117,9,0,0,0,99,111,100,101,95,116,121,112, + 101,117,16,0,0,0,95,102,105,120,95,99,111,95,102,105, + 108,101,110,97,109,101,117,6,0,0,0,102,111,114,109,97, + 116,117,7,0,0,0,99,111,109,112,105,108,101,117,4,0, + 0,0,84,114,117,101,117,3,0,0,0,115,121,115,117,19, + 0,0,0,100,111,110,116,95,119,114,105,116,101,95,98,121, + 116,101,99,111,100,101,117,9,0,0,0,98,121,116,101,97, + 114,114,97,121,117,9,0,0,0,103,101,116,95,109,97,103, + 105,99,117,6,0,0,0,101,120,116,101,110,100,117,7,0, + 0,0,95,119,95,108,111,110,103,117,3,0,0,0,108,101, + 110,117,5,0,0,0,100,117,109,112,115,117,8,0,0,0, + 115,101,116,95,100,97,116,97,40,12,0,0,0,117,4,0, + 0,0,115,101,108,102,117,8,0,0,0,102,117,108,108,110, + 97,109,101,117,11,0,0,0,115,111,117,114,99,101,95,112, + 97,116,104,117,13,0,0,0,98,121,116,101,99,111,100,101, + 95,112,97,116,104,117,12,0,0,0,115,111,117,114,99,101, + 95,109,116,105,109,101,117,2,0,0,0,115,116,117,4,0, + 0,0,100,97,116,97,117,10,0,0,0,98,121,116,101,115, + 95,100,97,116,97,117,5,0,0,0,102,111,117,110,100,117, + 3,0,0,0,109,115,103,117,12,0,0,0,115,111,117,114, + 99,101,95,98,121,116,101,115,117,11,0,0,0,99,111,100, + 101,95,111,98,106,101,99,116,40,0,0,0,0,40,0,0, + 0,0,117,29,0,0,0,60,102,114,111,122,101,110,32,105, + 109,112,111,114,116,108,105,98,46,95,98,111,111,116,115,116, + 114,97,112,62,117,8,0,0,0,103,101,116,95,99,111,100, + 101,236,1,0,0,115,92,0,0,0,0,7,15,1,15,1, + 6,1,12,1,3,1,19,1,13,1,5,2,16,1,3,1, + 19,1,13,1,5,2,3,1,12,1,3,1,13,1,19,1, + 5,2,9,1,7,1,15,1,15,1,16,1,6,1,7,1, + 4,2,6,1,18,1,18,1,15,1,15,1,9,1,13,1, + 22,1,12,4,18,1,19,1,25,1,22,1,3,1,16,1, + 17,1,13,1,8,1,117,21,0,0,0,83,111,117,114,99, + 101,76,111,97,100,101,114,46,103,101,116,95,99,111,100,101, + 99,2,0,0,0,0,0,0,0,2,0,0,0,2,0,0, + 0,67,0,0,0,115,13,0,0,0,124,0,0,106,0,0, + 124,1,0,131,1,0,83,40,1,0,0,0,117,0,1,0, + 0,67,111,110,99,114,101,116,101,32,105,109,112,108,101,109, + 101,110,116,97,116,105,111,110,32,111,102,32,76,111,97,100, + 101,114,46,108,111,97,100,95,109,111,100,117,108,101,46,10, + 10,32,32,32,32,32,32,32,32,82,101,113,117,105,114,101, + 115,32,69,120,101,99,117,116,105,111,110,76,111,97,100,101, + 114,46,103,101,116,95,102,105,108,101,110,97,109,101,32,97, + 110,100,32,82,101,115,111,117,114,99,101,76,111,97,100,101, + 114,46,103,101,116,95,100,97,116,97,32,116,111,32,98,101, + 10,32,32,32,32,32,32,32,32,105,109,112,108,101,109,101, + 110,116,101,100,32,116,111,32,108,111,97,100,32,115,111,117, + 114,99,101,32,99,111,100,101,46,32,85,115,101,32,111,102, + 32,98,121,116,101,99,111,100,101,32,105,115,32,100,105,99, + 116,97,116,101,100,32,98,121,32,119,104,101,116,104,101,114, + 10,32,32,32,32,32,32,32,32,103,101,116,95,99,111,100, + 101,32,117,115,101,115,47,119,114,105,116,101,115,32,98,121, + 116,101,99,111,100,101,46,10,10,32,32,32,32,32,32,32, + 32,40,1,0,0,0,117,12,0,0,0,95,108,111,97,100, + 95,109,111,100,117,108,101,40,2,0,0,0,117,4,0,0, + 0,115,101,108,102,117,8,0,0,0,102,117,108,108,110,97, + 109,101,40,0,0,0,0,40,0,0,0,0,117,29,0,0, + 0,60,102,114,111,122,101,110,32,105,109,112,111,114,116,108, + 105,98,46,95,98,111,111,116,115,116,114,97,112,62,117,11, + 0,0,0,108,111,97,100,95,109,111,100,117,108,101,41,2, + 0,0,115,2,0,0,0,0,8,117,24,0,0,0,83,111, + 117,114,99,101,76,111,97,100,101,114,46,108,111,97,100,95, + 109,111,100,117,108,101,78,40,9,0,0,0,117,8,0,0, + 0,95,95,110,97,109,101,95,95,117,10,0,0,0,95,95, + 109,111,100,117,108,101,95,95,117,12,0,0,0,95,95,113, + 117,97,108,110,97,109,101,95,95,117,10,0,0,0,112,97, + 116,104,95,109,116,105,109,101,117,10,0,0,0,112,97,116, + 104,95,115,116,97,116,115,117,8,0,0,0,115,101,116,95, + 100,97,116,97,117,10,0,0,0,103,101,116,95,115,111,117, + 114,99,101,117,8,0,0,0,103,101,116,95,99,111,100,101, + 117,11,0,0,0,108,111,97,100,95,109,111,100,117,108,101, + 40,1,0,0,0,117,10,0,0,0,95,95,108,111,99,97, + 108,115,95,95,40,0,0,0,0,40,0,0,0,0,117,29, + 0,0,0,60,102,114,111,122,101,110,32,105,109,112,111,114, + 116,108,105,98,46,95,98,111,111,116,115,116,114,97,112,62, + 117,12,0,0,0,83,111,117,114,99,101,76,111,97,100,101, + 114,194,1,0,0,115,12,0,0,0,16,2,12,6,12,12, + 12,9,12,13,12,61,117,12,0,0,0,83,111,117,114,99, + 101,76,111,97,100,101,114,99,1,0,0,0,0,0,0,0, + 1,0,0,0,3,0,0,0,66,0,0,0,115,68,0,0, + 0,124,0,0,69,101,0,0,90,1,0,100,0,0,90,2, + 0,100,1,0,90,3,0,100,2,0,100,3,0,132,0,0, + 90,4,0,101,5,0,100,4,0,100,5,0,132,0,0,131, + 1,0,90,6,0,100,6,0,100,7,0,132,0,0,90,7, + 0,100,8,0,83,40,9,0,0,0,117,11,0,0,0,95, + 70,105,108,101,76,111,97,100,101,114,117,103,0,0,0,66, + 97,115,101,32,102,105,108,101,32,108,111,97,100,101,114,32, + 99,108,97,115,115,32,119,104,105,99,104,32,105,109,112,108, + 101,109,101,110,116,115,32,116,104,101,32,108,111,97,100,101, + 114,32,112,114,111,116,111,99,111,108,32,109,101,116,104,111, + 100,115,32,116,104,97,116,10,32,32,32,32,114,101,113,117, + 105,114,101,32,102,105,108,101,32,115,121,115,116,101,109,32, + 117,115,97,103,101,46,99,3,0,0,0,0,0,0,0,3, + 0,0,0,2,0,0,0,67,0,0,0,115,22,0,0,0, + 124,1,0,124,0,0,95,0,0,124,2,0,124,0,0,95, + 1,0,100,1,0,83,40,2,0,0,0,117,75,0,0,0, + 67,97,99,104,101,32,116,104,101,32,109,111,100,117,108,101, + 32,110,97,109,101,32,97,110,100,32,116,104,101,32,112,97, + 116,104,32,116,111,32,116,104,101,32,102,105,108,101,32,102, + 111,117,110,100,32,98,121,32,116,104,101,10,32,32,32,32, + 32,32,32,32,102,105,110,100,101,114,46,78,40,2,0,0, + 0,117,5,0,0,0,95,110,97,109,101,117,5,0,0,0, + 95,112,97,116,104,40,3,0,0,0,117,4,0,0,0,115, + 101,108,102,117,8,0,0,0,102,117,108,108,110,97,109,101, + 117,4,0,0,0,112,97,116,104,40,0,0,0,0,40,0, + 0,0,0,117,29,0,0,0,60,102,114,111,122,101,110,32, + 105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, + 116,114,97,112,62,117,8,0,0,0,95,95,105,110,105,116, + 95,95,57,2,0,0,115,4,0,0,0,0,3,9,1,117, + 20,0,0,0,95,70,105,108,101,76,111,97,100,101,114,46, + 95,95,105,110,105,116,95,95,99,2,0,0,0,0,0,0, + 0,2,0,0,0,1,0,0,0,67,0,0,0,115,7,0, + 0,0,124,0,0,106,0,0,83,40,1,0,0,0,117,58, + 0,0,0,82,101,116,117,114,110,32,116,104,101,32,112,97, + 116,104,32,116,111,32,116,104,101,32,115,111,117,114,99,101, + 32,102,105,108,101,32,97,115,32,102,111,117,110,100,32,98, + 121,32,116,104,101,32,102,105,110,100,101,114,46,40,1,0, + 0,0,117,5,0,0,0,95,112,97,116,104,40,2,0,0, + 0,117,4,0,0,0,115,101,108,102,117,8,0,0,0,102, + 117,108,108,110,97,109,101,40,0,0,0,0,40,0,0,0, + 0,117,29,0,0,0,60,102,114,111,122,101,110,32,105,109, + 112,111,114,116,108,105,98,46,95,98,111,111,116,115,116,114, + 97,112,62,117,12,0,0,0,103,101,116,95,102,105,108,101, + 110,97,109,101,63,2,0,0,115,2,0,0,0,0,3,117, + 24,0,0,0,95,70,105,108,101,76,111,97,100,101,114,46, + 103,101,116,95,102,105,108,101,110,97,109,101,99,2,0,0, + 0,0,0,0,0,3,0,0,0,8,0,0,0,67,0,0, + 0,115,41,0,0,0,116,0,0,106,1,0,124,1,0,100, + 1,0,131,2,0,143,17,0,125,2,0,124,2,0,106,2, + 0,131,0,0,83,87,100,2,0,81,88,100,2,0,83,40, + 3,0,0,0,117,39,0,0,0,82,101,116,117,114,110,32, + 116,104,101,32,100,97,116,97,32,102,114,111,109,32,112,97, + 116,104,32,97,115,32,114,97,119,32,98,121,116,101,115,46, + 117,1,0,0,0,114,78,40,3,0,0,0,117,3,0,0, + 0,95,105,111,117,6,0,0,0,70,105,108,101,73,79,117, + 4,0,0,0,114,101,97,100,40,3,0,0,0,117,4,0, + 0,0,115,101,108,102,117,4,0,0,0,112,97,116,104,117, + 4,0,0,0,102,105,108,101,40,0,0,0,0,40,0,0, + 0,0,117,29,0,0,0,60,102,114,111,122,101,110,32,105, + 109,112,111,114,116,108,105,98,46,95,98,111,111,116,115,116, + 114,97,112,62,117,8,0,0,0,103,101,116,95,100,97,116, + 97,68,2,0,0,115,4,0,0,0,0,2,21,1,117,20, + 0,0,0,95,70,105,108,101,76,111,97,100,101,114,46,103, + 101,116,95,100,97,116,97,78,40,8,0,0,0,117,8,0, + 0,0,95,95,110,97,109,101,95,95,117,10,0,0,0,95, + 95,109,111,100,117,108,101,95,95,117,12,0,0,0,95,95, + 113,117,97,108,110,97,109,101,95,95,117,7,0,0,0,95, + 95,100,111,99,95,95,117,8,0,0,0,95,95,105,110,105, + 116,95,95,117,11,0,0,0,95,99,104,101,99,107,95,110, + 97,109,101,117,12,0,0,0,103,101,116,95,102,105,108,101, + 110,97,109,101,117,8,0,0,0,103,101,116,95,100,97,116, + 97,40,1,0,0,0,117,10,0,0,0,95,95,108,111,99, + 97,108,115,95,95,40,0,0,0,0,40,0,0,0,0,117, + 29,0,0,0,60,102,114,111,122,101,110,32,105,109,112,111, + 114,116,108,105,98,46,95,98,111,111,116,115,116,114,97,112, + 62,117,11,0,0,0,95,70,105,108,101,76,111,97,100,101, + 114,52,2,0,0,115,8,0,0,0,16,3,6,2,12,6, + 18,5,117,11,0,0,0,95,70,105,108,101,76,111,97,100, + 101,114,99,1,0,0,0,0,0,0,0,1,0,0,0,2, + 0,0,0,66,0,0,0,115,50,0,0,0,124,0,0,69, + 101,0,0,90,1,0,100,0,0,90,2,0,100,1,0,90, + 3,0,100,2,0,100,3,0,132,0,0,90,4,0,100,4, + 0,100,5,0,132,0,0,90,5,0,100,6,0,83,40,7, + 0,0,0,117,17,0,0,0,95,83,111,117,114,99,101,70, + 105,108,101,76,111,97,100,101,114,117,62,0,0,0,67,111, + 110,99,114,101,116,101,32,105,109,112,108,101,109,101,110,116, + 97,116,105,111,110,32,111,102,32,83,111,117,114,99,101,76, + 111,97,100,101,114,32,117,115,105,110,103,32,116,104,101,32, + 102,105,108,101,32,115,121,115,116,101,109,46,99,2,0,0, + 0,0,0,0,0,3,0,0,0,3,0,0,0,67,0,0, + 0,115,39,0,0,0,116,0,0,106,1,0,124,1,0,131, + 1,0,125,2,0,105,2,0,124,2,0,106,2,0,100,1, + 0,54,124,2,0,106,3,0,100,2,0,54,83,40,3,0, + 0,0,117,32,0,0,0,82,101,116,117,114,110,32,116,104, + 101,32,109,101,116,97,100,97,116,32,102,111,114,32,116,104, + 101,32,112,97,116,104,46,117,5,0,0,0,109,116,105,109, + 101,117,4,0,0,0,115,105,122,101,40,4,0,0,0,117, + 3,0,0,0,95,111,115,117,4,0,0,0,115,116,97,116, + 117,8,0,0,0,115,116,95,109,116,105,109,101,117,7,0, + 0,0,115,116,95,115,105,122,101,40,3,0,0,0,117,4, + 0,0,0,115,101,108,102,117,4,0,0,0,112,97,116,104, + 117,2,0,0,0,115,116,40,0,0,0,0,40,0,0,0, + 0,117,29,0,0,0,60,102,114,111,122,101,110,32,105,109, + 112,111,114,116,108,105,98,46,95,98,111,111,116,115,116,114, + 97,112,62,117,10,0,0,0,112,97,116,104,95,115,116,97, + 116,115,78,2,0,0,115,4,0,0,0,0,2,15,1,117, + 28,0,0,0,95,83,111,117,114,99,101,70,105,108,101,76, + 111,97,100,101,114,46,112,97,116,104,95,115,116,97,116,115, + 99,3,0,0,0,0,0,0,0,8,0,0,0,13,0,0, + 0,67,0,0,0,115,254,0,0,0,124,1,0,106,0,0, + 116,1,0,131,1,0,92,3,0,125,3,0,125,4,0,125, + 5,0,103,0,0,125,6,0,120,60,0,124,3,0,114,92, + 0,116,2,0,124,3,0,131,1,0,12,114,92,0,124,3, + 0,106,0,0,116,1,0,131,1,0,92,3,0,125,3,0, + 125,4,0,125,7,0,124,6,0,106,3,0,124,7,0,131, + 1,0,1,113,33,0,87,120,97,0,116,4,0,124,6,0, + 131,1,0,68,93,83,0,125,7,0,116,5,0,124,3,0, + 124,7,0,131,2,0,125,3,0,121,17,0,116,6,0,106, + 7,0,124,3,0,131,1,0,1,87,113,106,0,4,116,8, + 0,107,10,0,114,167,0,1,1,1,119,106,0,89,113,106, + 0,4,116,9,0,107,10,0,114,188,0,1,1,1,100,1, + 0,83,89,113,106,0,88,113,106,0,87,121,30,0,116,10, + 0,124,1,0,124,2,0,131,2,0,1,116,11,0,100,2, + 0,124,1,0,131,2,0,1,87,110,24,0,4,116,9,0, + 116,8,0,102,2,0,107,10,0,114,249,0,1,1,1,89, + 110,1,0,88,100,1,0,83,40,3,0,0,0,117,27,0, + 0,0,87,114,105,116,101,32,98,121,116,101,115,32,100,97, + 116,97,32,116,111,32,97,32,102,105,108,101,46,78,117,12, + 0,0,0,99,114,101,97,116,101,100,32,123,33,114,125,40, + 12,0,0,0,117,10,0,0,0,114,112,97,114,116,105,116, + 105,111,110,117,8,0,0,0,112,97,116,104,95,115,101,112, + 117,11,0,0,0,95,112,97,116,104,95,105,115,100,105,114, + 117,6,0,0,0,97,112,112,101,110,100,117,8,0,0,0, + 114,101,118,101,114,115,101,100,117,10,0,0,0,95,112,97, + 116,104,95,106,111,105,110,117,3,0,0,0,95,111,115,117, + 5,0,0,0,109,107,100,105,114,117,15,0,0,0,70,105, + 108,101,69,120,105,115,116,115,69,114,114,111,114,117,15,0, + 0,0,80,101,114,109,105,115,115,105,111,110,69,114,114,111, + 114,117,13,0,0,0,95,119,114,105,116,101,95,97,116,111, + 109,105,99,117,15,0,0,0,118,101,114,98,111,115,101,95, + 109,101,115,115,97,103,101,40,8,0,0,0,117,4,0,0, + 0,115,101,108,102,117,4,0,0,0,112,97,116,104,117,4, + 0,0,0,100,97,116,97,117,6,0,0,0,112,97,114,101, + 110,116,117,1,0,0,0,95,117,8,0,0,0,102,105,108, + 101,110,97,109,101,117,10,0,0,0,112,97,116,104,95,112, + 97,114,116,115,117,4,0,0,0,112,97,114,116,40,0,0, + 0,0,40,0,0,0,0,117,29,0,0,0,60,102,114,111, + 122,101,110,32,105,109,112,111,114,116,108,105,98,46,95,98, + 111,111,116,115,116,114,97,112,62,117,8,0,0,0,115,101, + 116,95,100,97,116,97,83,2,0,0,115,36,0,0,0,0, + 2,24,1,6,2,22,1,24,1,17,2,19,1,15,1,3, + 1,17,1,13,2,7,1,13,3,13,1,3,1,13,1,17, + 1,19,3,117,26,0,0,0,95,83,111,117,114,99,101,70, + 105,108,101,76,111,97,100,101,114,46,115,101,116,95,100,97, + 116,97,78,40,6,0,0,0,117,8,0,0,0,95,95,110, + 97,109,101,95,95,117,10,0,0,0,95,95,109,111,100,117, + 108,101,95,95,117,12,0,0,0,95,95,113,117,97,108,110, + 97,109,101,95,95,117,7,0,0,0,95,95,100,111,99,95, + 95,117,10,0,0,0,112,97,116,104,95,115,116,97,116,115, + 117,8,0,0,0,115,101,116,95,100,97,116,97,40,1,0, + 0,0,117,10,0,0,0,95,95,108,111,99,97,108,115,95, + 95,40,0,0,0,0,40,0,0,0,0,117,29,0,0,0, + 60,102,114,111,122,101,110,32,105,109,112,111,114,116,108,105, + 98,46,95,98,111,111,116,115,116,114,97,112,62,117,17,0, + 0,0,95,83,111,117,114,99,101,70,105,108,101,76,111,97, + 100,101,114,74,2,0,0,115,6,0,0,0,16,2,6,2, + 12,5,117,17,0,0,0,95,83,111,117,114,99,101,70,105, + 108,101,76,111,97,100,101,114,99,1,0,0,0,0,0,0, + 0,1,0,0,0,2,0,0,0,66,0,0,0,115,62,0, + 0,0,124,0,0,69,101,0,0,90,1,0,100,0,0,90, + 2,0,100,1,0,90,3,0,100,2,0,100,3,0,132,0, + 0,90,4,0,100,4,0,100,5,0,132,0,0,90,5,0, + 100,6,0,100,7,0,132,0,0,90,6,0,100,8,0,83, + 40,9,0,0,0,117,21,0,0,0,95,83,111,117,114,99, + 101,108,101,115,115,70,105,108,101,76,111,97,100,101,114,117, + 45,0,0,0,76,111,97,100,101,114,32,119,104,105,99,104, + 32,104,97,110,100,108,101,115,32,115,111,117,114,99,101,108, + 101,115,115,32,102,105,108,101,32,105,109,112,111,114,116,115, + 46,99,2,0,0,0,0,0,0,0,2,0,0,0,4,0, + 0,0,67,0,0,0,115,19,0,0,0,124,0,0,106,0, + 0,124,1,0,100,1,0,100,2,0,131,1,1,83,40,3, + 0,0,0,78,117,10,0,0,0,115,111,117,114,99,101,108, + 101,115,115,84,40,2,0,0,0,117,12,0,0,0,95,108, + 111,97,100,95,109,111,100,117,108,101,117,4,0,0,0,84, + 114,117,101,40,2,0,0,0,117,4,0,0,0,115,101,108, + 102,117,8,0,0,0,102,117,108,108,110,97,109,101,40,0, + 0,0,0,40,0,0,0,0,117,29,0,0,0,60,102,114, + 111,122,101,110,32,105,109,112,111,114,116,108,105,98,46,95, + 98,111,111,116,115,116,114,97,112,62,117,11,0,0,0,108, + 111,97,100,95,109,111,100,117,108,101,116,2,0,0,115,2, + 0,0,0,0,1,117,33,0,0,0,95,83,111,117,114,99, + 101,108,101,115,115,70,105,108,101,76,111,97,100,101,114,46, + 108,111,97,100,95,109,111,100,117,108,101,99,2,0,0,0, + 0,0,0,0,6,0,0,0,6,0,0,0,67,0,0,0, + 115,138,0,0,0,124,0,0,106,0,0,124,1,0,131,1, + 0,125,2,0,124,0,0,106,1,0,124,2,0,131,1,0, + 125,3,0,124,0,0,106,2,0,124,1,0,124,3,0,124, + 2,0,100,0,0,131,4,0,125,4,0,116,4,0,106,5, + 0,124,4,0,131,1,0,125,5,0,116,6,0,124,5,0, + 116,7,0,131,2,0,114,101,0,116,8,0,100,1,0,124, + 2,0,131,2,0,1,124,5,0,83,116,9,0,100,2,0, + 106,10,0,124,2,0,131,1,0,100,3,0,124,1,0,100, + 4,0,124,2,0,131,1,2,130,1,0,100,0,0,83,40, + 5,0,0,0,78,117,21,0,0,0,99,111,100,101,32,111, + 98,106,101,99,116,32,102,114,111,109,32,123,33,114,125,117, + 21,0,0,0,78,111,110,45,99,111,100,101,32,111,98,106, + 101,99,116,32,105,110,32,123,125,117,4,0,0,0,110,97, + 109,101,117,4,0,0,0,112,97,116,104,40,11,0,0,0, + 117,12,0,0,0,103,101,116,95,102,105,108,101,110,97,109, + 101,117,8,0,0,0,103,101,116,95,100,97,116,97,117,20, + 0,0,0,95,98,121,116,101,115,95,102,114,111,109,95,98, + 121,116,101,99,111,100,101,117,4,0,0,0,78,111,110,101, + 117,7,0,0,0,109,97,114,115,104,97,108,117,5,0,0, + 0,108,111,97,100,115,117,10,0,0,0,105,115,105,110,115, + 116,97,110,99,101,117,9,0,0,0,99,111,100,101,95,116, + 121,112,101,117,15,0,0,0,118,101,114,98,111,115,101,95, + 109,101,115,115,97,103,101,117,11,0,0,0,73,109,112,111, + 114,116,69,114,114,111,114,117,6,0,0,0,102,111,114,109, + 97,116,40,6,0,0,0,117,4,0,0,0,115,101,108,102, + 117,8,0,0,0,102,117,108,108,110,97,109,101,117,4,0, + 0,0,112,97,116,104,117,4,0,0,0,100,97,116,97,117, + 10,0,0,0,98,121,116,101,115,95,100,97,116,97,117,5, + 0,0,0,102,111,117,110,100,40,0,0,0,0,40,0,0, + 0,0,117,29,0,0,0,60,102,114,111,122,101,110,32,105, + 109,112,111,114,116,108,105,98,46,95,98,111,111,116,115,116, + 114,97,112,62,117,8,0,0,0,103,101,116,95,99,111,100, + 101,119,2,0,0,115,18,0,0,0,0,1,15,1,15,1, + 24,1,15,1,15,1,13,1,4,2,18,1,117,30,0,0, + 0,95,83,111,117,114,99,101,108,101,115,115,70,105,108,101, + 76,111,97,100,101,114,46,103,101,116,95,99,111,100,101,99, + 2,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0, + 67,0,0,0,115,4,0,0,0,100,1,0,83,40,2,0, + 0,0,117,39,0,0,0,82,101,116,117,114,110,32,78,111, + 110,101,32,97,115,32,116,104,101,114,101,32,105,115,32,110, + 111,32,115,111,117,114,99,101,32,99,111,100,101,46,78,40, + 1,0,0,0,117,4,0,0,0,78,111,110,101,40,2,0, + 0,0,117,4,0,0,0,115,101,108,102,117,8,0,0,0, + 102,117,108,108,110,97,109,101,40,0,0,0,0,40,0,0, + 0,0,117,29,0,0,0,60,102,114,111,122,101,110,32,105, + 109,112,111,114,116,108,105,98,46,95,98,111,111,116,115,116, + 114,97,112,62,117,10,0,0,0,103,101,116,95,115,111,117, + 114,99,101,131,2,0,0,115,2,0,0,0,0,2,117,32, + 0,0,0,95,83,111,117,114,99,101,108,101,115,115,70,105, + 108,101,76,111,97,100,101,114,46,103,101,116,95,115,111,117, + 114,99,101,78,40,7,0,0,0,117,8,0,0,0,95,95, + 110,97,109,101,95,95,117,10,0,0,0,95,95,109,111,100, + 117,108,101,95,95,117,12,0,0,0,95,95,113,117,97,108, + 110,97,109,101,95,95,117,7,0,0,0,95,95,100,111,99, + 95,95,117,11,0,0,0,108,111,97,100,95,109,111,100,117, + 108,101,117,8,0,0,0,103,101,116,95,99,111,100,101,117, + 10,0,0,0,103,101,116,95,115,111,117,114,99,101,40,1, + 0,0,0,117,10,0,0,0,95,95,108,111,99,97,108,115, + 95,95,40,0,0,0,0,40,0,0,0,0,117,29,0,0, + 0,60,102,114,111,122,101,110,32,105,109,112,111,114,116,108, + 105,98,46,95,98,111,111,116,115,116,114,97,112,62,117,21, + 0,0,0,95,83,111,117,114,99,101,108,101,115,115,70,105, + 108,101,76,111,97,100,101,114,112,2,0,0,115,8,0,0, + 0,16,2,6,2,12,3,12,12,117,21,0,0,0,95,83, + 111,117,114,99,101,108,101,115,115,70,105,108,101,76,111,97, + 100,101,114,99,1,0,0,0,0,0,0,0,1,0,0,0, + 5,0,0,0,66,0,0,0,115,122,0,0,0,124,0,0, + 69,101,0,0,90,1,0,100,0,0,90,2,0,100,1,0, + 90,3,0,100,2,0,100,3,0,132,0,0,90,4,0,101, + 5,0,101,6,0,101,7,0,100,4,0,100,5,0,132,0, + 0,131,1,0,131,1,0,131,1,0,90,8,0,101,5,0, + 100,6,0,100,7,0,132,0,0,131,1,0,90,9,0,101, + 5,0,100,8,0,100,9,0,132,0,0,131,1,0,90,10, + 0,101,5,0,100,10,0,100,11,0,132,0,0,131,1,0, + 90,11,0,100,12,0,83,40,13,0,0,0,117,20,0,0, + 0,95,69,120,116,101,110,115,105,111,110,70,105,108,101,76, + 111,97,100,101,114,117,93,0,0,0,76,111,97,100,101,114, + 32,102,111,114,32,101,120,116,101,110,115,105,111,110,32,109, + 111,100,117,108,101,115,46,10,10,32,32,32,32,84,104,101, + 32,99,111,110,115,116,114,117,99,116,111,114,32,105,115,32, + 100,101,115,105,103,110,101,100,32,116,111,32,119,111,114,107, + 32,119,105,116,104,32,70,105,108,101,70,105,110,100,101,114, + 46,10,10,32,32,32,32,99,3,0,0,0,0,0,0,0, + 3,0,0,0,2,0,0,0,67,0,0,0,115,22,0,0, + 0,124,1,0,124,0,0,95,0,0,124,2,0,124,0,0, + 95,1,0,100,0,0,83,40,1,0,0,0,78,40,2,0, + 0,0,117,5,0,0,0,95,110,97,109,101,117,5,0,0, + 0,95,112,97,116,104,40,3,0,0,0,117,4,0,0,0, + 115,101,108,102,117,4,0,0,0,110,97,109,101,117,4,0, + 0,0,112,97,116,104,40,0,0,0,0,40,0,0,0,0, + 117,29,0,0,0,60,102,114,111,122,101,110,32,105,109,112, + 111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97, + 112,62,117,8,0,0,0,95,95,105,110,105,116,95,95,144, + 2,0,0,115,4,0,0,0,0,1,9,1,117,29,0,0, + 0,95,69,120,116,101,110,115,105,111,110,70,105,108,101,76, + 111,97,100,101,114,46,95,95,105,110,105,116,95,95,99,2, + 0,0,0,0,0,0,0,4,0,0,0,9,0,0,0,67, + 0,0,0,115,113,0,0,0,124,1,0,116,0,0,106,1, + 0,107,6,0,125,2,0,121,45,0,116,2,0,106,3,0, + 124,1,0,124,0,0,106,4,0,131,2,0,125,3,0,116, + 5,0,100,1,0,124,0,0,106,4,0,131,2,0,1,124, + 3,0,83,87,110,46,0,1,1,1,124,2,0,12,114,101, + 0,124,1,0,116,0,0,106,1,0,107,6,0,114,101,0, + 116,0,0,106,1,0,124,1,0,61,110,0,0,130,0,0, + 89,110,1,0,88,100,2,0,83,40,3,0,0,0,117,25, + 0,0,0,76,111,97,100,32,97,110,32,101,120,116,101,110, + 115,105,111,110,32,109,111,100,117,108,101,46,117,33,0,0, + 0,101,120,116,101,110,115,105,111,110,32,109,111,100,117,108, + 101,32,108,111,97,100,101,100,32,102,114,111,109,32,123,33, + 114,125,78,40,6,0,0,0,117,3,0,0,0,115,121,115, + 117,7,0,0,0,109,111,100,117,108,101,115,117,3,0,0, + 0,105,109,112,117,12,0,0,0,108,111,97,100,95,100,121, + 110,97,109,105,99,117,5,0,0,0,95,112,97,116,104,117, + 15,0,0,0,118,101,114,98,111,115,101,95,109,101,115,115, + 97,103,101,40,4,0,0,0,117,4,0,0,0,115,101,108, + 102,117,8,0,0,0,102,117,108,108,110,97,109,101,117,9, + 0,0,0,105,115,95,114,101,108,111,97,100,117,6,0,0, + 0,109,111,100,117,108,101,40,0,0,0,0,40,0,0,0, + 0,117,29,0,0,0,60,102,114,111,122,101,110,32,105,109, + 112,111,114,116,108,105,98,46,95,98,111,111,116,115,116,114, + 97,112,62,117,11,0,0,0,108,111,97,100,95,109,111,100, + 117,108,101,148,2,0,0,115,18,0,0,0,0,5,15,1, + 3,1,21,1,16,1,8,1,3,1,22,1,13,1,117,32, + 0,0,0,95,69,120,116,101,110,115,105,111,110,70,105,108, + 101,76,111,97,100,101,114,46,108,111,97,100,95,109,111,100, + 117,108,101,99,2,0,0,0,0,0,0,0,2,0,0,0, + 1,0,0,0,67,0,0,0,115,4,0,0,0,100,1,0, + 83,40,2,0,0,0,117,59,0,0,0,82,101,116,117,114, + 110,32,70,97,108,115,101,32,97,115,32,97,110,32,101,120, + 116,101,110,115,105,111,110,32,109,111,100,117,108,101,32,99, + 97,110,32,110,101,118,101,114,32,98,101,32,97,32,112,97, + 99,107,97,103,101,46,70,40,1,0,0,0,117,5,0,0, + 0,70,97,108,115,101,40,2,0,0,0,117,4,0,0,0, + 115,101,108,102,117,8,0,0,0,102,117,108,108,110,97,109, + 101,40,0,0,0,0,40,0,0,0,0,117,29,0,0,0, + 60,102,114,111,122,101,110,32,105,109,112,111,114,116,108,105, + 98,46,95,98,111,111,116,115,116,114,97,112,62,117,10,0, + 0,0,105,115,95,112,97,99,107,97,103,101,163,2,0,0, + 115,2,0,0,0,0,3,117,31,0,0,0,95,69,120,116, + 101,110,115,105,111,110,70,105,108,101,76,111,97,100,101,114, + 46,105,115,95,112,97,99,107,97,103,101,99,2,0,0,0, + 0,0,0,0,2,0,0,0,1,0,0,0,67,0,0,0, + 115,4,0,0,0,100,1,0,83,40,2,0,0,0,117,63, + 0,0,0,82,101,116,117,114,110,32,78,111,110,101,32,97, + 115,32,97,110,32,101,120,116,101,110,115,105,111,110,32,109, + 111,100,117,108,101,32,99,97,110,110,111,116,32,99,114,101, + 97,116,101,32,97,32,99,111,100,101,32,111,98,106,101,99, + 116,46,78,40,1,0,0,0,117,4,0,0,0,78,111,110, + 101,40,2,0,0,0,117,4,0,0,0,115,101,108,102,117, + 8,0,0,0,102,117,108,108,110,97,109,101,40,0,0,0, + 0,40,0,0,0,0,117,29,0,0,0,60,102,114,111,122, + 101,110,32,105,109,112,111,114,116,108,105,98,46,95,98,111, + 111,116,115,116,114,97,112,62,117,8,0,0,0,103,101,116, + 95,99,111,100,101,168,2,0,0,115,2,0,0,0,0,3, + 117,29,0,0,0,95,69,120,116,101,110,115,105,111,110,70, + 105,108,101,76,111,97,100,101,114,46,103,101,116,95,99,111, + 100,101,99,2,0,0,0,0,0,0,0,2,0,0,0,1, + 0,0,0,67,0,0,0,115,4,0,0,0,100,1,0,83, + 40,2,0,0,0,117,53,0,0,0,82,101,116,117,114,110, + 32,78,111,110,101,32,97,115,32,101,120,116,101,110,115,105, + 111,110,32,109,111,100,117,108,101,115,32,104,97,118,101,32, + 110,111,32,115,111,117,114,99,101,32,99,111,100,101,46,78, + 40,1,0,0,0,117,4,0,0,0,78,111,110,101,40,2, + 0,0,0,117,4,0,0,0,115,101,108,102,117,8,0,0, + 0,102,117,108,108,110,97,109,101,40,0,0,0,0,40,0, + 0,0,0,117,29,0,0,0,60,102,114,111,122,101,110,32, + 105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, + 116,114,97,112,62,117,10,0,0,0,103,101,116,95,115,111, + 117,114,99,101,173,2,0,0,115,2,0,0,0,0,3,117, + 31,0,0,0,95,69,120,116,101,110,115,105,111,110,70,105, + 108,101,76,111,97,100,101,114,46,103,101,116,95,115,111,117, + 114,99,101,78,40,12,0,0,0,117,8,0,0,0,95,95, + 110,97,109,101,95,95,117,10,0,0,0,95,95,109,111,100, + 117,108,101,95,95,117,12,0,0,0,95,95,113,117,97,108, + 110,97,109,101,95,95,117,7,0,0,0,95,95,100,111,99, + 95,95,117,8,0,0,0,95,95,105,110,105,116,95,95,117, + 11,0,0,0,95,99,104,101,99,107,95,110,97,109,101,117, + 11,0,0,0,115,101,116,95,112,97,99,107,97,103,101,117, + 10,0,0,0,115,101,116,95,108,111,97,100,101,114,117,11, + 0,0,0,108,111,97,100,95,109,111,100,117,108,101,117,10, + 0,0,0,105,115,95,112,97,99,107,97,103,101,117,8,0, + 0,0,103,101,116,95,99,111,100,101,117,10,0,0,0,103, + 101,116,95,115,111,117,114,99,101,40,1,0,0,0,117,10, + 0,0,0,95,95,108,111,99,97,108,115,95,95,40,0,0, + 0,0,40,0,0,0,0,117,29,0,0,0,60,102,114,111, + 122,101,110,32,105,109,112,111,114,116,108,105,98,46,95,98, + 111,111,116,115,116,114,97,112,62,117,20,0,0,0,95,69, + 120,116,101,110,115,105,111,110,70,105,108,101,76,111,97,100, + 101,114,136,2,0,0,115,16,0,0,0,16,6,6,2,12, + 4,3,1,3,1,24,13,18,5,18,5,117,20,0,0,0, + 95,69,120,116,101,110,115,105,111,110,70,105,108,101,76,111, + 97,100,101,114,99,1,0,0,0,0,0,0,0,1,0,0, + 0,4,0,0,0,66,0,0,0,115,89,0,0,0,124,0, + 0,69,101,0,0,90,1,0,100,0,0,90,2,0,100,1, + 0,90,3,0,101,4,0,100,8,0,100,2,0,100,3,0, + 132,1,0,131,1,0,90,6,0,101,4,0,100,8,0,100, + 4,0,100,5,0,132,1,0,131,1,0,90,7,0,101,4, + 0,100,8,0,100,6,0,100,7,0,132,1,0,131,1,0, + 90,8,0,100,8,0,83,40,9,0,0,0,117,10,0,0, + 0,80,97,116,104,70,105,110,100,101,114,117,63,0,0,0, + 77,101,116,97,32,112,97,116,104,32,102,105,110,100,101,114, + 32,102,111,114,32,115,121,115,46,40,112,97,116,104,124,112, + 97,116,104,95,104,111,111,107,115,124,112,97,116,104,95,105, + 109,112,111,114,116,101,114,95,99,97,99,104,101,41,46,99, + 3,0,0,0,0,0,0,0,4,0,0,0,12,0,0,0, + 67,0,0,0,115,104,0,0,0,124,2,0,115,18,0,116, + 0,0,106,1,0,125,2,0,110,0,0,120,79,0,124,2, + 0,68,93,44,0,125,3,0,121,14,0,124,3,0,124,1, + 0,131,1,0,83,87,113,25,0,4,116,2,0,107,10,0, + 114,68,0,1,1,1,119,25,0,89,113,25,0,88,113,25, + 0,87,116,2,0,100,1,0,106,3,0,124,1,0,131,1, + 0,100,2,0,124,1,0,131,1,1,130,1,0,100,3,0, + 83,40,4,0,0,0,117,113,0,0,0,83,101,97,114,99, + 104,32,115,101,113,117,101,110,99,101,32,111,102,32,104,111, + 111,107,115,32,102,111,114,32,97,32,102,105,110,100,101,114, + 32,102,111,114,32,39,112,97,116,104,39,46,10,10,32,32, + 32,32,32,32,32,32,73,102,32,39,104,111,111,107,115,39, + 32,105,115,32,102,97,108,115,101,32,116,104,101,110,32,117, + 115,101,32,115,121,115,46,112,97,116,104,95,104,111,111,107, + 115,46,10,10,32,32,32,32,32,32,32,32,117,26,0,0, + 0,110,111,32,112,97,116,104,32,104,111,111,107,32,102,111, + 117,110,100,32,102,111,114,32,123,48,125,117,4,0,0,0, + 112,97,116,104,78,40,4,0,0,0,117,3,0,0,0,115, + 121,115,117,10,0,0,0,112,97,116,104,95,104,111,111,107, + 115,117,11,0,0,0,73,109,112,111,114,116,69,114,114,111, + 114,117,6,0,0,0,102,111,114,109,97,116,40,4,0,0, + 0,117,3,0,0,0,99,108,115,117,4,0,0,0,112,97, + 116,104,117,5,0,0,0,104,111,111,107,115,117,4,0,0, + 0,104,111,111,107,40,0,0,0,0,40,0,0,0,0,117, + 29,0,0,0,60,102,114,111,122,101,110,32,105,109,112,111, + 114,116,108,105,98,46,95,98,111,111,116,115,116,114,97,112, + 62,117,11,0,0,0,95,112,97,116,104,95,104,111,111,107, + 115,185,2,0,0,115,18,0,0,0,0,7,6,1,12,1, + 13,1,3,1,14,1,13,1,12,2,18,1,117,22,0,0, + 0,80,97,116,104,70,105,110,100,101,114,46,95,112,97,116, + 104,95,104,111,111,107,115,99,3,0,0,0,0,0,0,0, + 4,0,0,0,12,0,0,0,67,0,0,0,115,137,0,0, + 0,124,1,0,100,1,0,107,2,0,114,21,0,100,2,0, + 125,1,0,110,0,0,121,17,0,116,0,0,106,1,0,124, + 1,0,25,125,3,0,87,110,46,0,4,116,2,0,107,10, + 0,114,86,0,1,1,1,124,0,0,106,3,0,124,1,0, + 131,1,0,125,3,0,124,3,0,116,0,0,106,1,0,124, + 1,0,60,89,110,47,0,88,124,3,0,100,3,0,107,8, + 0,114,133,0,124,2,0,114,133,0,124,2,0,124,1,0, + 131,1,0,125,3,0,124,3,0,116,0,0,106,1,0,124, + 1,0,60,110,0,0,124,3,0,83,40,4,0,0,0,117, + 199,1,0,0,71,101,116,32,116,104,101,32,102,105,110,100, + 101,114,32,102,111,114,32,116,104,101,32,112,97,116,104,32, + 102,114,111,109,32,115,121,115,46,112,97,116,104,95,105,109, + 112,111,114,116,101,114,95,99,97,99,104,101,46,10,10,32, + 32,32,32,32,32,32,32,73,102,32,116,104,101,32,112,97, + 116,104,32,105,115,32,110,111,116,32,105,110,32,116,104,101, + 32,99,97,99,104,101,44,32,102,105,110,100,32,116,104,101, + 32,97,112,112,114,111,112,114,105,97,116,101,32,102,105,110, + 100,101,114,32,97,110,100,32,99,97,99,104,101,10,32,32, + 32,32,32,32,32,32,105,116,46,32,73,102,32,78,111,110, + 101,32,105,115,32,99,97,99,104,101,100,44,32,103,101,116, + 32,116,104,101,32,100,101,102,97,117,108,116,32,102,105,110, + 100,101,114,32,97,110,100,32,99,97,99,104,101,32,116,104, + 97,116,10,32,32,32,32,32,32,32,32,40,105,102,32,97, + 112,112,108,105,99,97,98,108,101,41,46,10,10,32,32,32, + 32,32,32,32,32,66,101,99,97,117,115,101,32,111,102,32, + 78,117,108,108,73,109,112,111,114,116,101,114,44,32,115,111, + 109,101,32,102,105,110,100,101,114,32,115,104,111,117,108,100, + 32,98,101,32,114,101,116,117,114,110,101,100,46,32,84,104, + 101,32,111,110,108,121,10,32,32,32,32,32,32,32,32,101, + 120,112,108,105,99,105,116,32,102,97,105,108,32,99,97,115, + 101,32,105,115,32,105,102,32,78,111,110,101,32,105,115,32, + 99,97,99,104,101,100,32,98,117,116,32,116,104,101,32,112, + 97,116,104,32,99,97,110,110,111,116,32,98,101,32,117,115, + 101,100,32,102,111,114,10,32,32,32,32,32,32,32,32,116, + 104,101,32,100,101,102,97,117,108,116,32,104,111,111,107,44, + 32,102,111,114,32,119,104,105,99,104,32,73,109,112,111,114, + 116,69,114,114,111,114,32,105,115,32,114,97,105,115,101,100, + 46,10,10,32,32,32,32,32,32,32,32,117,0,0,0,0, + 117,1,0,0,0,46,78,40,5,0,0,0,117,3,0,0, + 0,115,121,115,117,19,0,0,0,112,97,116,104,95,105,109, + 112,111,114,116,101,114,95,99,97,99,104,101,117,8,0,0, + 0,75,101,121,69,114,114,111,114,117,11,0,0,0,95,112, + 97,116,104,95,104,111,111,107,115,117,4,0,0,0,78,111, + 110,101,40,4,0,0,0,117,3,0,0,0,99,108,115,117, + 4,0,0,0,112,97,116,104,117,7,0,0,0,100,101,102, + 97,117,108,116,117,6,0,0,0,102,105,110,100,101,114,40, + 0,0,0,0,40,0,0,0,0,117,29,0,0,0,60,102, + 114,111,122,101,110,32,105,109,112,111,114,116,108,105,98,46, + 95,98,111,111,116,115,116,114,97,112,62,117,20,0,0,0, + 95,112,97,116,104,95,105,109,112,111,114,116,101,114,95,99, + 97,99,104,101,203,2,0,0,115,22,0,0,0,0,13,12, + 1,9,1,3,1,17,1,13,1,15,1,18,2,18,2,12, + 1,16,1,117,31,0,0,0,80,97,116,104,70,105,110,100, + 101,114,46,95,112,97,116,104,95,105,109,112,111,114,116,101, + 114,95,99,97,99,104,101,99,3,0,0,0,0,0,0,0, + 6,0,0,0,12,0,0,0,67,0,0,0,115,120,0,0, + 0,124,2,0,115,18,0,116,0,0,106,1,0,125,2,0, + 110,0,0,120,95,0,124,2,0,68,93,83,0,125,3,0, + 121,19,0,124,0,0,106,2,0,124,3,0,131,1,0,125, + 4,0,87,110,21,0,4,116,3,0,107,10,0,114,73,0, + 1,1,1,119,25,0,89,110,1,0,88,124,4,0,114,25, + 0,124,4,0,106,4,0,124,1,0,131,1,0,125,5,0, + 124,5,0,114,108,0,124,5,0,83,113,25,0,113,25,0, + 87,100,1,0,83,100,1,0,83,40,2,0,0,0,117,98, + 0,0,0,70,105,110,100,32,116,104,101,32,109,111,100,117, + 108,101,32,111,110,32,115,121,115,46,112,97,116,104,32,111, + 114,32,39,112,97,116,104,39,32,98,97,115,101,100,32,111, + 110,32,115,121,115,46,112,97,116,104,95,104,111,111,107,115, + 32,97,110,100,10,32,32,32,32,32,32,32,32,115,121,115, + 46,112,97,116,104,95,105,109,112,111,114,116,101,114,95,99, + 97,99,104,101,46,78,40,6,0,0,0,117,3,0,0,0, + 115,121,115,117,4,0,0,0,112,97,116,104,117,20,0,0, + 0,95,112,97,116,104,95,105,109,112,111,114,116,101,114,95, + 99,97,99,104,101,117,11,0,0,0,73,109,112,111,114,116, + 69,114,114,111,114,117,11,0,0,0,102,105,110,100,95,109, + 111,100,117,108,101,117,4,0,0,0,78,111,110,101,40,6, + 0,0,0,117,3,0,0,0,99,108,115,117,8,0,0,0, + 102,117,108,108,110,97,109,101,117,4,0,0,0,112,97,116, + 104,117,5,0,0,0,101,110,116,114,121,117,6,0,0,0, + 102,105,110,100,101,114,117,6,0,0,0,108,111,97,100,101, + 114,40,0,0,0,0,40,0,0,0,0,117,29,0,0,0, + 60,102,114,111,122,101,110,32,105,109,112,111,114,116,108,105, + 98,46,95,98,111,111,116,115,116,114,97,112,62,117,11,0, + 0,0,102,105,110,100,95,109,111,100,117,108,101,230,2,0, + 0,115,24,0,0,0,0,4,6,1,12,1,13,1,3,1, + 19,1,13,1,8,1,6,1,15,1,6,1,11,2,117,22, + 0,0,0,80,97,116,104,70,105,110,100,101,114,46,102,105, + 110,100,95,109,111,100,117,108,101,78,40,9,0,0,0,117, + 8,0,0,0,95,95,110,97,109,101,95,95,117,10,0,0, + 0,95,95,109,111,100,117,108,101,95,95,117,12,0,0,0, + 95,95,113,117,97,108,110,97,109,101,95,95,117,7,0,0, + 0,95,95,100,111,99,95,95,117,11,0,0,0,99,108,97, + 115,115,109,101,116,104,111,100,117,4,0,0,0,78,111,110, + 101,117,11,0,0,0,95,112,97,116,104,95,104,111,111,107, + 115,117,20,0,0,0,95,112,97,116,104,95,105,109,112,111, + 114,116,101,114,95,99,97,99,104,101,117,11,0,0,0,102, + 105,110,100,95,109,111,100,117,108,101,40,1,0,0,0,117, + 10,0,0,0,95,95,108,111,99,97,108,115,95,95,40,0, + 0,0,0,40,0,0,0,0,117,29,0,0,0,60,102,114, + 111,122,101,110,32,105,109,112,111,114,116,108,105,98,46,95, + 98,111,111,116,115,116,114,97,112,62,117,10,0,0,0,80, + 97,116,104,70,105,110,100,101,114,181,2,0,0,115,14,0, + 0,0,16,2,6,2,3,1,18,17,3,1,18,26,3,1, + 117,10,0,0,0,80,97,116,104,70,105,110,100,101,114,99, + 1,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0, + 66,0,0,0,115,74,0,0,0,124,0,0,69,101,0,0, + 90,1,0,100,0,0,90,2,0,100,1,0,90,3,0,100, + 2,0,100,3,0,132,0,0,90,4,0,100,4,0,100,5, + 0,132,0,0,90,5,0,100,6,0,100,7,0,132,0,0, + 90,6,0,100,8,0,100,9,0,132,0,0,90,7,0,100, + 10,0,83,40,11,0,0,0,117,11,0,0,0,95,70,105, + 108,101,70,105,110,100,101,114,117,171,0,0,0,70,105,108, + 101,45,98,97,115,101,100,32,102,105,110,100,101,114,46,10, + 10,32,32,32,32,67,111,110,115,116,114,117,99,116,111,114, + 32,116,97,107,101,115,32,97,32,108,105,115,116,32,111,102, + 32,111,98,106,101,99,116,115,32,100,101,116,97,105,108,105, + 110,103,32,119,104,97,116,32,102,105,108,101,32,101,120,116, + 101,110,115,105,111,110,115,32,116,104,101,105,114,10,32,32, + 32,32,108,111,97,100,101,114,32,115,117,112,112,111,114,116, + 115,32,97,108,111,110,103,32,119,105,116,104,32,119,104,101, + 116,104,101,114,32,105,116,32,99,97,110,32,98,101,32,117, + 115,101,100,32,102,111,114,32,97,32,112,97,99,107,97,103, + 101,46,10,10,32,32,32,32,99,2,0,0,0,0,0,0, + 0,5,0,0,0,5,0,0,0,7,0,0,0,115,181,0, + 0,0,103,0,0,125,3,0,103,0,0,125,4,0,120,96, + 0,124,2,0,68,93,88,0,137,0,0,124,4,0,106,0, + 0,135,0,0,102,1,0,100,1,0,100,2,0,134,0,0, + 136,0,0,106,1,0,68,131,1,0,131,1,0,1,136,0, + 0,106,2,0,114,19,0,124,3,0,106,0,0,135,0,0, + 102,1,0,100,3,0,100,2,0,134,0,0,136,0,0,106, + 1,0,68,131,1,0,131,1,0,1,113,19,0,113,19,0, + 87,124,3,0,124,0,0,95,3,0,124,4,0,124,0,0, + 95,4,0,124,1,0,112,138,0,100,4,0,124,0,0,95, + 5,0,100,7,0,124,0,0,95,6,0,116,7,0,131,0, + 0,124,0,0,95,8,0,116,7,0,131,0,0,124,0,0, + 95,9,0,100,6,0,83,40,8,0,0,0,117,31,0,0, + 0,73,110,105,116,105,97,108,105,122,101,32,119,105,116,104, + 32,102,105,110,100,101,114,32,100,101,116,97,105,108,115,46, + 99,1,0,0,0,0,0,0,0,2,0,0,0,3,0,0, + 0,51,0,0,0,115,30,0,0,0,124,0,0,93,20,0, + 125,1,0,124,1,0,136,0,0,106,0,0,102,2,0,86, + 1,113,3,0,100,0,0,83,40,1,0,0,0,78,40,1, + 0,0,0,117,6,0,0,0,108,111,97,100,101,114,40,2, + 0,0,0,117,2,0,0,0,46,48,117,6,0,0,0,115, + 117,102,102,105,120,40,1,0,0,0,117,6,0,0,0,100, + 101,116,97,105,108,40,0,0,0,0,117,29,0,0,0,60, + 102,114,111,122,101,110,32,105,109,112,111,114,116,108,105,98, + 46,95,98,111,111,116,115,116,114,97,112,62,117,9,0,0, + 0,60,103,101,110,101,120,112,114,62,7,3,0,0,115,2, + 0,0,0,6,0,117,39,0,0,0,95,70,105,108,101,70, + 105,110,100,101,114,46,95,95,105,110,105,116,95,95,46,60, + 108,111,99,97,108,115,62,46,60,103,101,110,101,120,112,114, + 62,99,1,0,0,0,0,0,0,0,2,0,0,0,3,0, + 0,0,51,0,0,0,115,30,0,0,0,124,0,0,93,20, + 0,125,1,0,124,1,0,136,0,0,106,0,0,102,2,0, + 86,1,113,3,0,100,0,0,83,40,1,0,0,0,78,40, + 1,0,0,0,117,6,0,0,0,108,111,97,100,101,114,40, + 2,0,0,0,117,2,0,0,0,46,48,117,6,0,0,0, + 115,117,102,102,105,120,40,1,0,0,0,117,6,0,0,0, + 100,101,116,97,105,108,40,0,0,0,0,117,29,0,0,0, + 60,102,114,111,122,101,110,32,105,109,112,111,114,116,108,105, + 98,46,95,98,111,111,116,115,116,114,97,112,62,117,9,0, + 0,0,60,103,101,110,101,120,112,114,62,9,3,0,0,115, + 2,0,0,0,6,1,117,1,0,0,0,46,105,1,0,0, + 0,78,105,255,255,255,255,40,10,0,0,0,117,6,0,0, + 0,101,120,116,101,110,100,117,8,0,0,0,115,117,102,102, + 105,120,101,115,117,17,0,0,0,115,117,112,112,111,114,116, + 115,95,112,97,99,107,97,103,101,115,117,8,0,0,0,112, + 97,99,107,97,103,101,115,117,7,0,0,0,109,111,100,117, + 108,101,115,117,4,0,0,0,112,97,116,104,117,11,0,0, + 0,95,112,97,116,104,95,109,116,105,109,101,117,3,0,0, + 0,115,101,116,117,11,0,0,0,95,112,97,116,104,95,99, + 97,99,104,101,117,19,0,0,0,95,114,101,108,97,120,101, + 100,95,112,97,116,104,95,99,97,99,104,101,40,5,0,0, + 0,117,4,0,0,0,115,101,108,102,117,4,0,0,0,112, + 97,116,104,117,7,0,0,0,100,101,116,97,105,108,115,117, + 8,0,0,0,112,97,99,107,97,103,101,115,117,7,0,0, + 0,109,111,100,117,108,101,115,40,0,0,0,0,40,1,0, + 0,0,117,6,0,0,0,100,101,116,97,105,108,117,29,0, + 0,0,60,102,114,111,122,101,110,32,105,109,112,111,114,116, + 108,105,98,46,95,98,111,111,116,115,116,114,97,112,62,117, + 8,0,0,0,95,95,105,110,105,116,95,95,2,3,0,0, + 115,26,0,0,0,0,2,6,1,6,1,13,1,35,1,9, + 1,21,1,21,1,9,1,9,2,15,1,9,1,12,1,117, + 20,0,0,0,95,70,105,108,101,70,105,110,100,101,114,46, + 95,95,105,110,105,116,95,95,99,1,0,0,0,0,0,0, + 0,1,0,0,0,2,0,0,0,67,0,0,0,115,13,0, + 0,0,100,3,0,124,0,0,95,0,0,100,2,0,83,40, + 4,0,0,0,117,31,0,0,0,73,110,118,97,108,105,100, + 97,116,101,32,116,104,101,32,100,105,114,101,99,116,111,114, + 121,32,109,116,105,109,101,46,105,1,0,0,0,78,105,255, + 255,255,255,40,1,0,0,0,117,11,0,0,0,95,112,97, + 116,104,95,109,116,105,109,101,40,1,0,0,0,117,4,0, + 0,0,115,101,108,102,40,0,0,0,0,40,0,0,0,0, + 117,29,0,0,0,60,102,114,111,122,101,110,32,105,109,112, + 111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97, + 112,62,117,17,0,0,0,105,110,118,97,108,105,100,97,116, + 101,95,99,97,99,104,101,115,19,3,0,0,115,2,0,0, + 0,0,2,117,29,0,0,0,95,70,105,108,101,70,105,110, + 100,101,114,46,105,110,118,97,108,105,100,97,116,101,95,99, + 97,99,104,101,115,99,2,0,0,0,0,0,0,0,12,0, + 0,0,13,0,0,0,67,0,0,0,115,151,1,0,0,124, + 1,0,106,0,0,100,1,0,131,1,0,100,2,0,25,125, + 2,0,121,25,0,116,1,0,106,2,0,124,0,0,106,3, + 0,131,1,0,106,4,0,125,3,0,87,110,24,0,4,116, + 5,0,107,10,0,114,70,0,1,1,1,100,6,0,125,3, + 0,89,110,1,0,88,124,3,0,124,0,0,106,6,0,107, + 3,0,114,108,0,124,0,0,106,7,0,131,0,0,1,124, + 3,0,124,0,0,95,6,0,110,0,0,116,8,0,131,0, + 0,114,141,0,124,0,0,106,9,0,125,4,0,124,2,0, + 106,10,0,131,0,0,125,5,0,110,15,0,124,0,0,106, + 11,0,125,4,0,124,2,0,125,5,0,124,5,0,124,4, + 0,107,6,0,114,55,1,116,12,0,124,0,0,106,3,0, + 124,2,0,131,2,0,125,6,0,116,13,0,124,6,0,131, + 1,0,114,55,1,120,107,0,124,0,0,106,14,0,68,93, + 62,0,92,2,0,125,7,0,125,8,0,100,4,0,124,7, + 0,23,125,9,0,116,12,0,124,6,0,124,9,0,131,2, + 0,125,10,0,116,15,0,124,10,0,131,1,0,114,208,0, + 124,8,0,124,1,0,124,10,0,131,2,0,83,113,208,0, + 87,100,5,0,125,11,0,116,16,0,106,17,0,124,11,0, + 106,18,0,124,6,0,131,1,0,116,19,0,131,2,0,1, + 113,55,1,110,0,0,120,89,0,124,0,0,106,20,0,68, + 93,78,0,92,2,0,125,7,0,125,8,0,124,5,0,124, + 7,0,23,124,4,0,107,6,0,114,65,1,116,12,0,124, + 0,0,106,3,0,124,2,0,124,7,0,23,131,2,0,125, + 10,0,116,15,0,124,10,0,131,1,0,114,143,1,124,8, + 0,124,1,0,124,10,0,131,2,0,83,113,65,1,113,65, + 1,87,100,7,0,83,40,8,0,0,0,117,46,0,0,0, + 84,114,121,32,116,111,32,102,105,110,100,32,97,32,108,111, + 97,100,101,114,32,102,111,114,32,116,104,101,32,115,112,101, + 99,105,102,105,101,100,32,109,111,100,117,108,101,46,117,1, + 0,0,0,46,105,2,0,0,0,105,1,0,0,0,117,8, + 0,0,0,95,95,105,110,105,116,95,95,117,44,0,0,0, + 78,111,116,32,105,109,112,111,114,116,105,110,103,32,100,105, + 114,101,99,116,111,114,121,32,123,125,58,32,109,105,115,115, + 105,110,103,32,95,95,105,110,105,116,95,95,105,255,255,255, + 255,78,40,22,0,0,0,117,10,0,0,0,114,112,97,114, + 116,105,116,105,111,110,117,3,0,0,0,95,111,115,117,4, + 0,0,0,115,116,97,116,117,4,0,0,0,112,97,116,104, + 117,8,0,0,0,115,116,95,109,116,105,109,101,117,7,0, + 0,0,79,83,69,114,114,111,114,117,11,0,0,0,95,112, + 97,116,104,95,109,116,105,109,101,117,11,0,0,0,95,102, + 105,108,108,95,99,97,99,104,101,117,11,0,0,0,95,114, + 101,108,97,120,95,99,97,115,101,117,19,0,0,0,95,114, + 101,108,97,120,101,100,95,112,97,116,104,95,99,97,99,104, + 101,117,5,0,0,0,108,111,119,101,114,117,11,0,0,0, + 95,112,97,116,104,95,99,97,99,104,101,117,10,0,0,0, + 95,112,97,116,104,95,106,111,105,110,117,11,0,0,0,95, + 112,97,116,104,95,105,115,100,105,114,117,8,0,0,0,112, + 97,99,107,97,103,101,115,117,12,0,0,0,95,112,97,116, + 104,95,105,115,102,105,108,101,117,9,0,0,0,95,119,97, + 114,110,105,110,103,115,117,4,0,0,0,119,97,114,110,117, + 6,0,0,0,102,111,114,109,97,116,117,13,0,0,0,73, + 109,112,111,114,116,87,97,114,110,105,110,103,117,7,0,0, + 0,109,111,100,117,108,101,115,117,4,0,0,0,78,111,110, + 101,40,12,0,0,0,117,4,0,0,0,115,101,108,102,117, + 8,0,0,0,102,117,108,108,110,97,109,101,117,11,0,0, + 0,116,97,105,108,95,109,111,100,117,108,101,117,5,0,0, + 0,109,116,105,109,101,117,5,0,0,0,99,97,99,104,101, + 117,12,0,0,0,99,97,99,104,101,95,109,111,100,117,108, + 101,117,9,0,0,0,98,97,115,101,95,112,97,116,104,117, + 6,0,0,0,115,117,102,102,105,120,117,6,0,0,0,108, + 111,97,100,101,114,117,13,0,0,0,105,110,105,116,95,102, + 105,108,101,110,97,109,101,117,9,0,0,0,102,117,108,108, + 95,112,97,116,104,117,3,0,0,0,109,115,103,40,0,0, + 0,0,40,0,0,0,0,117,29,0,0,0,60,102,114,111, + 122,101,110,32,105,109,112,111,114,116,108,105,98,46,95,98, + 111,111,116,115,116,114,97,112,62,117,11,0,0,0,102,105, + 110,100,95,109,111,100,117,108,101,23,3,0,0,115,58,0, + 0,0,0,2,19,1,3,1,25,1,13,1,11,1,15,1, + 10,1,12,2,9,1,9,1,15,2,9,1,6,1,12,1, + 18,1,12,1,22,1,10,1,15,1,12,1,17,2,6,1, + 31,1,22,1,16,1,22,1,12,1,20,1,117,23,0,0, + 0,95,70,105,108,101,70,105,110,100,101,114,46,102,105,110, + 100,95,109,111,100,117,108,101,99,1,0,0,0,0,0,0, + 0,3,0,0,0,3,0,0,0,67,0,0,0,115,71,0, + 0,0,124,0,0,106,0,0,125,1,0,116,1,0,106,2, + 0,124,1,0,131,1,0,125,2,0,116,3,0,124,2,0, + 131,1,0,124,0,0,95,4,0,116,3,0,100,1,0,100, + 2,0,132,0,0,124,2,0,68,131,1,0,131,1,0,124, + 0,0,95,5,0,100,3,0,83,40,4,0,0,0,117,68, + 0,0,0,70,105,108,108,32,116,104,101,32,99,97,99,104, + 101,32,111,102,32,112,111,116,101,110,116,105,97,108,32,109, + 111,100,117,108,101,115,32,97,110,100,32,112,97,99,107,97, + 103,101,115,32,102,111,114,32,116,104,105,115,32,100,105,114, + 101,99,116,111,114,121,46,99,1,0,0,0,0,0,0,0, + 2,0,0,0,2,0,0,0,115,0,0,0,115,27,0,0, + 0,124,0,0,93,17,0,125,1,0,124,1,0,106,0,0, + 131,0,0,86,1,113,3,0,100,0,0,83,40,1,0,0, + 0,78,40,1,0,0,0,117,5,0,0,0,108,111,119,101, + 114,40,2,0,0,0,117,2,0,0,0,46,48,117,2,0, + 0,0,102,110,40,0,0,0,0,40,0,0,0,0,117,29, + 0,0,0,60,102,114,111,122,101,110,32,105,109,112,111,114, + 116,108,105,98,46,95,98,111,111,116,115,116,114,97,112,62, + 117,9,0,0,0,60,103,101,110,101,120,112,114,62,65,3, + 0,0,115,2,0,0,0,6,0,117,42,0,0,0,95,70, + 105,108,101,70,105,110,100,101,114,46,95,102,105,108,108,95, + 99,97,99,104,101,46,60,108,111,99,97,108,115,62,46,60, + 103,101,110,101,120,112,114,62,78,40,6,0,0,0,117,4, + 0,0,0,112,97,116,104,117,3,0,0,0,95,111,115,117, + 7,0,0,0,108,105,115,116,100,105,114,117,3,0,0,0, + 115,101,116,117,11,0,0,0,95,112,97,116,104,95,99,97, + 99,104,101,117,19,0,0,0,95,114,101,108,97,120,101,100, + 95,112,97,116,104,95,99,97,99,104,101,40,3,0,0,0, + 117,4,0,0,0,115,101,108,102,117,4,0,0,0,112,97, + 116,104,117,8,0,0,0,99,111,110,116,101,110,116,115,40, + 0,0,0,0,40,0,0,0,0,117,29,0,0,0,60,102, + 114,111,122,101,110,32,105,109,112,111,114,116,108,105,98,46, + 95,98,111,111,116,115,116,114,97,112,62,117,11,0,0,0, + 95,102,105,108,108,95,99,97,99,104,101,58,3,0,0,115, + 8,0,0,0,0,2,9,1,15,3,15,1,117,23,0,0, + 0,95,70,105,108,101,70,105,110,100,101,114,46,95,102,105, + 108,108,95,99,97,99,104,101,78,40,8,0,0,0,117,8, + 0,0,0,95,95,110,97,109,101,95,95,117,10,0,0,0, + 95,95,109,111,100,117,108,101,95,95,117,12,0,0,0,95, + 95,113,117,97,108,110,97,109,101,95,95,117,7,0,0,0, + 95,95,100,111,99,95,95,117,8,0,0,0,95,95,105,110, + 105,116,95,95,117,17,0,0,0,105,110,118,97,108,105,100, + 97,116,101,95,99,97,99,104,101,115,117,11,0,0,0,102, + 105,110,100,95,109,111,100,117,108,101,117,11,0,0,0,95, + 102,105,108,108,95,99,97,99,104,101,40,1,0,0,0,117, + 10,0,0,0,95,95,108,111,99,97,108,115,95,95,40,0, + 0,0,0,40,0,0,0,0,117,29,0,0,0,60,102,114, + 111,122,101,110,32,105,109,112,111,114,116,108,105,98,46,95, + 98,111,111,116,115,116,114,97,112,62,117,11,0,0,0,95, + 70,105,108,101,70,105,110,100,101,114,249,2,0,0,115,10, + 0,0,0,16,7,6,2,12,17,12,4,12,35,117,11,0, + 0,0,95,70,105,108,101,70,105,110,100,101,114,99,1,0, + 0,0,0,0,0,0,1,0,0,0,2,0,0,0,66,0, + 0,0,115,44,0,0,0,124,0,0,69,101,0,0,90,1, + 0,100,0,0,90,2,0,101,3,0,90,4,0,100,4,0, + 90,6,0,100,1,0,100,2,0,132,0,0,90,7,0,100, + 3,0,83,40,5,0,0,0,117,20,0,0,0,95,83,111, + 117,114,99,101,70,105,110,100,101,114,68,101,116,97,105,108, + 115,99,1,0,0,0,0,0,0,0,1,0,0,0,2,0, + 0,0,67,0,0,0,115,22,0,0,0,116,0,0,116,1, + 0,106,2,0,131,1,0,124,0,0,95,3,0,100,0,0, + 83,40,1,0,0,0,78,40,4,0,0,0,117,12,0,0, + 0,95,115,117,102,102,105,120,95,108,105,115,116,117,3,0, + 0,0,105,109,112,117,9,0,0,0,80,89,95,83,79,85, + 82,67,69,117,8,0,0,0,115,117,102,102,105,120,101,115, + 40,1,0,0,0,117,4,0,0,0,115,101,108,102,40,0, + 0,0,0,40,0,0,0,0,117,29,0,0,0,60,102,114, + 111,122,101,110,32,105,109,112,111,114,116,108,105,98,46,95, + 98,111,111,116,115,116,114,97,112,62,117,8,0,0,0,95, + 95,105,110,105,116,95,95,73,3,0,0,115,2,0,0,0, + 0,1,117,29,0,0,0,95,83,111,117,114,99,101,70,105, + 110,100,101,114,68,101,116,97,105,108,115,46,95,95,105,110, + 105,116,95,95,78,84,40,8,0,0,0,117,8,0,0,0, + 95,95,110,97,109,101,95,95,117,10,0,0,0,95,95,109, + 111,100,117,108,101,95,95,117,12,0,0,0,95,95,113,117, + 97,108,110,97,109,101,95,95,117,17,0,0,0,95,83,111, + 117,114,99,101,70,105,108,101,76,111,97,100,101,114,117,6, + 0,0,0,108,111,97,100,101,114,117,4,0,0,0,84,114, + 117,101,117,17,0,0,0,115,117,112,112,111,114,116,115,95, + 112,97,99,107,97,103,101,115,117,8,0,0,0,95,95,105, + 110,105,116,95,95,40,1,0,0,0,117,10,0,0,0,95, + 95,108,111,99,97,108,115,95,95,40,0,0,0,0,40,0, + 0,0,0,117,29,0,0,0,60,102,114,111,122,101,110,32, + 105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, + 116,114,97,112,62,117,20,0,0,0,95,83,111,117,114,99, + 101,70,105,110,100,101,114,68,101,116,97,105,108,115,68,3, + 0,0,115,6,0,0,0,16,2,6,1,6,2,117,20,0, + 0,0,95,83,111,117,114,99,101,70,105,110,100,101,114,68, + 101,116,97,105,108,115,99,1,0,0,0,0,0,0,0,1, + 0,0,0,2,0,0,0,66,0,0,0,115,44,0,0,0, + 124,0,0,69,101,0,0,90,1,0,100,0,0,90,2,0, + 101,3,0,90,4,0,100,4,0,90,6,0,100,1,0,100, + 2,0,132,0,0,90,7,0,100,3,0,83,40,5,0,0, + 0,117,24,0,0,0,95,83,111,117,114,99,101,108,101,115, + 115,70,105,110,100,101,114,68,101,116,97,105,108,115,99,1, + 0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,67, + 0,0,0,115,22,0,0,0,116,0,0,116,1,0,106,2, + 0,131,1,0,124,0,0,95,3,0,100,0,0,83,40,1, + 0,0,0,78,40,4,0,0,0,117,12,0,0,0,95,115, + 117,102,102,105,120,95,108,105,115,116,117,3,0,0,0,105, + 109,112,117,11,0,0,0,80,89,95,67,79,77,80,73,76, + 69,68,117,8,0,0,0,115,117,102,102,105,120,101,115,40, + 1,0,0,0,117,4,0,0,0,115,101,108,102,40,0,0, + 0,0,40,0,0,0,0,117,29,0,0,0,60,102,114,111, + 122,101,110,32,105,109,112,111,114,116,108,105,98,46,95,98, + 111,111,116,115,116,114,97,112,62,117,8,0,0,0,95,95, + 105,110,105,116,95,95,81,3,0,0,115,2,0,0,0,0, + 1,117,33,0,0,0,95,83,111,117,114,99,101,108,101,115, + 115,70,105,110,100,101,114,68,101,116,97,105,108,115,46,95, + 95,105,110,105,116,95,95,78,84,40,8,0,0,0,117,8, + 0,0,0,95,95,110,97,109,101,95,95,117,10,0,0,0, + 95,95,109,111,100,117,108,101,95,95,117,12,0,0,0,95, + 95,113,117,97,108,110,97,109,101,95,95,117,21,0,0,0, + 95,83,111,117,114,99,101,108,101,115,115,70,105,108,101,76, + 111,97,100,101,114,117,6,0,0,0,108,111,97,100,101,114, + 117,4,0,0,0,84,114,117,101,117,17,0,0,0,115,117, + 112,112,111,114,116,115,95,112,97,99,107,97,103,101,115,117, + 8,0,0,0,95,95,105,110,105,116,95,95,40,1,0,0, + 0,117,10,0,0,0,95,95,108,111,99,97,108,115,95,95, + 40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,60, + 102,114,111,122,101,110,32,105,109,112,111,114,116,108,105,98, + 46,95,98,111,111,116,115,116,114,97,112,62,117,24,0,0, + 0,95,83,111,117,114,99,101,108,101,115,115,70,105,110,100, + 101,114,68,101,116,97,105,108,115,76,3,0,0,115,6,0, + 0,0,16,2,6,1,6,2,117,24,0,0,0,95,83,111, + 117,114,99,101,108,101,115,115,70,105,110,100,101,114,68,101, + 116,97,105,108,115,99,1,0,0,0,0,0,0,0,1,0, + 0,0,2,0,0,0,66,0,0,0,115,44,0,0,0,124, + 0,0,69,101,0,0,90,1,0,100,0,0,90,2,0,101, + 3,0,90,4,0,100,4,0,90,6,0,100,1,0,100,2, + 0,132,0,0,90,7,0,100,3,0,83,40,5,0,0,0, + 117,23,0,0,0,95,69,120,116,101,110,115,105,111,110,70, + 105,110,100,101,114,68,101,116,97,105,108,115,99,1,0,0, + 0,0,0,0,0,1,0,0,0,2,0,0,0,67,0,0, + 0,115,22,0,0,0,116,0,0,116,1,0,106,2,0,131, + 1,0,124,0,0,95,3,0,100,0,0,83,40,1,0,0, + 0,78,40,4,0,0,0,117,12,0,0,0,95,115,117,102, + 102,105,120,95,108,105,115,116,117,3,0,0,0,105,109,112, + 117,11,0,0,0,67,95,69,88,84,69,78,83,73,79,78, + 117,8,0,0,0,115,117,102,102,105,120,101,115,40,1,0, + 0,0,117,4,0,0,0,115,101,108,102,40,0,0,0,0, + 40,0,0,0,0,117,29,0,0,0,60,102,114,111,122,101, + 110,32,105,109,112,111,114,116,108,105,98,46,95,98,111,111, + 116,115,116,114,97,112,62,117,8,0,0,0,95,95,105,110, + 105,116,95,95,90,3,0,0,115,2,0,0,0,0,1,117, + 32,0,0,0,95,69,120,116,101,110,115,105,111,110,70,105, + 110,100,101,114,68,101,116,97,105,108,115,46,95,95,105,110, + 105,116,95,95,78,70,40,8,0,0,0,117,8,0,0,0, + 95,95,110,97,109,101,95,95,117,10,0,0,0,95,95,109, + 111,100,117,108,101,95,95,117,12,0,0,0,95,95,113,117, + 97,108,110,97,109,101,95,95,117,20,0,0,0,95,69,120, + 116,101,110,115,105,111,110,70,105,108,101,76,111,97,100,101, + 114,117,6,0,0,0,108,111,97,100,101,114,117,5,0,0, + 0,70,97,108,115,101,117,17,0,0,0,115,117,112,112,111, + 114,116,115,95,112,97,99,107,97,103,101,115,117,8,0,0, + 0,95,95,105,110,105,116,95,95,40,1,0,0,0,117,10, + 0,0,0,95,95,108,111,99,97,108,115,95,95,40,0,0, + 0,0,40,0,0,0,0,117,29,0,0,0,60,102,114,111, + 122,101,110,32,105,109,112,111,114,116,108,105,98,46,95,98, + 111,111,116,115,116,114,97,112,62,117,23,0,0,0,95,69, + 120,116,101,110,115,105,111,110,70,105,110,100,101,114,68,101, + 116,97,105,108,115,85,3,0,0,115,6,0,0,0,16,2, + 6,1,6,2,117,23,0,0,0,95,69,120,116,101,110,115, + 105,111,110,70,105,110,100,101,114,68,101,116,97,105,108,115, + 99,1,0,0,0,0,0,0,0,1,0,0,0,5,0,0, + 0,67,0,0,0,115,62,0,0,0,116,0,0,124,0,0, + 131,1,0,114,40,0,116,1,0,124,0,0,116,2,0,131, + 0,0,116,3,0,131,0,0,116,4,0,131,0,0,131,4, + 0,83,116,5,0,100,1,0,100,2,0,124,0,0,131,1, + 1,130,1,0,100,3,0,83,40,4,0,0,0,117,55,0, + 0,0,73,102,32,116,104,101,32,112,97,116,104,32,105,115, + 32,97,32,100,105,114,101,99,116,111,114,121,44,32,114,101, + 116,117,114,110,32,97,32,102,105,108,101,45,98,97,115,101, + 100,32,102,105,110,100,101,114,46,117,30,0,0,0,111,110, + 108,121,32,100,105,114,101,99,116,111,114,105,101,115,32,97, + 114,101,32,115,117,112,112,111,114,116,101,100,117,4,0,0, + 0,112,97,116,104,78,40,6,0,0,0,117,11,0,0,0, + 95,112,97,116,104,95,105,115,100,105,114,117,11,0,0,0, + 95,70,105,108,101,70,105,110,100,101,114,117,23,0,0,0, + 95,69,120,116,101,110,115,105,111,110,70,105,110,100,101,114, + 68,101,116,97,105,108,115,117,20,0,0,0,95,83,111,117, + 114,99,101,70,105,110,100,101,114,68,101,116,97,105,108,115, + 117,24,0,0,0,95,83,111,117,114,99,101,108,101,115,115, + 70,105,110,100,101,114,68,101,116,97,105,108,115,117,11,0, + 0,0,73,109,112,111,114,116,69,114,114,111,114,40,1,0, + 0,0,117,4,0,0,0,112,97,116,104,40,0,0,0,0, + 40,0,0,0,0,117,29,0,0,0,60,102,114,111,122,101, + 110,32,105,109,112,111,114,116,108,105,98,46,95,98,111,111, + 116,115,116,114,97,112,62,117,15,0,0,0,95,102,105,108, + 101,95,112,97,116,104,95,104,111,111,107,96,3,0,0,115, + 10,0,0,0,0,2,12,1,12,1,6,1,10,2,117,15, + 0,0,0,95,102,105,108,101,95,112,97,116,104,95,104,111, + 111,107,99,1,0,0,0,0,0,0,0,1,0,0,0,4, + 0,0,0,2,0,0,0,115,74,0,0,0,124,0,0,69, + 101,0,0,90,1,0,100,0,0,90,2,0,100,1,0,90, + 3,0,101,4,0,135,0,0,102,1,0,100,2,0,100,3, + 0,134,0,0,131,1,0,90,5,0,101,4,0,135,0,0, + 102,1,0,100,4,0,100,5,0,134,0,0,131,1,0,90, + 6,0,135,0,0,83,40,6,0,0,0,117,18,0,0,0, + 95,68,101,102,97,117,108,116,80,97,116,104,70,105,110,100, + 101,114,117,77,0,0,0,83,117,98,99,108,97,115,115,32, + 111,102,32,80,97,116,104,70,105,110,100,101,114,32,116,104, + 97,116,32,105,109,112,108,101,109,101,110,116,115,32,105,109, + 112,108,105,99,105,116,32,115,101,109,97,110,116,105,99,115, + 32,102,111,114,10,32,32,32,32,95,95,105,109,112,111,114, + 116,95,95,46,99,2,0,0,0,0,0,0,0,3,0,0, + 0,11,0,0,0,3,0,0,0,115,79,0,0,0,121,20, + 0,116,0,0,131,0,0,106,1,0,124,1,0,131,1,0, + 83,87,110,52,0,4,116,2,0,107,10,0,114,74,0,1, + 1,1,116,3,0,116,4,0,106,5,0,103,2,0,125,2, + 0,116,0,0,131,0,0,106,1,0,124,1,0,124,2,0, + 131,2,0,83,89,110,1,0,88,100,1,0,83,40,2,0, + 0,0,117,53,0,0,0,83,101,97,114,99,104,32,115,121, + 115,46,112,97,116,104,95,104,111,111,107,115,32,97,115,32, + 119,101,108,108,32,97,115,32,105,109,112,108,105,99,105,116, + 32,112,97,116,104,32,104,111,111,107,115,46,78,40,6,0, + 0,0,117,5,0,0,0,115,117,112,101,114,117,11,0,0, + 0,95,112,97,116,104,95,104,111,111,107,115,117,11,0,0, + 0,73,109,112,111,114,116,69,114,114,111,114,117,18,0,0, + 0,95,68,69,70,65,85,76,84,95,80,65,84,72,95,72, + 79,79,75,117,3,0,0,0,105,109,112,117,12,0,0,0, + 78,117,108,108,73,109,112,111,114,116,101,114,40,3,0,0, + 0,117,3,0,0,0,99,108,115,117,4,0,0,0,112,97, + 116,104,117,14,0,0,0,105,109,112,108,105,99,105,116,95, + 104,111,111,107,115,40,1,0,0,0,117,10,0,0,0,64, + 95,95,99,108,97,115,115,95,95,40,0,0,0,0,117,29, + 0,0,0,60,102,114,111,122,101,110,32,105,109,112,111,114, + 116,108,105,98,46,95,98,111,111,116,115,116,114,97,112,62, + 117,11,0,0,0,95,112,97,116,104,95,104,111,111,107,115, + 113,3,0,0,115,10,0,0,0,0,3,3,1,20,1,13, + 1,15,1,117,30,0,0,0,95,68,101,102,97,117,108,116, + 80,97,116,104,70,105,110,100,101,114,46,95,112,97,116,104, + 95,104,111,111,107,115,99,2,0,0,0,0,0,0,0,2, + 0,0,0,3,0,0,0,3,0,0,0,115,19,0,0,0, + 116,0,0,131,0,0,106,1,0,124,1,0,116,2,0,131, + 2,0,83,40,1,0,0,0,117,81,0,0,0,85,115,101, + 32,116,104,101,32,100,101,102,97,117,108,116,32,112,97,116, + 104,32,104,111,111,107,32,119,104,101,110,32,78,111,110,101, + 32,105,115,32,115,116,111,114,101,100,32,105,110,10,32,32, + 32,32,32,32,32,32,115,121,115,46,112,97,116,104,95,105, + 109,112,111,114,116,101,114,95,99,97,99,104,101,46,40,3, + 0,0,0,117,5,0,0,0,115,117,112,101,114,117,20,0, + 0,0,95,112,97,116,104,95,105,109,112,111,114,116,101,114, + 95,99,97,99,104,101,117,18,0,0,0,95,68,69,70,65, + 85,76,84,95,80,65,84,72,95,72,79,79,75,40,2,0, + 0,0,117,3,0,0,0,99,108,115,117,4,0,0,0,112, + 97,116,104,40,1,0,0,0,117,10,0,0,0,64,95,95, + 99,108,97,115,115,95,95,40,0,0,0,0,117,29,0,0, + 0,60,102,114,111,122,101,110,32,105,109,112,111,114,116,108, + 105,98,46,95,98,111,111,116,115,116,114,97,112,62,117,20, + 0,0,0,95,112,97,116,104,95,105,109,112,111,114,116,101, + 114,95,99,97,99,104,101,122,3,0,0,115,2,0,0,0, + 0,4,117,39,0,0,0,95,68,101,102,97,117,108,116,80, + 97,116,104,70,105,110,100,101,114,46,95,112,97,116,104,95, + 105,109,112,111,114,116,101,114,95,99,97,99,104,101,40,7, + 0,0,0,117,8,0,0,0,95,95,110,97,109,101,95,95, + 117,10,0,0,0,95,95,109,111,100,117,108,101,95,95,117, + 12,0,0,0,95,95,113,117,97,108,110,97,109,101,95,95, + 117,7,0,0,0,95,95,100,111,99,95,95,117,11,0,0, + 0,99,108,97,115,115,109,101,116,104,111,100,117,11,0,0, + 0,95,112,97,116,104,95,104,111,111,107,115,117,20,0,0, + 0,95,112,97,116,104,95,105,109,112,111,114,116,101,114,95, + 99,97,99,104,101,40,1,0,0,0,117,10,0,0,0,95, + 95,108,111,99,97,108,115,95,95,40,0,0,0,0,40,1, + 0,0,0,117,10,0,0,0,64,95,95,99,108,97,115,115, + 95,95,117,29,0,0,0,60,102,114,111,122,101,110,32,105, + 109,112,111,114,116,108,105,98,46,95,98,111,111,116,115,116, + 114,97,112,62,117,18,0,0,0,95,68,101,102,97,117,108, + 116,80,97,116,104,70,105,110,100,101,114,108,3,0,0,115, + 6,0,0,0,16,3,6,2,24,9,117,18,0,0,0,95, + 68,101,102,97,117,108,116,80,97,116,104,70,105,110,100,101, + 114,99,1,0,0,0,0,0,0,0,1,0,0,0,2,0, + 0,0,66,0,0,0,115,50,0,0,0,124,0,0,69,101, + 0,0,90,1,0,100,0,0,90,2,0,100,1,0,90,3, + 0,100,2,0,100,3,0,132,0,0,90,4,0,100,4,0, + 100,5,0,132,0,0,90,5,0,100,6,0,83,40,7,0, + 0,0,117,18,0,0,0,95,73,109,112,111,114,116,76,111, + 99,107,67,111,110,116,101,120,116,117,36,0,0,0,67,111, + 110,116,101,120,116,32,109,97,110,97,103,101,114,32,102,111, + 114,32,116,104,101,32,105,109,112,111,114,116,32,108,111,99, + 107,46,99,1,0,0,0,0,0,0,0,1,0,0,0,1, + 0,0,0,67,0,0,0,115,14,0,0,0,116,0,0,106, + 1,0,131,0,0,1,100,1,0,83,40,2,0,0,0,117, + 24,0,0,0,65,99,113,117,105,114,101,32,116,104,101,32, + 105,109,112,111,114,116,32,108,111,99,107,46,78,40,2,0, + 0,0,117,3,0,0,0,105,109,112,117,12,0,0,0,97, + 99,113,117,105,114,101,95,108,111,99,107,40,1,0,0,0, + 117,4,0,0,0,115,101,108,102,40,0,0,0,0,40,0, + 0,0,0,117,29,0,0,0,60,102,114,111,122,101,110,32, + 105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, + 116,114,97,112,62,117,9,0,0,0,95,95,101,110,116,101, + 114,95,95,133,3,0,0,115,2,0,0,0,0,2,117,28, + 0,0,0,95,73,109,112,111,114,116,76,111,99,107,67,111, + 110,116,101,120,116,46,95,95,101,110,116,101,114,95,95,99, + 4,0,0,0,0,0,0,0,4,0,0,0,1,0,0,0, + 67,0,0,0,115,14,0,0,0,116,0,0,106,1,0,131, + 0,0,1,100,1,0,83,40,2,0,0,0,117,60,0,0, + 0,82,101,108,101,97,115,101,32,116,104,101,32,105,109,112, + 111,114,116,32,108,111,99,107,32,114,101,103,97,114,100,108, + 101,115,115,32,111,102,32,97,110,121,32,114,97,105,115,101, + 100,32,101,120,99,101,112,116,105,111,110,115,46,78,40,2, + 0,0,0,117,3,0,0,0,105,109,112,117,12,0,0,0, + 114,101,108,101,97,115,101,95,108,111,99,107,40,4,0,0, + 0,117,4,0,0,0,115,101,108,102,117,8,0,0,0,101, + 120,99,95,116,121,112,101,117,9,0,0,0,101,120,99,95, + 118,97,108,117,101,117,13,0,0,0,101,120,99,95,116,114, + 97,99,101,98,97,99,107,40,0,0,0,0,40,0,0,0, + 0,117,29,0,0,0,60,102,114,111,122,101,110,32,105,109, + 112,111,114,116,108,105,98,46,95,98,111,111,116,115,116,114, + 97,112,62,117,8,0,0,0,95,95,101,120,105,116,95,95, + 137,3,0,0,115,2,0,0,0,0,2,117,27,0,0,0, + 95,73,109,112,111,114,116,76,111,99,107,67,111,110,116,101, + 120,116,46,95,95,101,120,105,116,95,95,78,40,6,0,0, + 0,117,8,0,0,0,95,95,110,97,109,101,95,95,117,10, + 0,0,0,95,95,109,111,100,117,108,101,95,95,117,12,0, + 0,0,95,95,113,117,97,108,110,97,109,101,95,95,117,7, + 0,0,0,95,95,100,111,99,95,95,117,9,0,0,0,95, + 95,101,110,116,101,114,95,95,117,8,0,0,0,95,95,101, + 120,105,116,95,95,40,1,0,0,0,117,10,0,0,0,95, + 95,108,111,99,97,108,115,95,95,40,0,0,0,0,40,0, + 0,0,0,117,29,0,0,0,60,102,114,111,122,101,110,32, + 105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, + 116,114,97,112,62,117,18,0,0,0,95,73,109,112,111,114, + 116,76,111,99,107,67,111,110,116,101,120,116,129,3,0,0, + 115,6,0,0,0,16,2,6,2,12,4,117,18,0,0,0, + 95,73,109,112,111,114,116,76,111,99,107,67,111,110,116,101, + 120,116,99,3,0,0,0,0,0,0,0,5,0,0,0,4, + 0,0,0,67,0,0,0,115,91,0,0,0,124,1,0,106, + 0,0,100,1,0,124,2,0,100,2,0,24,131,2,0,125, + 3,0,116,1,0,124,3,0,131,1,0,124,2,0,107,0, + 0,114,55,0,116,2,0,100,3,0,131,1,0,130,1,0, + 110,0,0,124,3,0,100,4,0,25,125,4,0,124,0,0, + 114,87,0,100,5,0,106,3,0,124,4,0,124,0,0,131, + 2,0,83,124,4,0,83,40,6,0,0,0,117,50,0,0, + 0,82,101,115,111,108,118,101,32,97,32,114,101,108,97,116, + 105,118,101,32,109,111,100,117,108,101,32,110,97,109,101,32, + 116,111,32,97,110,32,97,98,115,111,108,117,116,101,32,111, + 110,101,46,117,1,0,0,0,46,105,1,0,0,0,117,50, + 0,0,0,97,116,116,101,109,112,116,101,100,32,114,101,108, + 97,116,105,118,101,32,105,109,112,111,114,116,32,98,101,121, + 111,110,100,32,116,111,112,45,108,101,118,101,108,32,112,97, + 99,107,97,103,101,105,0,0,0,0,117,7,0,0,0,123, + 48,125,46,123,49,125,40,4,0,0,0,117,6,0,0,0, + 114,115,112,108,105,116,117,3,0,0,0,108,101,110,117,10, + 0,0,0,86,97,108,117,101,69,114,114,111,114,117,6,0, + 0,0,102,111,114,109,97,116,40,5,0,0,0,117,4,0, + 0,0,110,97,109,101,117,7,0,0,0,112,97,99,107,97, + 103,101,117,5,0,0,0,108,101,118,101,108,117,4,0,0, + 0,98,105,116,115,117,4,0,0,0,98,97,115,101,40,0, + 0,0,0,40,0,0,0,0,117,29,0,0,0,60,102,114, + 111,122,101,110,32,105,109,112,111,114,116,108,105,98,46,95, + 98,111,111,116,115,116,114,97,112,62,117,13,0,0,0,95, + 114,101,115,111,108,118,101,95,110,97,109,101,142,3,0,0, + 115,10,0,0,0,0,2,22,1,18,1,15,1,10,1,117, + 13,0,0,0,95,114,101,115,111,108,118,101,95,110,97,109, + 101,99,2,0,0,0,0,0,0,0,5,0,0,0,4,0, + 0,0,67,0,0,0,115,104,0,0,0,116,0,0,106,1, + 0,116,2,0,23,125,2,0,120,84,0,124,2,0,68,93, + 72,0,125,3,0,124,3,0,106,3,0,124,0,0,124,1, + 0,131,2,0,125,4,0,124,4,0,100,1,0,107,9,0, + 114,20,0,124,0,0,116,0,0,106,5,0,107,7,0,114, + 75,0,124,4,0,83,116,0,0,106,5,0,124,0,0,25, + 106,6,0,83,113,20,0,113,20,0,87,100,1,0,83,100, + 1,0,83,40,2,0,0,0,117,23,0,0,0,70,105,110, + 100,32,97,32,109,111,100,117,108,101,39,115,32,108,111,97, + 100,101,114,46,78,40,7,0,0,0,117,3,0,0,0,115, + 121,115,117,9,0,0,0,109,101,116,97,95,112,97,116,104, + 117,19,0,0,0,95,73,77,80,76,73,67,73,84,95,77, + 69,84,65,95,80,65,84,72,117,11,0,0,0,102,105,110, + 100,95,109,111,100,117,108,101,117,4,0,0,0,78,111,110, + 101,117,7,0,0,0,109,111,100,117,108,101,115,117,10,0, + 0,0,95,95,108,111,97,100,101,114,95,95,40,5,0,0, + 0,117,4,0,0,0,110,97,109,101,117,4,0,0,0,112, + 97,116,104,117,9,0,0,0,109,101,116,97,95,112,97,116, + 104,117,6,0,0,0,102,105,110,100,101,114,117,6,0,0, + 0,108,111,97,100,101,114,40,0,0,0,0,40,0,0,0, + 0,117,29,0,0,0,60,102,114,111,122,101,110,32,105,109, + 112,111,114,116,108,105,98,46,95,98,111,111,116,115,116,114, + 97,112,62,117,12,0,0,0,95,102,105,110,100,95,109,111, + 100,117,108,101,151,3,0,0,115,16,0,0,0,0,2,13, + 1,13,1,18,1,12,2,15,1,4,2,21,2,117,12,0, + 0,0,95,102,105,110,100,95,109,111,100,117,108,101,99,3, + 0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,67, + 0,0,0,115,194,0,0,0,116,0,0,124,0,0,116,1, + 0,131,2,0,115,45,0,116,2,0,100,1,0,106,3,0, + 116,4,0,124,0,0,131,1,0,131,1,0,131,1,0,130, + 1,0,110,0,0,124,2,0,100,2,0,107,0,0,114,72, + 0,116,5,0,100,3,0,131,1,0,130,1,0,110,0,0, + 124,1,0,114,156,0,116,0,0,124,1,0,116,1,0,131, + 2,0,115,108,0,116,2,0,100,4,0,131,1,0,130,1, + 0,113,156,0,124,1,0,116,6,0,106,7,0,107,7,0, + 114,156,0,100,5,0,125,3,0,116,8,0,124,3,0,106, + 3,0,124,1,0,131,1,0,131,1,0,130,1,0,113,156, + 0,110,0,0,124,0,0,12,114,190,0,124,2,0,100,2, + 0,107,2,0,114,190,0,116,5,0,100,6,0,131,1,0, + 130,1,0,110,0,0,100,7,0,83,40,8,0,0,0,117, + 28,0,0,0,86,101,114,105,102,121,32,97,114,103,117,109, + 101,110,116,115,32,97,114,101,32,34,115,97,110,101,34,46, + 117,31,0,0,0,109,111,100,117,108,101,32,110,97,109,101, + 32,109,117,115,116,32,98,101,32,115,116,114,44,32,110,111, + 116,32,123,125,105,0,0,0,0,117,18,0,0,0,108,101, + 118,101,108,32,109,117,115,116,32,98,101,32,62,61,32,48, + 117,31,0,0,0,95,95,112,97,99,107,97,103,101,95,95, + 32,110,111,116,32,115,101,116,32,116,111,32,97,32,115,116, + 114,105,110,103,117,62,0,0,0,80,97,114,101,110,116,32, + 109,111,100,117,108,101,32,123,48,33,114,125,32,110,111,116, + 32,108,111,97,100,101,100,44,32,99,97,110,110,111,116,32, + 112,101,114,102,111,114,109,32,114,101,108,97,116,105,118,101, + 32,105,109,112,111,114,116,117,17,0,0,0,69,109,112,116, + 121,32,109,111,100,117,108,101,32,110,97,109,101,78,40,9, + 0,0,0,117,10,0,0,0,105,115,105,110,115,116,97,110, + 99,101,117,3,0,0,0,115,116,114,117,9,0,0,0,84, + 121,112,101,69,114,114,111,114,117,6,0,0,0,102,111,114, + 109,97,116,117,4,0,0,0,116,121,112,101,117,10,0,0, + 0,86,97,108,117,101,69,114,114,111,114,117,3,0,0,0, + 115,121,115,117,7,0,0,0,109,111,100,117,108,101,115,117, + 11,0,0,0,83,121,115,116,101,109,69,114,114,111,114,40, + 4,0,0,0,117,4,0,0,0,110,97,109,101,117,7,0, + 0,0,112,97,99,107,97,103,101,117,5,0,0,0,108,101, + 118,101,108,117,3,0,0,0,109,115,103,40,0,0,0,0, + 40,0,0,0,0,117,29,0,0,0,60,102,114,111,122,101, + 110,32,105,109,112,111,114,116,108,105,98,46,95,98,111,111, + 116,115,116,114,97,112,62,117,13,0,0,0,95,115,97,110, + 105,116,121,95,99,104,101,99,107,166,3,0,0,115,24,0, + 0,0,0,2,15,1,30,1,12,1,15,1,6,1,15,1, + 15,1,15,1,6,2,27,1,19,1,117,13,0,0,0,95, + 115,97,110,105,116,121,95,99,104,101,99,107,117,20,0,0, + 0,78,111,32,109,111,100,117,108,101,32,110,97,109,101,100, + 32,123,33,114,125,99,2,0,0,0,0,0,0,0,8,0, + 0,0,20,0,0,0,67,0,0,0,115,205,1,0,0,100, + 9,0,125,2,0,124,0,0,106,1,0,100,1,0,131,1, + 0,100,2,0,25,125,3,0,124,3,0,114,175,0,124,3, + 0,116,2,0,106,3,0,107,7,0,114,59,0,124,1,0, + 124,3,0,131,1,0,1,110,0,0,124,0,0,116,2,0, + 106,3,0,107,6,0,114,85,0,116,2,0,106,3,0,124, + 0,0,25,83,116,2,0,106,3,0,124,3,0,25,125,4, + 0,121,13,0,124,4,0,106,4,0,125,2,0,87,113,175, + 0,4,116,5,0,107,10,0,114,171,0,1,1,1,116,6, + 0,100,3,0,23,106,7,0,124,0,0,124,3,0,131,2, + 0,125,5,0,116,8,0,124,5,0,100,4,0,124,0,0, + 131,1,1,130,1,0,89,113,175,0,88,110,0,0,116,9, + 0,124,0,0,124,2,0,131,2,0,125,6,0,124,6,0, + 100,9,0,107,8,0,114,232,0,116,8,0,116,6,0,106, + 7,0,124,0,0,131,1,0,100,4,0,124,0,0,131,1, + 1,130,1,0,110,47,0,124,0,0,116,2,0,106,3,0, + 107,7,0,114,23,1,124,6,0,106,10,0,124,0,0,131, + 1,0,1,116,11,0,100,5,0,124,0,0,124,6,0,131, + 3,0,1,110,0,0,116,2,0,106,3,0,124,0,0,25, + 125,7,0,124,3,0,114,87,1,116,2,0,106,3,0,124, + 3,0,25,125,4,0,116,12,0,124,4,0,124,0,0,106, + 1,0,100,1,0,131,1,0,100,6,0,25,124,7,0,131, + 3,0,1,110,0,0,116,13,0,124,7,0,100,7,0,131, + 2,0,12,115,118,1,124,7,0,106,14,0,100,9,0,107, + 8,0,114,201,1,121,59,0,124,7,0,106,15,0,124,7, + 0,95,14,0,116,13,0,124,7,0,100,8,0,131,2,0, + 115,176,1,124,7,0,106,14,0,106,1,0,100,1,0,131, + 1,0,100,2,0,25,124,7,0,95,14,0,110,0,0,87, + 113,201,1,4,116,5,0,107,10,0,114,197,1,1,1,1, + 89,113,201,1,88,110,0,0,124,7,0,83,40,10,0,0, + 0,117,25,0,0,0,70,105,110,100,32,97,110,100,32,108, + 111,97,100,32,116,104,101,32,109,111,100,117,108,101,46,117, + 1,0,0,0,46,105,0,0,0,0,117,21,0,0,0,59, + 32,123,125,32,105,115,32,110,111,116,32,97,32,112,97,99, + 107,97,103,101,117,4,0,0,0,110,97,109,101,117,18,0, + 0,0,105,109,112,111,114,116,32,123,33,114,125,32,35,32, + 123,33,114,125,105,2,0,0,0,117,11,0,0,0,95,95, + 112,97,99,107,97,103,101,95,95,117,8,0,0,0,95,95, + 112,97,116,104,95,95,78,40,16,0,0,0,117,4,0,0, + 0,78,111,110,101,117,10,0,0,0,114,112,97,114,116,105, + 116,105,111,110,117,3,0,0,0,115,121,115,117,7,0,0, + 0,109,111,100,117,108,101,115,117,8,0,0,0,95,95,112, + 97,116,104,95,95,117,14,0,0,0,65,116,116,114,105,98, + 117,116,101,69,114,114,111,114,117,8,0,0,0,95,69,82, + 82,95,77,83,71,117,6,0,0,0,102,111,114,109,97,116, + 117,11,0,0,0,73,109,112,111,114,116,69,114,114,111,114, + 117,12,0,0,0,95,102,105,110,100,95,109,111,100,117,108, + 101,117,11,0,0,0,108,111,97,100,95,109,111,100,117,108, + 101,117,15,0,0,0,118,101,114,98,111,115,101,95,109,101, + 115,115,97,103,101,117,7,0,0,0,115,101,116,97,116,116, + 114,117,7,0,0,0,104,97,115,97,116,116,114,117,11,0, + 0,0,95,95,112,97,99,107,97,103,101,95,95,117,8,0, + 0,0,95,95,110,97,109,101,95,95,40,8,0,0,0,117, + 4,0,0,0,110,97,109,101,117,7,0,0,0,105,109,112, + 111,114,116,95,117,4,0,0,0,112,97,116,104,117,6,0, + 0,0,112,97,114,101,110,116,117,13,0,0,0,112,97,114, + 101,110,116,95,109,111,100,117,108,101,117,3,0,0,0,109, + 115,103,117,6,0,0,0,108,111,97,100,101,114,117,6,0, + 0,0,109,111,100,117,108,101,40,0,0,0,0,40,0,0, + 0,0,117,29,0,0,0,60,102,114,111,122,101,110,32,105, + 109,112,111,114,116,108,105,98,46,95,98,111,111,116,115,116, + 114,97,112,62,117,14,0,0,0,95,102,105,110,100,95,97, + 110,100,95,108,111,97,100,187,3,0,0,115,62,0,0,0, + 0,2,6,1,19,1,6,1,15,1,13,2,15,1,11,2, + 13,1,3,1,13,1,13,1,22,1,26,1,15,1,12,1, + 30,1,15,2,13,1,19,2,13,1,6,2,13,1,32,2, + 31,1,3,1,12,1,15,1,32,1,13,1,8,1,117,14, + 0,0,0,95,102,105,110,100,95,97,110,100,95,108,111,97, + 100,105,0,0,0,0,99,3,0,0,0,0,0,0,0,5, + 0,0,0,18,0,0,0,67,0,0,0,115,172,0,0,0, + 116,0,0,124,0,0,124,1,0,124,2,0,131,3,0,1, + 124,2,0,100,1,0,107,4,0,114,49,0,116,1,0,124, + 0,0,124,1,0,124,2,0,131,3,0,125,0,0,110,0, + 0,116,2,0,131,0,0,143,108,0,1,121,69,0,116,3, + 0,106,4,0,124,0,0,25,125,3,0,124,3,0,100,4, + 0,107,8,0,114,123,0,100,2,0,106,6,0,124,0,0, + 131,1,0,125,4,0,116,7,0,124,4,0,100,3,0,124, + 0,0,131,1,1,130,1,0,110,0,0,124,3,0,83,87, + 110,18,0,4,116,8,0,107,10,0,114,148,0,1,1,1, + 89,110,1,0,88,116,9,0,124,0,0,116,10,0,131,2, + 0,83,87,100,4,0,81,88,100,4,0,83,40,5,0,0, + 0,117,50,1,0,0,73,109,112,111,114,116,32,97,110,100, + 32,114,101,116,117,114,110,32,116,104,101,32,109,111,100,117, + 108,101,32,98,97,115,101,100,32,111,110,32,105,116,115,32, + 110,97,109,101,44,32,116,104,101,32,112,97,99,107,97,103, + 101,32,116,104,101,32,99,97,108,108,32,105,115,10,32,32, + 32,32,98,101,105,110,103,32,109,97,100,101,32,102,114,111, + 109,44,32,97,110,100,32,116,104,101,32,108,101,118,101,108, + 32,97,100,106,117,115,116,109,101,110,116,46,10,10,32,32, + 32,32,84,104,105,115,32,102,117,110,99,116,105,111,110,32, + 114,101,112,114,101,115,101,110,116,115,32,116,104,101,32,103, + 114,101,97,116,101,115,116,32,99,111,109,109,111,110,32,100, + 101,110,111,109,105,110,97,116,111,114,32,111,102,32,102,117, + 110,99,116,105,111,110,97,108,105,116,121,10,32,32,32,32, + 98,101,116,119,101,101,110,32,105,109,112,111,114,116,95,109, + 111,100,117,108,101,32,97,110,100,32,95,95,105,109,112,111, + 114,116,95,95,46,32,84,104,105,115,32,105,110,99,108,117, + 100,101,115,32,115,101,116,116,105,110,103,32,95,95,112,97, + 99,107,97,103,101,95,95,32,105,102,10,32,32,32,32,116, + 104,101,32,108,111,97,100,101,114,32,100,105,100,32,110,111, + 116,46,10,10,32,32,32,32,105,0,0,0,0,117,40,0, + 0,0,105,109,112,111,114,116,32,111,102,32,123,125,32,104, + 97,108,116,101,100,59,32,78,111,110,101,32,105,110,32,115, + 121,115,46,109,111,100,117,108,101,115,117,4,0,0,0,110, + 97,109,101,78,40,11,0,0,0,117,13,0,0,0,95,115, + 97,110,105,116,121,95,99,104,101,99,107,117,13,0,0,0, + 95,114,101,115,111,108,118,101,95,110,97,109,101,117,18,0, + 0,0,95,73,109,112,111,114,116,76,111,99,107,67,111,110, + 116,101,120,116,117,3,0,0,0,115,121,115,117,7,0,0, + 0,109,111,100,117,108,101,115,117,4,0,0,0,78,111,110, + 101,117,6,0,0,0,102,111,114,109,97,116,117,11,0,0, + 0,73,109,112,111,114,116,69,114,114,111,114,117,8,0,0, + 0,75,101,121,69,114,114,111,114,117,14,0,0,0,95,102, + 105,110,100,95,97,110,100,95,108,111,97,100,117,11,0,0, + 0,95,103,99,100,95,105,109,112,111,114,116,40,5,0,0, + 0,117,4,0,0,0,110,97,109,101,117,7,0,0,0,112, + 97,99,107,97,103,101,117,5,0,0,0,108,101,118,101,108, + 117,6,0,0,0,109,111,100,117,108,101,117,7,0,0,0, + 109,101,115,115,97,103,101,40,0,0,0,0,40,0,0,0, + 0,117,29,0,0,0,60,102,114,111,122,101,110,32,105,109, + 112,111,114,116,108,105,98,46,95,98,111,111,116,115,116,114, + 97,112,62,117,11,0,0,0,95,103,99,100,95,105,109,112, + 111,114,116,228,3,0,0,115,28,0,0,0,0,9,16,1, + 12,1,21,1,10,1,3,1,13,1,12,1,6,1,9,1, + 21,1,8,1,13,1,5,1,117,11,0,0,0,95,103,99, + 100,95,105,109,112,111,114,116,99,3,0,0,0,0,0,0, + 0,4,0,0,0,13,0,0,0,3,0,0,0,115,179,0, + 0,0,116,0,0,136,0,0,100,1,0,131,2,0,114,175, + 0,100,2,0,124,1,0,107,6,0,114,86,0,116,0,0, + 136,0,0,100,3,0,131,2,0,114,86,0,116,1,0,124, + 1,0,131,1,0,125,1,0,124,1,0,106,2,0,100,2, + 0,131,1,0,1,124,1,0,106,3,0,136,0,0,106,4, + 0,131,1,0,1,110,0,0,120,86,0,135,0,0,102,1, + 0,100,4,0,100,5,0,134,0,0,124,1,0,68,131,1, + 0,68,93,56,0,125,3,0,121,29,0,124,2,0,100,6, + 0,106,5,0,136,0,0,106,6,0,124,3,0,131,2,0, + 131,1,0,1,87,113,112,0,4,116,7,0,107,10,0,114, + 167,0,1,1,1,89,113,112,0,88,113,112,0,87,110,0, + 0,136,0,0,83,40,7,0,0,0,117,238,0,0,0,70, + 105,103,117,114,101,32,111,117,116,32,119,104,97,116,32,95, + 95,105,109,112,111,114,116,95,95,32,115,104,111,117,108,100, + 32,114,101,116,117,114,110,46,10,10,32,32,32,32,84,104, + 101,32,105,109,112,111,114,116,95,32,112,97,114,97,109,101, + 116,101,114,32,105,115,32,97,32,99,97,108,108,97,98,108, + 101,32,119,104,105,99,104,32,116,97,107,101,115,32,116,104, + 101,32,110,97,109,101,32,111,102,32,109,111,100,117,108,101, + 32,116,111,10,32,32,32,32,105,109,112,111,114,116,46,32, + 73,116,32,105,115,32,114,101,113,117,105,114,101,100,32,116, + 111,32,100,101,99,111,117,112,108,101,32,116,104,101,32,102, + 117,110,99,116,105,111,110,32,102,114,111,109,32,97,115,115, + 117,109,105,110,103,32,105,109,112,111,114,116,108,105,98,39, + 115,10,32,32,32,32,105,109,112,111,114,116,32,105,109,112, + 108,101,109,101,110,116,97,116,105,111,110,32,105,115,32,100, + 101,115,105,114,101,100,46,10,10,32,32,32,32,117,8,0, + 0,0,95,95,112,97,116,104,95,95,117,1,0,0,0,42, + 117,7,0,0,0,95,95,97,108,108,95,95,99,1,0,0, + 0,0,0,0,0,2,0,0,0,4,0,0,0,51,0,0, + 0,115,36,0,0,0,124,0,0,93,26,0,125,1,0,116, + 0,0,136,0,0,124,1,0,131,2,0,115,3,0,124,1, + 0,86,1,113,3,0,100,0,0,83,40,1,0,0,0,78, + 40,1,0,0,0,117,7,0,0,0,104,97,115,97,116,116, + 114,40,2,0,0,0,117,2,0,0,0,46,48,117,1,0, + 0,0,121,40,1,0,0,0,117,6,0,0,0,109,111,100, + 117,108,101,40,0,0,0,0,117,29,0,0,0,60,102,114, + 111,122,101,110,32,105,109,112,111,114,116,108,105,98,46,95, + 98,111,111,116,115,116,114,97,112,62,117,9,0,0,0,60, + 103,101,110,101,120,112,114,62,12,4,0,0,115,2,0,0, + 0,6,0,117,35,0,0,0,95,104,97,110,100,108,101,95, + 102,114,111,109,108,105,115,116,46,60,108,111,99,97,108,115, + 62,46,60,103,101,110,101,120,112,114,62,117,7,0,0,0, + 123,48,125,46,123,49,125,40,8,0,0,0,117,7,0,0, + 0,104,97,115,97,116,116,114,117,4,0,0,0,108,105,115, + 116,117,6,0,0,0,114,101,109,111,118,101,117,6,0,0, + 0,101,120,116,101,110,100,117,7,0,0,0,95,95,97,108, + 108,95,95,117,6,0,0,0,102,111,114,109,97,116,117,8, + 0,0,0,95,95,110,97,109,101,95,95,117,11,0,0,0, + 73,109,112,111,114,116,69,114,114,111,114,40,4,0,0,0, + 117,6,0,0,0,109,111,100,117,108,101,117,8,0,0,0, + 102,114,111,109,108,105,115,116,117,7,0,0,0,105,109,112, + 111,114,116,95,117,1,0,0,0,120,40,0,0,0,0,40, + 1,0,0,0,117,6,0,0,0,109,111,100,117,108,101,117, + 29,0,0,0,60,102,114,111,122,101,110,32,105,109,112,111, + 114,116,108,105,98,46,95,98,111,111,116,115,116,114,97,112, + 62,117,16,0,0,0,95,104,97,110,100,108,101,95,102,114, + 111,109,108,105,115,116,253,3,0,0,115,22,0,0,0,0, + 10,15,1,27,1,12,1,13,1,19,1,32,1,3,1,29, + 1,13,1,12,1,117,16,0,0,0,95,104,97,110,100,108, + 101,95,102,114,111,109,108,105,115,116,99,1,0,0,0,0, + 0,0,0,2,0,0,0,2,0,0,0,67,0,0,0,115, + 78,0,0,0,124,0,0,106,0,0,100,1,0,131,1,0, + 125,1,0,124,1,0,100,6,0,107,8,0,114,74,0,124, + 0,0,100,2,0,25,125,1,0,100,3,0,124,0,0,107, + 7,0,114,74,0,124,1,0,106,2,0,100,4,0,131,1, + 0,100,5,0,25,125,1,0,113,74,0,110,0,0,124,1, + 0,83,40,7,0,0,0,117,167,0,0,0,67,97,108,99, + 117,108,97,116,101,32,119,104,97,116,32,95,95,112,97,99, + 107,97,103,101,95,95,32,115,104,111,117,108,100,32,98,101, + 46,10,10,32,32,32,32,95,95,112,97,99,107,97,103,101, + 95,95,32,105,115,32,110,111,116,32,103,117,97,114,97,110, + 116,101,101,100,32,116,111,32,98,101,32,100,101,102,105,110, + 101,100,32,111,114,32,99,111,117,108,100,32,98,101,32,115, + 101,116,32,116,111,32,78,111,110,101,10,32,32,32,32,116, + 111,32,114,101,112,114,101,115,101,110,116,32,116,104,97,116, + 32,105,116,115,32,112,114,111,112,101,114,32,118,97,108,117, + 101,32,105,115,32,117,110,107,110,111,119,110,46,10,10,32, + 32,32,32,117,11,0,0,0,95,95,112,97,99,107,97,103, + 101,95,95,117,8,0,0,0,95,95,110,97,109,101,95,95, + 117,8,0,0,0,95,95,112,97,116,104,95,95,117,1,0, + 0,0,46,105,0,0,0,0,78,40,3,0,0,0,117,3, + 0,0,0,103,101,116,117,4,0,0,0,78,111,110,101,117, + 10,0,0,0,114,112,97,114,116,105,116,105,111,110,40,2, + 0,0,0,117,7,0,0,0,103,108,111,98,97,108,115,117, + 7,0,0,0,112,97,99,107,97,103,101,40,0,0,0,0, + 40,0,0,0,0,117,29,0,0,0,60,102,114,111,122,101, + 110,32,105,109,112,111,114,116,108,105,98,46,95,98,111,111, + 116,115,116,114,97,112,62,117,17,0,0,0,95,99,97,108, + 99,95,95,95,112,97,99,107,97,103,101,95,95,20,4,0, + 0,115,12,0,0,0,0,7,15,1,12,1,10,1,12,1, + 25,1,117,17,0,0,0,95,99,97,108,99,95,95,95,112, + 97,99,107,97,103,101,95,95,99,5,0,0,0,0,0,0, + 0,8,0,0,0,4,0,0,0,67,0,0,0,115,192,0, + 0,0,124,4,0,100,1,0,107,2,0,114,27,0,116,0, + 0,124,0,0,131,1,0,125,5,0,110,30,0,116,1,0, + 124,1,0,131,1,0,125,6,0,116,0,0,124,0,0,124, + 6,0,124,4,0,131,3,0,125,5,0,124,3,0,115,172, + 0,124,4,0,100,1,0,107,2,0,114,99,0,116,2,0, + 106,3,0,124,0,0,106,4,0,100,2,0,131,1,0,100, + 1,0,25,25,83,124,0,0,115,109,0,124,5,0,83,116, + 5,0,124,0,0,131,1,0,116,5,0,124,0,0,106,4, + 0,100,2,0,131,1,0,100,1,0,25,131,1,0,24,125, + 7,0,116,2,0,106,3,0,124,5,0,106,6,0,100,3, + 0,124,7,0,11,133,2,0,25,25,83,110,16,0,116,7, + 0,124,5,0,124,3,0,116,0,0,131,3,0,83,100,3, + 0,83,40,4,0,0,0,117,214,1,0,0,73,109,112,111, + 114,116,32,97,32,109,111,100,117,108,101,46,10,10,32,32, + 32,32,84,104,101,32,39,103,108,111,98,97,108,115,39,32, + 97,114,103,117,109,101,110,116,32,105,115,32,117,115,101,100, + 32,116,111,32,105,110,102,101,114,32,119,104,101,114,101,32, + 116,104,101,32,105,109,112,111,114,116,32,105,115,32,111,99, + 99,117,114,105,110,103,32,102,114,111,109,10,32,32,32,32, + 116,111,32,104,97,110,100,108,101,32,114,101,108,97,116,105, + 118,101,32,105,109,112,111,114,116,115,46,32,84,104,101,32, + 39,108,111,99,97,108,115,39,32,97,114,103,117,109,101,110, + 116,32,105,115,32,105,103,110,111,114,101,100,46,32,84,104, + 101,10,32,32,32,32,39,102,114,111,109,108,105,115,116,39, + 32,97,114,103,117,109,101,110,116,32,115,112,101,99,105,102, + 105,101,115,32,119,104,97,116,32,115,104,111,117,108,100,32, + 101,120,105,115,116,32,97,115,32,97,116,116,114,105,98,117, + 116,101,115,32,111,110,32,116,104,101,32,109,111,100,117,108, + 101,10,32,32,32,32,98,101,105,110,103,32,105,109,112,111, + 114,116,101,100,32,40,101,46,103,46,32,96,96,102,114,111, + 109,32,109,111,100,117,108,101,32,105,109,112,111,114,116,32, + 60,102,114,111,109,108,105,115,116,62,96,96,41,46,32,32, + 84,104,101,32,39,108,101,118,101,108,39,10,32,32,32,32, + 97,114,103,117,109,101,110,116,32,114,101,112,114,101,115,101, + 110,116,115,32,116,104,101,32,112,97,99,107,97,103,101,32, + 108,111,99,97,116,105,111,110,32,116,111,32,105,109,112,111, + 114,116,32,102,114,111,109,32,105,110,32,97,32,114,101,108, + 97,116,105,118,101,10,32,32,32,32,105,109,112,111,114,116, + 32,40,101,46,103,46,32,96,96,102,114,111,109,32,46,46, + 112,107,103,32,105,109,112,111,114,116,32,109,111,100,96,96, + 32,119,111,117,108,100,32,104,97,118,101,32,97,32,39,108, + 101,118,101,108,39,32,111,102,32,50,41,46,10,10,32,32, + 32,32,105,0,0,0,0,117,1,0,0,0,46,78,40,8, + 0,0,0,117,11,0,0,0,95,103,99,100,95,105,109,112, + 111,114,116,117,17,0,0,0,95,99,97,108,99,95,95,95, + 112,97,99,107,97,103,101,95,95,117,3,0,0,0,115,121, + 115,117,7,0,0,0,109,111,100,117,108,101,115,117,9,0, + 0,0,112,97,114,116,105,116,105,111,110,117,3,0,0,0, + 108,101,110,117,8,0,0,0,95,95,110,97,109,101,95,95, + 117,16,0,0,0,95,104,97,110,100,108,101,95,102,114,111, + 109,108,105,115,116,40,8,0,0,0,117,4,0,0,0,110, + 97,109,101,117,7,0,0,0,103,108,111,98,97,108,115,117, + 6,0,0,0,108,111,99,97,108,115,117,8,0,0,0,102, + 114,111,109,108,105,115,116,117,5,0,0,0,108,101,118,101, + 108,117,6,0,0,0,109,111,100,117,108,101,117,7,0,0, + 0,112,97,99,107,97,103,101,117,7,0,0,0,99,117,116, + 95,111,102,102,40,0,0,0,0,40,0,0,0,0,117,29, + 0,0,0,60,102,114,111,122,101,110,32,105,109,112,111,114, + 116,108,105,98,46,95,98,111,111,116,115,116,114,97,112,62, + 117,10,0,0,0,95,95,105,109,112,111,114,116,95,95,35, + 4,0,0,115,24,0,0,0,0,11,12,1,15,2,12,1, + 18,1,6,3,12,1,24,1,6,1,4,2,35,1,28,2, + 117,10,0,0,0,95,95,105,109,112,111,114,116,95,95,99, + 2,0,0,0,0,0,0,0,9,0,0,0,12,0,0,0, + 67,0,0,0,115,109,1,0,0,124,1,0,97,0,0,124, + 0,0,97,1,0,120,47,0,116,0,0,116,1,0,102,2, + 0,68,93,33,0,125,2,0,116,2,0,124,2,0,100,1, + 0,131,2,0,115,25,0,116,3,0,124,2,0,95,4,0, + 113,25,0,113,25,0,87,116,1,0,106,5,0,116,6,0, + 25,125,3,0,120,76,0,100,17,0,68,93,68,0,125,4, + 0,124,4,0,116,1,0,106,5,0,107,7,0,114,121,0, + 116,3,0,106,7,0,124,4,0,131,1,0,125,5,0,110, + 13,0,116,1,0,106,5,0,124,4,0,25,125,5,0,116, + 8,0,124,3,0,124,4,0,124,5,0,131,3,0,1,113, + 82,0,87,120,153,0,100,18,0,100,19,0,100,20,0,103, + 3,0,68,93,124,0,92,2,0,125,6,0,125,7,0,124, + 6,0,116,1,0,106,5,0,107,6,0,114,214,0,116,1, + 0,106,5,0,124,6,0,25,125,8,0,80,113,170,0,121, + 56,0,116,3,0,106,7,0,124,6,0,131,1,0,125,8, + 0,124,6,0,100,10,0,107,2,0,114,12,1,100,11,0, + 116,1,0,106,9,0,107,6,0,114,12,1,100,7,0,125, + 7,0,110,0,0,80,87,113,170,0,4,116,10,0,107,10, + 0,114,37,1,1,1,1,119,170,0,89,113,170,0,88,113, + 170,0,87,116,10,0,100,12,0,131,1,0,130,1,0,116, + 8,0,124,3,0,100,13,0,124,8,0,131,3,0,1,116, + 8,0,124,3,0,100,14,0,124,7,0,131,3,0,1,116, + 8,0,124,3,0,100,15,0,116,11,0,131,0,0,131,3, + 0,1,100,16,0,83,40,21,0,0,0,117,249,0,0,0, + 83,101,116,117,112,32,105,109,112,111,114,116,108,105,98,32, + 98,121,32,105,109,112,111,114,116,105,110,103,32,110,101,101, + 100,101,100,32,98,117,105,108,116,45,105,110,32,109,111,100, + 117,108,101,115,32,97,110,100,32,105,110,106,101,99,116,105, + 110,103,32,116,104,101,109,10,32,32,32,32,105,110,116,111, + 32,116,104,101,32,103,108,111,98,97,108,32,110,97,109,101, + 115,112,97,99,101,46,10,10,32,32,32,32,65,115,32,115, + 121,115,32,105,115,32,110,101,101,100,101,100,32,102,111,114, + 32,115,121,115,46,109,111,100,117,108,101,115,32,97,99,99, + 101,115,115,32,97,110,100,32,105,109,112,32,105,115,32,110, + 101,101,100,101,100,32,116,111,32,108,111,97,100,32,98,117, + 105,108,116,45,105,110,10,32,32,32,32,109,111,100,117,108, + 101,115,44,32,116,104,111,115,101,32,116,119,111,32,109,111, + 100,117,108,101,115,32,109,117,115,116,32,98,101,32,101,120, + 112,108,105,99,105,116,108,121,32,112,97,115,115,101,100,32, + 105,110,46,10,10,32,32,32,32,117,10,0,0,0,95,95, + 108,111,97,100,101,114,95,95,117,3,0,0,0,95,105,111, + 117,9,0,0,0,95,119,97,114,110,105,110,103,115,117,8, + 0,0,0,98,117,105,108,116,105,110,115,117,7,0,0,0, + 109,97,114,115,104,97,108,117,5,0,0,0,112,111,115,105, + 120,117,1,0,0,0,47,117,2,0,0,0,110,116,117,1, + 0,0,0,92,117,3,0,0,0,111,115,50,117,7,0,0, + 0,69,77,88,32,71,67,67,117,30,0,0,0,105,109,112, + 111,114,116,108,105,98,32,114,101,113,117,105,114,101,115,32, + 112,111,115,105,120,32,111,114,32,110,116,117,3,0,0,0, + 95,111,115,117,8,0,0,0,112,97,116,104,95,115,101,112, + 117,11,0,0,0,95,114,101,108,97,120,95,99,97,115,101, + 78,40,4,0,0,0,117,3,0,0,0,95,105,111,117,9, + 0,0,0,95,119,97,114,110,105,110,103,115,117,8,0,0, + 0,98,117,105,108,116,105,110,115,117,7,0,0,0,109,97, + 114,115,104,97,108,40,2,0,0,0,117,5,0,0,0,112, + 111,115,105,120,117,1,0,0,0,47,40,2,0,0,0,117, + 2,0,0,0,110,116,117,1,0,0,0,92,40,2,0,0, + 0,117,3,0,0,0,111,115,50,117,1,0,0,0,92,40, + 12,0,0,0,117,3,0,0,0,105,109,112,117,3,0,0, + 0,115,121,115,117,7,0,0,0,104,97,115,97,116,116,114, + 117,15,0,0,0,66,117,105,108,116,105,110,73,109,112,111, + 114,116,101,114,117,10,0,0,0,95,95,108,111,97,100,101, + 114,95,95,117,7,0,0,0,109,111,100,117,108,101,115,117, + 8,0,0,0,95,95,110,97,109,101,95,95,117,11,0,0, + 0,108,111,97,100,95,109,111,100,117,108,101,117,7,0,0, + 0,115,101,116,97,116,116,114,117,7,0,0,0,118,101,114, + 115,105,111,110,117,11,0,0,0,73,109,112,111,114,116,69, + 114,114,111,114,117,16,0,0,0,95,109,97,107,101,95,114, + 101,108,97,120,95,99,97,115,101,40,9,0,0,0,117,10, + 0,0,0,115,121,115,95,109,111,100,117,108,101,117,10,0, + 0,0,105,109,112,95,109,111,100,117,108,101,117,6,0,0, + 0,109,111,100,117,108,101,117,11,0,0,0,115,101,108,102, + 95,109,111,100,117,108,101,117,12,0,0,0,98,117,105,108, + 116,105,110,95,110,97,109,101,117,14,0,0,0,98,117,105, + 108,116,105,110,95,109,111,100,117,108,101,117,10,0,0,0, + 98,117,105,108,116,105,110,95,111,115,117,8,0,0,0,112, + 97,116,104,95,115,101,112,117,9,0,0,0,111,115,95,109, + 111,100,117,108,101,40,0,0,0,0,40,0,0,0,0,117, + 29,0,0,0,60,102,114,111,122,101,110,32,105,109,112,111, + 114,116,108,105,98,46,95,98,111,111,116,115,116,114,97,112, + 62,117,6,0,0,0,95,115,101,116,117,112,65,4,0,0, + 115,52,0,0,0,0,9,6,1,6,2,19,1,15,1,16, + 2,13,1,13,1,15,1,18,2,13,1,20,2,28,1,15, + 1,13,1,4,2,3,1,15,2,27,1,9,1,5,1,13, + 1,12,2,12,1,16,1,16,2,117,6,0,0,0,95,115, + 101,116,117,112,99,2,0,0,0,0,0,0,0,3,0,0, + 0,3,0,0,0,67,0,0,0,115,44,0,0,0,116,0, + 0,124,0,0,124,1,0,131,2,0,1,116,1,0,106,2, + 0,125,2,0,116,2,0,116,1,0,95,2,0,124,2,0, + 116,1,0,95,3,0,100,1,0,83,40,2,0,0,0,117, + 201,0,0,0,73,110,115,116,97,108,108,32,105,109,112,111, + 114,116,108,105,98,32,97,115,32,116,104,101,32,105,109,112, + 108,101,109,101,110,116,97,116,105,111,110,32,111,102,32,105, + 109,112,111,114,116,46,10,10,32,32,32,32,73,116,32,105, + 115,32,97,115,115,117,109,101,100,32,116,104,97,116,32,105, + 109,112,32,97,110,100,32,115,121,115,32,104,97,118,101,32, + 98,101,101,110,32,105,109,112,111,114,116,101,100,32,97,110, + 100,32,105,110,106,101,99,116,101,100,32,105,110,116,111,32, + 116,104,101,10,32,32,32,32,103,108,111,98,97,108,32,110, + 97,109,101,115,112,97,99,101,32,102,111,114,32,116,104,101, + 32,109,111,100,117,108,101,32,112,114,105,111,114,32,116,111, + 32,99,97,108,108,105,110,103,32,116,104,105,115,32,102,117, + 110,99,116,105,111,110,46,10,10,32,32,32,32,78,40,4, + 0,0,0,117,6,0,0,0,95,115,101,116,117,112,117,8, + 0,0,0,98,117,105,108,116,105,110,115,117,10,0,0,0, + 95,95,105,109,112,111,114,116,95,95,117,19,0,0,0,95, + 95,111,114,105,103,105,110,97,108,95,105,109,112,111,114,116, + 95,95,40,3,0,0,0,117,10,0,0,0,115,121,115,95, + 109,111,100,117,108,101,117,10,0,0,0,105,109,112,95,109, + 111,100,117,108,101,117,11,0,0,0,111,114,105,103,95,105, + 109,112,111,114,116,40,0,0,0,0,40,0,0,0,0,117, + 29,0,0,0,60,102,114,111,122,101,110,32,105,109,112,111, + 114,116,108,105,98,46,95,98,111,111,116,115,116,114,97,112, + 62,117,8,0,0,0,95,105,110,115,116,97,108,108,110,4, + 0,0,115,8,0,0,0,0,7,13,1,9,1,9,1,117, + 8,0,0,0,95,105,110,115,116,97,108,108,78,40,3,0, + 0,0,117,3,0,0,0,119,105,110,117,6,0,0,0,99, + 121,103,119,105,110,117,6,0,0,0,100,97,114,119,105,110, + 40,55,0,0,0,117,7,0,0,0,95,95,100,111,99,95, + 95,117,26,0,0,0,67,65,83,69,95,73,78,83,69,78, + 83,73,84,73,86,69,95,80,76,65,84,70,79,82,77,83, + 117,16,0,0,0,95,109,97,107,101,95,114,101,108,97,120, + 95,99,97,115,101,117,7,0,0,0,95,119,95,108,111,110, + 103,117,7,0,0,0,95,114,95,108,111,110,103,117,10,0, + 0,0,95,112,97,116,104,95,106,111,105,110,117,12,0,0, + 0,95,112,97,116,104,95,101,120,105,115,116,115,117,18,0, + 0,0,95,112,97,116,104,95,105,115,95,109,111,100,101,95, + 116,121,112,101,117,12,0,0,0,95,112,97,116,104,95,105, + 115,102,105,108,101,117,11,0,0,0,95,112,97,116,104,95, + 105,115,100,105,114,117,17,0,0,0,95,112,97,116,104,95, + 119,105,116,104,111,117,116,95,101,120,116,117,14,0,0,0, + 95,112,97,116,104,95,97,98,115,111,108,117,116,101,117,13, + 0,0,0,95,119,114,105,116,101,95,97,116,111,109,105,99, + 117,5,0,0,0,95,119,114,97,112,117,4,0,0,0,116, + 121,112,101,117,8,0,0,0,95,95,99,111,100,101,95,95, + 117,9,0,0,0,99,111,100,101,95,116,121,112,101,117,15, + 0,0,0,118,101,114,98,111,115,101,95,109,101,115,115,97, + 103,101,117,11,0,0,0,115,101,116,95,112,97,99,107,97, + 103,101,117,10,0,0,0,115,101,116,95,108,111,97,100,101, + 114,117,17,0,0,0,109,111,100,117,108,101,95,102,111,114, + 95,108,111,97,100,101,114,117,11,0,0,0,95,99,104,101, + 99,107,95,110,97,109,101,117,17,0,0,0,95,114,101,113, + 117,105,114,101,115,95,98,117,105,108,116,105,110,117,16,0, + 0,0,95,114,101,113,117,105,114,101,115,95,102,114,111,122, + 101,110,117,12,0,0,0,95,115,117,102,102,105,120,95,108, + 105,115,116,117,15,0,0,0,66,117,105,108,116,105,110,73, + 109,112,111,114,116,101,114,117,14,0,0,0,70,114,111,122, + 101,110,73,109,112,111,114,116,101,114,117,13,0,0,0,95, + 76,111,97,100,101,114,66,97,115,105,99,115,117,12,0,0, + 0,83,111,117,114,99,101,76,111,97,100,101,114,117,11,0, + 0,0,95,70,105,108,101,76,111,97,100,101,114,117,17,0, + 0,0,95,83,111,117,114,99,101,70,105,108,101,76,111,97, + 100,101,114,117,21,0,0,0,95,83,111,117,114,99,101,108, + 101,115,115,70,105,108,101,76,111,97,100,101,114,117,20,0, + 0,0,95,69,120,116,101,110,115,105,111,110,70,105,108,101, + 76,111,97,100,101,114,117,10,0,0,0,80,97,116,104,70, + 105,110,100,101,114,117,11,0,0,0,95,70,105,108,101,70, + 105,110,100,101,114,117,20,0,0,0,95,83,111,117,114,99, + 101,70,105,110,100,101,114,68,101,116,97,105,108,115,117,24, + 0,0,0,95,83,111,117,114,99,101,108,101,115,115,70,105, + 110,100,101,114,68,101,116,97,105,108,115,117,23,0,0,0, + 95,69,120,116,101,110,115,105,111,110,70,105,110,100,101,114, + 68,101,116,97,105,108,115,117,15,0,0,0,95,102,105,108, + 101,95,112,97,116,104,95,104,111,111,107,117,18,0,0,0, + 95,68,69,70,65,85,76,84,95,80,65,84,72,95,72,79, + 79,75,117,18,0,0,0,95,68,101,102,97,117,108,116,80, + 97,116,104,70,105,110,100,101,114,117,18,0,0,0,95,73, + 109,112,111,114,116,76,111,99,107,67,111,110,116,101,120,116, + 117,13,0,0,0,95,114,101,115,111,108,118,101,95,110,97, + 109,101,117,12,0,0,0,95,102,105,110,100,95,109,111,100, + 117,108,101,117,13,0,0,0,95,115,97,110,105,116,121,95, + 99,104,101,99,107,117,19,0,0,0,95,73,77,80,76,73, + 67,73,84,95,77,69,84,65,95,80,65,84,72,117,8,0, + 0,0,95,69,82,82,95,77,83,71,117,14,0,0,0,95, + 102,105,110,100,95,97,110,100,95,108,111,97,100,117,4,0, + 0,0,78,111,110,101,117,11,0,0,0,95,103,99,100,95, + 105,109,112,111,114,116,117,16,0,0,0,95,104,97,110,100, + 108,101,95,102,114,111,109,108,105,115,116,117,17,0,0,0, + 95,99,97,108,99,95,95,95,112,97,99,107,97,103,101,95, + 95,117,10,0,0,0,95,95,105,109,112,111,114,116,95,95, + 117,6,0,0,0,95,115,101,116,117,112,117,8,0,0,0, + 95,105,110,115,116,97,108,108,40,0,0,0,0,40,0,0, + 0,0,40,0,0,0,0,117,29,0,0,0,60,102,114,111, + 122,101,110,32,105,109,112,111,114,116,108,105,98,46,95,98, + 111,111,116,115,116,114,97,112,62,117,8,0,0,0,60,109, + 111,100,117,108,101,62,8,0,0,0,115,102,0,0,0,6, + 14,6,3,12,13,12,16,12,15,12,6,12,10,12,10,12, + 6,12,7,12,9,12,13,12,21,12,8,15,4,12,8,12, + 13,12,11,12,32,12,16,12,11,12,11,12,8,19,53,19, + 47,19,77,22,114,19,22,25,38,25,24,19,45,19,68,19, + 75,19,8,19,9,19,11,12,10,6,2,22,21,19,13,12, + 9,12,15,12,17,15,2,6,2,12,41,18,25,12,23,12, + 15,24,30,12,45, +}; diff --git a/Python/pystate.c b/Python/pystate.c index 31b5423..fdcbbce 100644 --- a/Python/pystate.c +++ b/Python/pystate.c @@ -79,6 +79,7 @@ PyInterpreterState_New(void) interp->codec_error_registry = NULL; interp->codecs_initialized = 0; interp->fscodec_initialized = 0; + interp->importlib = NULL; #ifdef HAVE_DLOPEN #ifdef RTLD_NOW interp->dlopenflags = RTLD_NOW; @@ -116,6 +117,7 @@ PyInterpreterState_Clear(PyInterpreterState *interp) Py_CLEAR(interp->modules_reloading); Py_CLEAR(interp->sysdict); Py_CLEAR(interp->builtins); + Py_CLEAR(interp->importlib); } diff --git a/Python/pythonrun.c b/Python/pythonrun.c index b68bf9d..2757eba 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -190,6 +190,58 @@ get_locale_encoding(void) #endif } +static void +import_init(PyInterpreterState *interp, PyObject *sysmod) +{ + PyObject *importlib; + PyObject *impmod; + PyObject *sys_modules; + PyObject *value; + + /* Import _importlib through its frozen version, _frozen_importlib. */ + /* XXX(bcannon): The file path for _frozen_importlib is completely off + */ + if (PyImport_ImportFrozenModule("_frozen_importlib") <= 0) { + Py_FatalError("Py_Initialize: can't import _frozen_importlib"); + } + else if (Py_VerboseFlag) { + PySys_FormatStderr("import _frozen_importlib # frozen\n"); + } + importlib = PyImport_AddModule("_frozen_importlib"); + if (importlib == NULL) { + Py_FatalError("Py_Initialize: couldn't get _frozen_importlib from " + "sys.modules"); + } + interp->importlib = importlib; + Py_INCREF(interp->importlib); + + /* Install _importlib as __import__ */ + impmod = PyInit_imp(); + if (impmod == NULL) { + Py_FatalError("Py_Initialize: can't import imp"); + } + else if (Py_VerboseFlag) { + PySys_FormatStderr("import imp # builtin\n"); + } + sys_modules = PyImport_GetModuleDict(); + if (Py_VerboseFlag) { + PySys_FormatStderr("import sys # builtin\n"); + } + if (PyDict_SetItemString(sys_modules, "imp", impmod) < 0) { + Py_FatalError("Py_Initialize: can't save imp to sys.modules"); + } + + value = PyObject_CallMethod(importlib, "_setup", "OO", sysmod, impmod); + if (value == NULL) { + PyErr_Print(); + Py_FatalError("Py_Initialize: importlib install failed"); + } + Py_DECREF(value); + + _PyImportZip_Init(); +} + + void Py_InitializeEx(int install_sigs) { @@ -281,7 +333,7 @@ Py_InitializeEx(int install_sigs) Py_INCREF(interp->builtins); /* initialize builtin exceptions */ - _PyExc_Init(); + _PyExc_Init(bimod); sysmod = _PySys_Init(); if (sysmod == NULL) @@ -315,6 +367,8 @@ Py_InitializeEx(int install_sigs) /* Initialize _warnings. */ _PyWarnings_Init(); + import_init(interp, sysmod); + _PyTime_Init(); if (initfsencoding(interp) < 0) @@ -638,11 +692,12 @@ Py_NewInterpreter(void) } /* initialize builtin exceptions */ - _PyExc_Init(); + _PyExc_Init(bimod); sysmod = _PyImport_FindBuiltin("sys"); if (bimod != NULL && sysmod != NULL) { PyObject *pstderr; + interp->sysdict = PyModule_GetDict(sysmod); if (interp->sysdict == NULL) goto handle_error; @@ -661,6 +716,8 @@ Py_NewInterpreter(void) _PyImportHooks_Init(); + import_init(interp, sysmod); + if (initfsencoding(interp) < 0) goto handle_error; -- cgit v0.12