Issue #15767: Introduce ModuleNotFoundError, a subclass of

ImportError.

The exception is raised by import when a module could not be found.
Technically this is defined as no viable loader could be found for the
specified module. This includes ``from ... import`` statements so that
the module usage is consistent for all situations where import
couldn't find what was requested.

This should allow for the common idiom of::

  try:
    import something
  except ImportError:
    pass

to be updated to using ModuleNotFoundError and not accidentally mask
ImportError messages that should propagate (e.g. issues with a
loader).

This work was driven by the fact that the ``from ... import``
statement needed to be able to tell the difference between an
ImportError that simply couldn't find a module (and thus silence the
exception so that ceval can raise it) and an ImportError that
represented an actual problem.
This commit is contained in:
Brett Cannon 2013-06-12 16:59:46 -04:00
parent 638ce0779b
commit b1611e2772
17 changed files with 424 additions and 408 deletions

View File

@ -686,6 +686,8 @@ the variables:
+-----------------------------------------+---------------------------------+----------+
| :c:data:`PyExc_ImportError` | :exc:`ImportError` | |
+-----------------------------------------+---------------------------------+----------+
| :c:data:`PyExc_ModuleNotFoundError` | :exc:`ModuleNotFoundError` | |
+-----------------------------------------+---------------------------------+----------+
| :c:data:`PyExc_IndexError` | :exc:`IndexError` | |
+-----------------------------------------+---------------------------------+----------+
| :c:data:`PyExc_InterruptedError` | :exc:`InterruptedError` | |

View File

@ -169,8 +169,8 @@ The following exceptions are the exceptions that are usually raised.
.. exception:: ImportError
Raised when an :keyword:`import` statement fails to find the module definition
or when a ``from ... import`` fails to find a name that is to be imported.
Raised when the :keyword:`import` statement has troubles trying to load a
module.
The :attr:`name` and :attr:`path` attributes can be set using keyword-only
arguments to the constructor. When set they represent the name of the module
@ -180,6 +180,15 @@ The following exceptions are the exceptions that are usually raised.
.. versionchanged:: 3.3
Added the :attr:`name` and :attr:`path` attributes.
.. exception:: ModuleNotFoundError
A subclass of :exc:`ImportError` which is raised by :keyword:`import` when a
module could not be located. This includes ``from ... import`` statements as
the specific attribute being requested cannot be known a priori to be a module
or some other type of object.
.. versionadded:: 3.4
.. exception:: IndexError

View File

@ -137,6 +137,9 @@ Some smaller changes made to the core Python language are:
* Unicode database updated to UCD version 6.2.
* Import now raises the new exception :exc:`ModuleNotFoundError` (subclass of
:exc:`ImportError`) when it cannot find something.
New Modules

View File

@ -152,6 +152,7 @@ PyAPI_DATA(PyObject *) PyExc_EOFError;
PyAPI_DATA(PyObject *) PyExc_FloatingPointError;
PyAPI_DATA(PyObject *) PyExc_OSError;
PyAPI_DATA(PyObject *) PyExc_ImportError;
PyAPI_DATA(PyObject *) PyExc_ModuleNotFoundError;
PyAPI_DATA(PyObject *) PyExc_IndexError;
PyAPI_DATA(PyObject *) PyExc_KeyError;
PyAPI_DATA(PyObject *) PyExc_KeyboardInterrupt;

View File

@ -1553,11 +1553,7 @@ def _find_and_load_unlocked(name, import_):
raise ImportError(msg, name=name)
loader = _find_module(name, path)
if loader is None:
exc = ImportError(_ERR_MSG.format(name), name=name)
# TODO(brett): switch to a proper ModuleNotFound exception in Python
# 3.4.
exc._not_found = True
raise exc
raise ModuleNotFoundError(_ERR_MSG.format(name), name=name)
elif name not in sys.modules:
# The parent import may have already imported this module.
loader.load_module(name)
@ -1643,13 +1639,10 @@ def _handle_fromlist(module, fromlist, import_):
from_name = '{}.{}'.format(module.__name__, x)
try:
_call_with_frames_removed(import_, from_name)
except ImportError as exc:
except ModuleNotFoundError as exc:
# Backwards-compatibility dictates we ignore failed
# imports triggered by fromlist for modules that don't
# exist.
# TODO(brett): In Python 3.4, have import raise
# ModuleNotFound and catch that.
if getattr(exc, '_not_found', False):
if exc.name == from_name:
continue
raise

View File

@ -317,7 +317,7 @@ 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 value.name == path:
elif issubclass(exc, ImportError) and value.name == path:
# No such module in the path.
return None
else:

View File

@ -13,6 +13,7 @@ BaseException
+-- BufferError
+-- EOFError
+-- ImportError
+-- ModuleNotFoundError
+-- LookupError
| +-- IndexError
| +-- KeyError

View File

@ -953,8 +953,5 @@ class ImportErrorTests(unittest.TestCase):
self.assertEqual(str(arg), str(exc))
def test_main():
run_unittest(ExceptionTests, ImportErrorTests)
if __name__ == '__main__':
unittest.main()

View File

@ -68,7 +68,15 @@ class ImportTests(unittest.TestCase):
def tearDown(self):
unload(TESTFN)
setUp = tearDown
def test_import_raises_ModuleNotFoundError(self):
with self.assertRaises(ModuleNotFoundError):
import something_that_should_not_exist_anywhere
def test_from_import_raises_ModuleNotFoundError(self):
with self.assertRaises(ModuleNotFoundError):
from something_that_should_not_exist_anywhere import blah
with self.assertRaises(ModuleNotFoundError):
from importlib import something_that_should_not_exist_anywhere
def test_case_sensitivity(self):
# Brief digression to test that import is case-sensitive: if we got
@ -487,7 +495,7 @@ func_filename = func.__code__.co_filename
header = f.read(12)
code = marshal.load(f)
constants = list(code.co_consts)
foreign_code = test_main.__code__
foreign_code = importlib.import_module.__code__
pos = constants.index(1)
constants[pos] = foreign_code
code = type(code)(code.co_argcount, code.co_kwonlyargcount,
@ -1014,16 +1022,5 @@ class ImportTracebackTests(unittest.TestCase):
importlib.SourceLoader.load_module = old_load_module
def test_main(verbose=None):
run_unittest(ImportTests, PycacheTests, FilePermissionTests,
PycRewritingTests, PathsTests, RelativeImportTests,
OverridingImportBuiltinTests,
ImportlibBootstrapTests,
TestSymbolicallyLinkedPackage,
ImportTracebackTests)
if __name__ == '__main__':
# Test needs to be a package, so we can do relative imports.
from test.test_import import test_main
test_main()
unittest.main()

View File

@ -22,6 +22,10 @@ class APITest(unittest.TestCase):
"""Test API-specific details for __import__ (e.g. raising the right
exception when passing in an int for the module name)."""
def test_raises_ModuleNotFoundError(self):
with self.assertRaises(ModuleNotFoundError):
util.import_('some module that does not exist')
def test_name_requires_rparition(self):
# Raise TypeError if a non-string is passed in for the module name.
with self.assertRaises(TypeError):

View File

@ -69,16 +69,16 @@ class HandlingFromlist(unittest.TestCase):
self.assertTrue(hasattr(module, 'module'))
self.assertEqual(module.module.__name__, 'pkg.module')
def test_module_from_package_triggers_ImportError(self):
# If a submodule causes an ImportError because it tries to import
# a module which doesn't exist, that should let the ImportError
def test_module_from_package_triggers_ModuleNotFoundError(self):
# If a submodule causes an ModuleNotFoundError because it tries to import
# a module which doesn't exist, that should let the ModuleNotFoundError
# propagate.
def module_code():
import i_do_not_exist
with util.mock_modules('pkg.__init__', 'pkg.mod',
module_code={'pkg.mod': module_code}) as importer:
with util.import_state(meta_path=[importer]):
with self.assertRaises(ImportError) as exc:
with self.assertRaises(ModuleNotFoundError) as exc:
import_util.import_('pkg', fromlist=['mod'])
self.assertEqual('i_do_not_exist', exc.exception.name)

View File

@ -206,7 +206,7 @@ expected_html_data_docstrings = tuple(s.replace(' ', ' ')
missing_pattern = "no Python documentation found for '%s'"
# output pattern for module with bad imports
badimport_pattern = "problem in %s - ImportError: No module named %r"
badimport_pattern = "problem in %s - ModuleNotFoundError: No module named %r"
def run_pydoc(module_name, *args, **env):
"""

View File

@ -131,7 +131,7 @@ class HelperFunctionsTests(unittest.TestCase):
re.escape(os.path.join(pth_dir, pth_fn)))
# XXX: ditto previous XXX comment.
self.assertRegex(err_out.getvalue(), 'Traceback')
self.assertRegex(err_out.getvalue(), 'ImportError')
self.assertRegex(err_out.getvalue(), 'ModuleNotFoundError')
@unittest.skipIf(sys.platform == "win32", "Windows does not raise an "
"error for file paths containing null characters")

View File

@ -10,6 +10,9 @@ What's New in Python 3.4.0 Alpha 1?
Core and Builtins
-----------------
- Issue #15767: Introduce ModuleNotFoundError which is raised when a module
could not be found.
- Issue #18183: Fix various unicode operations on strings with large unicode
codepoints.

View File

@ -709,6 +709,13 @@ ComplexExtendsException(PyExc_Exception, ImportError,
"Import can't find module, or can't find name in "
"module.");
/*
* ModuleNotFoundError extends ImportError
*/
MiddlingExtendsException(PyExc_ImportError, ModuleNotFoundError, ImportError,
"Module not found.");
/*
* OSError extends Exception
*/
@ -2395,6 +2402,7 @@ _PyExc_Init(PyObject *bltinmod)
PRE_INIT(SystemExit)
PRE_INIT(KeyboardInterrupt)
PRE_INIT(ImportError)
PRE_INIT(ModuleNotFoundError)
PRE_INIT(OSError)
PRE_INIT(EOFError)
PRE_INIT(RuntimeError)
@ -2465,6 +2473,7 @@ _PyExc_Init(PyObject *bltinmod)
POST_INIT(SystemExit)
POST_INIT(KeyboardInterrupt)
POST_INIT(ImportError)
POST_INIT(ModuleNotFoundError)
POST_INIT(OSError)
INIT_ALIAS(EnvironmentError, OSError)
INIT_ALIAS(IOError, OSError)

View File

@ -4588,7 +4588,7 @@ import_from(PyObject *v, PyObject *name)
x = PyObject_GetAttr(v, name);
if (x == NULL && PyErr_ExceptionMatches(PyExc_AttributeError)) {
PyErr_Format(PyExc_ImportError, "cannot import name %S", name);
PyErr_Format(PyExc_ModuleNotFoundError, "cannot import name %S", name);
}
return x;
}

View File

@ -3123,8 +3123,8 @@ const unsigned char _Py_M__importlib[] = {
6,1,15,1,15,1,15,1,6,2,27,1,19,1,114,64,
1,0,0,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,9,0,0,0,27,0,0,0,67,0,0,
0,115,21,2,0,0,100,0,0,125,2,0,124,0,0,106,
0,0,0,0,0,8,0,0,0,27,0,0,0,67,0,0,
0,115,6,2,0,0,100,0,0,125,2,0,124,0,0,106,
0,0,100,1,0,131,1,0,100,2,0,25,125,3,0,124,
3,0,114,178,0,124,3,0,116,1,0,106,2,0,107,7,
0,114,62,0,116,3,0,124,1,0,124,3,0,131,2,0,
@ -3137,50 +3137,49 @@ const unsigned char _Py_M__importlib[] = {
0,124,5,0,100,4,0,124,0,0,131,1,1,130,1,0,
89,113,178,0,88,110,0,0,116,9,0,124,0,0,124,2,
0,131,2,0,125,6,0,124,6,0,100,0,0,107,8,0,
114,250,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,125,7,0,100,5,
0,124,7,0,95,10,0,124,7,0,130,1,0,110,47,0,
124,0,0,116,1,0,106,2,0,107,7,0,114,41,1,124,
6,0,106,11,0,124,0,0,131,1,0,1,116,12,0,100,
6,0,124,0,0,124,6,0,131,3,0,1,110,0,0,116,
1,0,106,2,0,124,0,0,25,125,8,0,124,3,0,114,
105,1,116,1,0,106,2,0,124,3,0,25,125,4,0,116,
13,0,124,4,0,124,0,0,106,0,0,100,1,0,131,1,
0,100,7,0,25,124,8,0,131,3,0,1,110,0,0,116,
14,0,124,8,0,100,8,0,100,0,0,131,3,0,100,0,
0,107,8,0,114,212,1,121,59,0,124,8,0,106,15,0,
124,8,0,95,16,0,116,17,0,124,8,0,100,9,0,131,
2,0,115,187,1,124,8,0,106,16,0,106,0,0,100,1,
0,131,1,0,100,2,0,25,124,8,0,95,16,0,110,0,
0,87,113,212,1,4,116,5,0,107,10,0,114,208,1,1,
1,1,89,113,212,1,88,110,0,0,116,14,0,124,8,0,
100,10,0,100,0,0,131,3,0,100,0,0,107,8,0,114,
17,2,121,13,0,124,6,0,124,8,0,95,18,0,87,113,
17,2,4,116,5,0,107,10,0,114,13,2,1,1,1,89,
113,17,2,88,110,0,0,124,8,0,83,40,11,0,0,0,
78,114,103,0,0,0,114,70,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,114,66,0,0,0,84,117,18,0,0,0,
114,235,0,116,10,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,1,0,106,2,0,107,7,0,114,26,1,
124,6,0,106,11,0,124,0,0,131,1,0,1,116,12,0,
100,5,0,124,0,0,124,6,0,131,3,0,1,110,0,0,
116,1,0,106,2,0,124,0,0,25,125,7,0,124,3,0,
114,90,1,116,1,0,106,2,0,124,3,0,25,125,4,0,
116,13,0,124,4,0,124,0,0,106,0,0,100,1,0,131,
1,0,100,6,0,25,124,7,0,131,3,0,1,110,0,0,
116,14,0,124,7,0,100,7,0,100,0,0,131,3,0,100,
0,0,107,8,0,114,197,1,121,59,0,124,7,0,106,15,
0,124,7,0,95,16,0,116,17,0,124,7,0,100,8,0,
131,2,0,115,172,1,124,7,0,106,16,0,106,0,0,100,
1,0,131,1,0,100,2,0,25,124,7,0,95,16,0,110,
0,0,87,113,197,1,4,116,5,0,107,10,0,114,193,1,
1,1,1,89,113,197,1,88,110,0,0,116,14,0,124,7,
0,100,9,0,100,0,0,131,3,0,100,0,0,107,8,0,
114,2,2,121,13,0,124,6,0,124,7,0,95,18,0,87,
113,2,2,4,116,5,0,107,10,0,114,254,1,1,1,1,
89,113,2,2,88,110,0,0,124,7,0,83,40,10,0,0,
0,78,114,103,0,0,0,114,70,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,114,66,0,0,0,117,18,0,0,0,
105,109,112,111,114,116,32,123,33,114,125,32,35,32,123,33,
114,125,114,102,0,0,0,114,157,0,0,0,114,158,0,0,
0,114,170,0,0,0,40,19,0,0,0,114,32,0,0,0,
114,7,0,0,0,114,145,0,0,0,114,101,0,0,0,114,
158,0,0,0,114,149,0,0,0,244,8,0,0,0,95,69,
82,82,95,77,83,71,114,46,0,0,0,114,156,0,0,0,
114,61,1,0,0,244,10,0,0,0,95,110,111,116,95,102,
111,117,110,100,114,212,0,0,0,114,140,0,0,0,114,60,
0,0,0,114,61,0,0,0,114,56,0,0,0,114,157,0,
0,0,114,59,0,0,0,114,170,0,0,0,40,9,0,0,
0,114,66,0,0,0,244,7,0,0,0,105,109,112,111,114,
116,95,114,35,0,0,0,114,7,1,0,0,116,13,0,0,
0,112,97,114,101,110,116,95,109,111,100,117,108,101,114,188,
0,0,0,114,159,0,0,0,114,247,0,0,0,114,160,0,
0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
0,244,23,0,0,0,95,102,105,110,100,95,97,110,100,95,
108,111,97,100,95,117,110,108,111,99,107,101,100,2,6,0,
0,115,76,0,0,0,0,1,6,1,19,1,6,1,15,1,
16,2,15,1,11,2,13,1,3,1,13,1,13,1,22,1,
26,1,15,1,12,1,27,3,9,1,9,1,15,2,13,1,
114,61,1,0,0,244,19,0,0,0,77,111,100,117,108,101,
78,111,116,70,111,117,110,100,69,114,114,111,114,114,212,0,
0,0,114,140,0,0,0,114,60,0,0,0,114,61,0,0,
0,114,56,0,0,0,114,157,0,0,0,114,59,0,0,0,
114,170,0,0,0,40,8,0,0,0,114,66,0,0,0,244,
7,0,0,0,105,109,112,111,114,116,95,114,35,0,0,0,
114,7,1,0,0,116,13,0,0,0,112,97,114,101,110,116,
95,109,111,100,117,108,101,114,188,0,0,0,114,159,0,0,
0,114,160,0,0,0,114,4,0,0,0,114,4,0,0,0,
114,5,0,0,0,244,23,0,0,0,95,102,105,110,100,95,
97,110,100,95,108,111,97,100,95,117,110,108,111,99,107,101,
100,2,6,0,0,115,72,0,0,0,0,1,6,1,19,1,
6,1,15,1,16,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,24,1,3,1,12,1,
15,1,32,1,13,1,8,2,24,1,3,1,13,1,13,1,
8,1,114,68,1,0,0,99,2,0,0,0,0,0,0,0,
@ -3199,7 +3198,7 @@ const unsigned char _Py_M__importlib[] = {
40,3,0,0,0,114,66,0,0,0,114,67,1,0,0,114,
72,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
0,0,0,244,14,0,0,0,95,102,105,110,100,95,97,110,
100,95,108,111,97,100,52,6,0,0,115,14,0,0,0,0,
100,95,108,111,97,100,48,6,0,0,115,14,0,0,0,0,
2,3,1,16,2,11,1,10,1,3,1,17,2,114,69,1,
0,0,99,3,0,0,0,0,0,0,0,5,0,0,0,4,
0,0,0,67,0,0,0,115,172,0,0,0,116,0,0,124,
@ -3244,350 +3243,348 @@ const unsigned char _Py_M__importlib[] = {
0,0,0,114,98,0,0,0,40,5,0,0,0,114,66,0,
0,0,114,57,1,0,0,114,58,1,0,0,114,160,0,0,
0,114,139,0,0,0,114,4,0,0,0,114,4,0,0,0,
114,5,0,0,0,114,70,1,0,0,65,6,0,0,115,26,
114,5,0,0,0,114,70,1,0,0,61,6,0,0,115,26,
0,0,0,0,9,16,1,12,1,21,1,10,1,15,1,13,
1,13,1,12,1,10,2,15,1,21,1,10,1,114,70,1,
0,0,99,3,0,0,0,0,0,0,0,6,0,0,0,17,
0,0,0,67,0,0,0,115,254,0,0,0,116,0,0,124,
0,0,100,1,0,131,2,0,114,250,0,100,2,0,124,1,
0,0,0,67,0,0,0,115,233,0,0,0,116,0,0,124,
0,0,100,1,0,131,2,0,114,229,0,100,2,0,124,1,
0,107,6,0,114,89,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,
116,0,0,124,0,0,100,3,0,131,2,0,114,89,0,124,
1,0,106,3,0,124,0,0,106,4,0,131,1,0,1,113,
89,0,110,0,0,120,158,0,124,1,0,68,93,147,0,125,
89,0,110,0,0,120,137,0,124,1,0,68,93,126,0,125,
3,0,116,0,0,124,0,0,124,3,0,131,2,0,115,96,
0,100,4,0,106,5,0,124,0,0,106,6,0,124,3,0,
131,2,0,125,4,0,121,17,0,116,7,0,124,2,0,124,
4,0,131,2,0,1,87,113,243,0,4,116,8,0,107,10,
0,114,239,0,1,125,5,0,1,122,50,0,116,9,0,124,
5,0,100,5,0,100,6,0,131,3,0,114,218,0,124,5,
0,106,10,0,124,4,0,107,2,0,114,218,0,119,96,0,
113,218,0,110,0,0,130,0,0,87,89,100,7,0,100,7,
0,125,5,0,126,5,0,88,113,243,0,88,113,96,0,113,
96,0,87,110,0,0,124,0,0,83,40,8,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,114,158,0,0,0,245,1,0,0,0,42,244,7,0,
0,0,95,95,97,108,108,95,95,117,5,0,0,0,123,125,
46,123,125,114,66,1,0,0,70,78,40,11,0,0,0,114,
59,0,0,0,244,4,0,0,0,108,105,115,116,244,6,0,
0,0,114,101,109,111,118,101,114,205,0,0,0,114,72,1,
0,0,114,46,0,0,0,114,56,0,0,0,114,101,0,0,
0,114,156,0,0,0,114,61,0,0,0,114,66,0,0,0,
4,0,131,2,0,1,87,113,222,0,4,116,8,0,107,10,
0,114,218,0,1,125,5,0,1,122,29,0,124,5,0,106,
9,0,124,4,0,107,2,0,114,197,0,119,96,0,110,0,
0,130,0,0,87,89,100,5,0,100,5,0,125,5,0,126,
5,0,88,113,222,0,88,113,96,0,113,96,0,87,110,0,
0,124,0,0,83,40,6,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,114,158,0,
0,0,245,1,0,0,0,42,244,7,0,0,0,95,95,97,
108,108,95,95,117,5,0,0,0,123,125,46,123,125,78,40,
10,0,0,0,114,59,0,0,0,244,4,0,0,0,108,105,
115,116,244,6,0,0,0,114,101,109,111,118,101,114,205,0,
0,0,114,72,1,0,0,114,46,0,0,0,114,56,0,0,
0,114,101,0,0,0,114,66,1,0,0,114,66,0,0,0,
40,6,0,0,0,114,160,0,0,0,244,8,0,0,0,102,
114,111,109,108,105,115,116,114,67,1,0,0,114,16,0,0,
0,116,9,0,0,0,102,114,111,109,95,110,97,109,101,114,
247,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
0,0,0,244,16,0,0,0,95,104,97,110,100,108,101,95,
102,114,111,109,108,105,115,116,89,6,0,0,115,34,0,0,
102,114,111,109,108,105,115,116,85,6,0,0,115,32,0,0,
0,0,10,15,1,12,1,12,1,13,1,15,1,22,1,13,
1,15,1,21,1,3,1,17,1,18,6,18,1,15,1,9,
1,32,1,114,76,1,0,0,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,2,0,107,8,0,114,74,0,124,0,0,
100,3,0,25,125,1,0,100,4,0,124,0,0,107,7,0,
114,74,0,124,1,0,106,1,0,100,5,0,131,1,0,100,
6,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,114,157,0,0,0,78,114,56,0,0,0,114,158,0,0,
0,114,103,0,0,0,114,70,0,0,0,40,2,0,0,0,
114,81,0,0,0,114,32,0,0,0,40,2,0,0,0,244,
7,0,0,0,103,108,111,98,97,108,115,114,57,1,0,0,
1,15,1,21,1,3,1,17,1,18,4,15,1,6,1,32,
1,114,76,1,0,0,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,2,0,107,8,0,114,74,0,124,0,0,100,3,
0,25,125,1,0,100,4,0,124,0,0,107,7,0,114,74,
0,124,1,0,106,1,0,100,5,0,131,1,0,100,6,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,114,
157,0,0,0,78,114,56,0,0,0,114,158,0,0,0,114,
103,0,0,0,114,70,0,0,0,40,2,0,0,0,114,81,
0,0,0,114,32,0,0,0,40,2,0,0,0,244,7,0,
0,0,103,108,111,98,97,108,115,114,57,1,0,0,114,4,
0,0,0,114,4,0,0,0,114,5,0,0,0,244,17,0,
0,0,95,99,97,108,99,95,95,95,112,97,99,107,97,103,
101,95,95,116,6,0,0,115,12,0,0,0,0,7,15,1,
12,1,10,1,12,1,25,1,114,78,1,0,0,99,0,0,
0,0,0,0,0,0,3,0,0,0,3,0,0,0,67,0,
0,0,115,55,0,0,0,116,0,0,116,1,0,106,2,0,
131,0,0,102,2,0,125,0,0,116,3,0,116,4,0,102,
2,0,125,1,0,116,5,0,116,6,0,102,2,0,125,2,
0,124,0,0,124,1,0,124,2,0,103,3,0,83,40,1,
0,0,0,117,111,0,0,0,82,101,116,117,114,110,115,32,
97,32,108,105,115,116,32,111,102,32,102,105,108,101,45,98,
97,115,101,100,32,109,111,100,117,108,101,32,108,111,97,100,
101,114,115,46,10,10,32,32,32,32,69,97,99,104,32,105,
116,101,109,32,105,115,32,97,32,116,117,112,108,101,32,40,
108,111,97,100,101,114,44,32,115,117,102,102,105,120,101,115,
44,32,97,108,108,111,119,95,112,97,99,107,97,103,101,115,
41,46,10,32,32,32,32,40,7,0,0,0,114,9,1,0,
0,114,96,0,0,0,244,18,0,0,0,101,120,116,101,110,
115,105,111,110,95,115,117,102,102,105,120,101,115,114,3,1,
0,0,114,121,0,0,0,114,8,1,0,0,244,17,0,0,
0,66,89,84,69,67,79,68,69,95,83,85,70,70,73,88,
69,83,40,3,0,0,0,116,10,0,0,0,101,120,116,101,
110,115,105,111,110,115,116,6,0,0,0,115,111,117,114,99,
101,116,8,0,0,0,98,121,116,101,99,111,100,101,114,4,
0,0,0,114,4,0,0,0,114,5,0,0,0,114,228,0,
0,0,131,6,0,0,115,8,0,0,0,0,5,18,1,12,
1,12,1,114,228,0,0,0,99,5,0,0,0,0,0,0,
0,9,0,0,0,5,0,0,0,67,0,0,0,115,227,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,54,0,124,1,0,
100,2,0,107,9,0,114,45,0,124,1,0,110,3,0,105,
0,0,125,6,0,116,1,0,124,6,0,131,1,0,125,7,
0,116,0,0,124,0,0,124,7,0,124,4,0,131,3,0,
125,5,0,124,3,0,115,207,0,124,4,0,100,1,0,107,
2,0,114,122,0,116,0,0,124,0,0,106,2,0,100,3,
0,131,1,0,100,1,0,25,131,1,0,83,124,0,0,115,
132,0,124,5,0,83,116,3,0,124,0,0,131,1,0,116,
3,0,124,0,0,106,2,0,100,3,0,131,1,0,100,1,
0,25,131,1,0,24,125,8,0,116,4,0,106,5,0,124,
5,0,106,6,0,100,2,0,116,3,0,124,5,0,106,6,
0,131,1,0,124,8,0,24,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,2,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,114,70,0,0,0,78,114,103,0,0,0,
40,8,0,0,0,114,70,1,0,0,114,78,1,0,0,114,
108,0,0,0,114,31,0,0,0,114,7,0,0,0,114,145,
0,0,0,114,56,0,0,0,114,76,1,0,0,40,9,0,
0,0,114,66,0,0,0,114,77,1,0,0,244,6,0,0,
0,108,111,99,97,108,115,114,75,1,0,0,114,58,1,0,
0,114,160,0,0,0,116,8,0,0,0,103,108,111,98,97,
108,115,95,114,57,1,0,0,116,7,0,0,0,99,117,116,
95,111,102,102,114,4,0,0,0,114,4,0,0,0,114,5,
0,0,0,244,10,0,0,0,95,95,105,109,112,111,114,116,
95,95,142,6,0,0,115,26,0,0,0,0,11,12,1,15,
2,24,1,12,1,18,1,6,3,12,1,23,1,6,1,4,
4,35,3,40,2,114,82,1,0,0,99,2,0,0,0,0,
0,0,0,16,0,0,0,13,0,0,0,67,0,0,0,115,
237,2,0,0,124,1,0,97,0,0,124,0,0,97,1,0,
116,1,0,106,2,0,106,3,0,114,33,0,116,4,0,97,
5,0,110,6,0,116,6,0,97,5,0,116,7,0,116,1,
0,131,1,0,125,2,0,120,128,0,116,1,0,106,8,0,
106,9,0,131,0,0,68,93,111,0,92,2,0,125,3,0,
125,4,0,116,10,0,124,4,0,124,2,0,131,2,0,114,
67,0,116,11,0,124,4,0,100,1,0,100,2,0,131,3,
0,100,2,0,107,8,0,114,178,0,124,3,0,116,1,0,
106,12,0,107,6,0,114,145,0,116,13,0,124,4,0,95,
14,0,113,175,0,116,0,0,106,15,0,124,3,0,131,1,
0,114,175,0,116,16,0,124,4,0,95,14,0,113,175,0,
113,178,0,113,67,0,113,67,0,87,116,1,0,106,8,0,
116,17,0,25,125,5,0,120,76,0,100,27,0,68,93,68,
0,125,6,0,124,6,0,116,1,0,106,8,0,107,7,0,
114,241,0,116,13,0,106,18,0,124,6,0,131,1,0,125,
7,0,110,13,0,116,1,0,106,8,0,124,6,0,25,125,
7,0,116,19,0,124,5,0,124,6,0,124,7,0,131,3,
0,1,113,202,0,87,100,7,0,100,8,0,103,1,0,102,
2,0,100,9,0,100,10,0,100,8,0,103,2,0,102,2,
0,102,2,0,125,8,0,120,149,0,124,8,0,68,93,129,
0,92,2,0,125,9,0,125,10,0,116,20,0,100,11,0,
100,12,0,132,0,0,124,10,0,68,131,1,0,131,1,0,
115,101,1,116,21,0,130,1,0,124,10,0,100,13,0,25,
125,11,0,124,9,0,116,1,0,106,8,0,107,6,0,114,
143,1,116,1,0,106,8,0,124,9,0,25,125,12,0,80,
113,58,1,121,20,0,116,13,0,106,18,0,124,9,0,131,
1,0,125,12,0,80,87,113,58,1,4,116,22,0,107,10,
0,114,186,1,1,1,1,119,58,1,89,113,58,1,88,113,
58,1,87,116,22,0,100,14,0,131,1,0,130,1,0,121,
19,0,116,13,0,106,18,0,100,15,0,131,1,0,125,13,
0,87,110,24,0,4,116,22,0,107,10,0,114,248,1,1,
1,1,100,2,0,125,13,0,89,110,1,0,88,116,13,0,
106,18,0,100,16,0,131,1,0,125,14,0,124,9,0,100,
9,0,107,2,0,114,54,2,116,13,0,106,18,0,100,17,
0,131,1,0,125,15,0,116,19,0,124,5,0,100,18,0,
124,15,0,131,3,0,1,110,0,0,116,19,0,124,5,0,
100,19,0,124,12,0,131,3,0,1,116,19,0,124,5,0,
100,15,0,124,13,0,131,3,0,1,116,19,0,124,5,0,
100,16,0,124,14,0,131,3,0,1,116,19,0,124,5,0,
100,20,0,124,11,0,131,3,0,1,116,19,0,124,5,0,
100,21,0,100,22,0,106,23,0,124,10,0,131,1,0,131,
3,0,1,116,19,0,124,5,0,100,23,0,116,24,0,131,
0,0,131,3,0,1,116,25,0,106,26,0,116,0,0,106,
27,0,131,0,0,131,1,0,1,124,9,0,100,9,0,107,
2,0,114,233,2,116,28,0,106,29,0,100,24,0,131,1,
0,1,100,25,0,116,25,0,107,6,0,114,233,2,100,26,
0,116,30,0,95,31,0,113,233,2,110,0,0,100,2,0,
83,40,28,0,0,0,117,250,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,95,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,114,170,0,0,0,78,114,48,0,0,0,
114,184,0,0,0,244,8,0,0,0,98,117,105,108,116,105,
110,115,114,199,0,0,0,116,5,0,0,0,112,111,115,105,
120,245,1,0,0,0,47,244,2,0,0,0,110,116,245,1,
0,0,0,92,99,1,0,0,0,0,0,0,0,2,0,0,
0,3,0,0,0,115,0,0,0,115,33,0,0,0,124,0,
0,93,23,0,125,1,0,116,0,0,124,1,0,131,1,0,
100,0,0,107,2,0,86,1,113,3,0,100,1,0,83,40,
2,0,0,0,114,29,0,0,0,78,40,1,0,0,0,114,
31,0,0,0,40,2,0,0,0,114,22,0,0,0,114,117,
0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,
0,0,114,151,0,0,0,215,6,0,0,115,2,0,0,0,
6,0,117,25,0,0,0,95,115,101,116,117,112,46,60,108,
111,99,97,108,115,62,46,60,103,101,110,101,120,112,114,62,
114,70,0,0,0,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,114,71,0,0,0,114,94,0,
0,0,116,6,0,0,0,119,105,110,114,101,103,114,219,0,
0,0,114,3,0,0,0,114,25,0,0,0,114,21,0,0,
0,114,30,0,0,0,114,6,0,0,0,117,4,0,0,0,
46,112,121,119,117,6,0,0,0,95,100,46,112,121,100,84,
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,32,0,0,0,114,96,0,0,0,114,7,
0,0,0,114,104,0,0,0,114,105,0,0,0,114,107,0,
0,0,114,80,1,0,0,114,106,0,0,0,114,65,0,0,
0,114,145,0,0,0,244,5,0,0,0,105,116,101,109,115,
114,200,0,0,0,114,61,0,0,0,114,176,0,0,0,114,
207,0,0,0,114,170,0,0,0,114,180,0,0,0,114,216,
0,0,0,114,56,0,0,0,114,212,0,0,0,114,60,0,
0,0,244,3,0,0,0,97,108,108,114,88,0,0,0,114,
156,0,0,0,114,26,0,0,0,114,11,0,0,0,114,12,
1,0,0,114,205,0,0,0,114,79,1,0,0,114,121,0,
0,0,114,164,0,0,0,114,218,0,0,0,114,222,0,0,
0,40,16,0,0,0,244,10,0,0,0,115,121,115,95,109,
111,100,117,108,101,244,11,0,0,0,95,105,109,112,95,109,
111,100,117,108,101,116,11,0,0,0,109,111,100,117,108,101,
95,116,121,112,101,114,66,0,0,0,114,160,0,0,0,116,
11,0,0,0,115,101,108,102,95,109,111,100,117,108,101,116,
12,0,0,0,98,117,105,108,116,105,110,95,110,97,109,101,
116,14,0,0,0,98,117,105,108,116,105,110,95,109,111,100,
117,108,101,116,10,0,0,0,111,115,95,100,101,116,97,105,
108,115,116,10,0,0,0,98,117,105,108,116,105,110,95,111,
115,114,21,0,0,0,114,25,0,0,0,116,9,0,0,0,
111,115,95,109,111,100,117,108,101,116,13,0,0,0,116,104,
114,101,97,100,95,109,111,100,117,108,101,116,14,0,0,0,
119,101,97,107,114,101,102,95,109,111,100,117,108,101,116,13,
0,0,0,119,105,110,114,101,103,95,109,111,100,117,108,101,
114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,244,
17,0,0,0,95,99,97,108,99,95,95,95,112,97,99,107,
97,103,101,95,95,123,6,0,0,115,12,0,0,0,0,7,
15,1,12,1,10,1,12,1,25,1,114,78,1,0,0,99,
0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,
67,0,0,0,115,55,0,0,0,116,0,0,116,1,0,106,
2,0,131,0,0,102,2,0,125,0,0,116,3,0,116,4,
0,102,2,0,125,1,0,116,5,0,116,6,0,102,2,0,
125,2,0,124,0,0,124,1,0,124,2,0,103,3,0,83,
40,1,0,0,0,117,111,0,0,0,82,101,116,117,114,110,
115,32,97,32,108,105,115,116,32,111,102,32,102,105,108,101,
45,98,97,115,101,100,32,109,111,100,117,108,101,32,108,111,
97,100,101,114,115,46,10,10,32,32,32,32,69,97,99,104,
32,105,116,101,109,32,105,115,32,97,32,116,117,112,108,101,
32,40,108,111,97,100,101,114,44,32,115,117,102,102,105,120,
101,115,44,32,97,108,108,111,119,95,112,97,99,107,97,103,
101,115,41,46,10,32,32,32,32,40,7,0,0,0,114,9,
1,0,0,114,96,0,0,0,244,18,0,0,0,101,120,116,
101,110,115,105,111,110,95,115,117,102,102,105,120,101,115,114,
3,1,0,0,114,121,0,0,0,114,8,1,0,0,244,17,
0,0,0,66,89,84,69,67,79,68,69,95,83,85,70,70,
73,88,69,83,40,3,0,0,0,116,10,0,0,0,101,120,
116,101,110,115,105,111,110,115,116,6,0,0,0,115,111,117,
114,99,101,116,8,0,0,0,98,121,116,101,99,111,100,101,
114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,
228,0,0,0,138,6,0,0,115,8,0,0,0,0,5,18,
1,12,1,12,1,114,228,0,0,0,99,5,0,0,0,0,
0,0,0,9,0,0,0,5,0,0,0,67,0,0,0,115,
227,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,54,0,124,
1,0,100,2,0,107,9,0,114,45,0,124,1,0,110,3,
0,105,0,0,125,6,0,116,1,0,124,6,0,131,1,0,
125,7,0,116,0,0,124,0,0,124,7,0,124,4,0,131,
3,0,125,5,0,124,3,0,115,207,0,124,4,0,100,1,
0,107,2,0,114,122,0,116,0,0,124,0,0,106,2,0,
100,3,0,131,1,0,100,1,0,25,131,1,0,83,124,0,
0,115,132,0,124,5,0,83,116,3,0,124,0,0,131,1,
0,116,3,0,124,0,0,106,2,0,100,3,0,131,1,0,
100,1,0,25,131,1,0,24,125,8,0,116,4,0,106,5,
0,124,5,0,106,6,0,100,2,0,116,3,0,124,5,0,
106,6,0,131,1,0,124,8,0,24,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,2,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,114,70,0,0,0,78,114,103,0,
0,0,40,8,0,0,0,114,70,1,0,0,114,78,1,0,
0,114,108,0,0,0,114,31,0,0,0,114,7,0,0,0,
114,145,0,0,0,114,56,0,0,0,114,76,1,0,0,40,
9,0,0,0,114,66,0,0,0,114,77,1,0,0,244,6,
0,0,0,108,111,99,97,108,115,114,75,1,0,0,114,58,
1,0,0,114,160,0,0,0,116,8,0,0,0,103,108,111,
98,97,108,115,95,114,57,1,0,0,116,7,0,0,0,99,
117,116,95,111,102,102,114,4,0,0,0,114,4,0,0,0,
114,5,0,0,0,244,10,0,0,0,95,95,105,109,112,111,
114,116,95,95,149,6,0,0,115,26,0,0,0,0,11,12,
1,15,2,24,1,12,1,18,1,6,3,12,1,23,1,6,
1,4,4,35,3,40,2,114,82,1,0,0,99,2,0,0,
0,0,0,0,0,16,0,0,0,13,0,0,0,67,0,0,
0,115,237,2,0,0,124,1,0,97,0,0,124,0,0,97,
1,0,116,1,0,106,2,0,106,3,0,114,33,0,116,4,
0,97,5,0,110,6,0,116,6,0,97,5,0,116,7,0,
116,1,0,131,1,0,125,2,0,120,128,0,116,1,0,106,
8,0,106,9,0,131,0,0,68,93,111,0,92,2,0,125,
3,0,125,4,0,116,10,0,124,4,0,124,2,0,131,2,
0,114,67,0,116,11,0,124,4,0,100,1,0,100,2,0,
131,3,0,100,2,0,107,8,0,114,178,0,124,3,0,116,
1,0,106,12,0,107,6,0,114,145,0,116,13,0,124,4,
0,95,14,0,113,175,0,116,0,0,106,15,0,124,3,0,
131,1,0,114,175,0,116,16,0,124,4,0,95,14,0,113,
175,0,113,178,0,113,67,0,113,67,0,87,116,1,0,106,
8,0,116,17,0,25,125,5,0,120,76,0,100,27,0,68,
93,68,0,125,6,0,124,6,0,116,1,0,106,8,0,107,
7,0,114,241,0,116,13,0,106,18,0,124,6,0,131,1,
0,125,7,0,110,13,0,116,1,0,106,8,0,124,6,0,
25,125,7,0,116,19,0,124,5,0,124,6,0,124,7,0,
131,3,0,1,113,202,0,87,100,7,0,100,8,0,103,1,
0,102,2,0,100,9,0,100,10,0,100,8,0,103,2,0,
102,2,0,102,2,0,125,8,0,120,149,0,124,8,0,68,
93,129,0,92,2,0,125,9,0,125,10,0,116,20,0,100,
11,0,100,12,0,132,0,0,124,10,0,68,131,1,0,131,
1,0,115,101,1,116,21,0,130,1,0,124,10,0,100,13,
0,25,125,11,0,124,9,0,116,1,0,106,8,0,107,6,
0,114,143,1,116,1,0,106,8,0,124,9,0,25,125,12,
0,80,113,58,1,121,20,0,116,13,0,106,18,0,124,9,
0,131,1,0,125,12,0,80,87,113,58,1,4,116,22,0,
107,10,0,114,186,1,1,1,1,119,58,1,89,113,58,1,
88,113,58,1,87,116,22,0,100,14,0,131,1,0,130,1,
0,121,19,0,116,13,0,106,18,0,100,15,0,131,1,0,
125,13,0,87,110,24,0,4,116,22,0,107,10,0,114,248,
1,1,1,1,100,2,0,125,13,0,89,110,1,0,88,116,
13,0,106,18,0,100,16,0,131,1,0,125,14,0,124,9,
0,100,9,0,107,2,0,114,54,2,116,13,0,106,18,0,
100,17,0,131,1,0,125,15,0,116,19,0,124,5,0,100,
18,0,124,15,0,131,3,0,1,110,0,0,116,19,0,124,
5,0,100,19,0,124,12,0,131,3,0,1,116,19,0,124,
5,0,100,15,0,124,13,0,131,3,0,1,116,19,0,124,
5,0,100,16,0,124,14,0,131,3,0,1,116,19,0,124,
5,0,100,20,0,124,11,0,131,3,0,1,116,19,0,124,
5,0,100,21,0,100,22,0,106,23,0,124,10,0,131,1,
0,131,3,0,1,116,19,0,124,5,0,100,23,0,116,24,
0,131,0,0,131,3,0,1,116,25,0,106,26,0,116,0,
0,106,27,0,131,0,0,131,1,0,1,124,9,0,100,9,
0,107,2,0,114,233,2,116,28,0,106,29,0,100,24,0,
131,1,0,1,100,25,0,116,25,0,107,6,0,114,233,2,
100,26,0,116,30,0,95,31,0,113,233,2,110,0,0,100,
2,0,83,40,28,0,0,0,117,250,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,95,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,114,170,0,0,0,78,114,48,0,
0,0,114,184,0,0,0,244,8,0,0,0,98,117,105,108,
116,105,110,115,114,199,0,0,0,116,5,0,0,0,112,111,
115,105,120,245,1,0,0,0,47,244,2,0,0,0,110,116,
245,1,0,0,0,92,99,1,0,0,0,0,0,0,0,2,
0,0,0,3,0,0,0,115,0,0,0,115,33,0,0,0,
124,0,0,93,23,0,125,1,0,116,0,0,124,1,0,131,
1,0,100,0,0,107,2,0,86,1,113,3,0,100,1,0,
83,40,2,0,0,0,114,29,0,0,0,78,40,1,0,0,
0,114,31,0,0,0,40,2,0,0,0,114,22,0,0,0,
114,117,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
5,0,0,0,114,151,0,0,0,222,6,0,0,115,2,0,
0,0,6,0,117,25,0,0,0,95,115,101,116,117,112,46,
60,108,111,99,97,108,115,62,46,60,103,101,110,101,120,112,
114,62,114,70,0,0,0,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,114,71,0,0,0,114,
94,0,0,0,116,6,0,0,0,119,105,110,114,101,103,114,
219,0,0,0,114,3,0,0,0,114,25,0,0,0,114,21,
0,0,0,114,30,0,0,0,114,6,0,0,0,117,4,0,
0,0,46,112,121,119,117,6,0,0,0,95,100,46,112,121,
100,84,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,32,0,0,0,114,96,0,0,0,
114,7,0,0,0,114,104,0,0,0,114,105,0,0,0,114,
107,0,0,0,114,80,1,0,0,114,106,0,0,0,114,65,
0,0,0,114,145,0,0,0,244,5,0,0,0,105,116,101,
109,115,114,200,0,0,0,114,61,0,0,0,114,176,0,0,
0,114,207,0,0,0,114,170,0,0,0,114,180,0,0,0,
114,216,0,0,0,114,56,0,0,0,114,212,0,0,0,114,
60,0,0,0,244,3,0,0,0,97,108,108,114,88,0,0,
0,114,156,0,0,0,114,26,0,0,0,114,11,0,0,0,
114,12,1,0,0,114,205,0,0,0,114,79,1,0,0,114,
121,0,0,0,114,164,0,0,0,114,218,0,0,0,114,222,
0,0,0,40,16,0,0,0,244,10,0,0,0,115,121,115,
95,109,111,100,117,108,101,244,11,0,0,0,95,105,109,112,
95,109,111,100,117,108,101,116,11,0,0,0,109,111,100,117,
108,101,95,116,121,112,101,114,66,0,0,0,114,160,0,0,
0,116,11,0,0,0,115,101,108,102,95,109,111,100,117,108,
101,116,12,0,0,0,98,117,105,108,116,105,110,95,110,97,
109,101,116,14,0,0,0,98,117,105,108,116,105,110,95,109,
111,100,117,108,101,116,10,0,0,0,111,115,95,100,101,116,
97,105,108,115,116,10,0,0,0,98,117,105,108,116,105,110,
95,111,115,114,21,0,0,0,114,25,0,0,0,116,9,0,
0,0,111,115,95,109,111,100,117,108,101,116,13,0,0,0,
116,104,114,101,97,100,95,109,111,100,117,108,101,116,14,0,
0,0,119,101,97,107,114,101,102,95,109,111,100,117,108,101,
116,13,0,0,0,119,105,110,114,101,103,95,109,111,100,117,
108,101,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
0,244,6,0,0,0,95,115,101,116,117,112,185,6,0,0,
115,102,0,0,0,0,9,6,1,6,2,12,1,9,2,6,
2,12,1,28,1,15,1,24,1,15,1,12,1,15,1,22,
2,13,1,13,1,15,1,18,2,13,1,20,2,33,1,19,
2,31,1,10,1,15,1,13,1,4,2,3,1,15,1,5,
1,13,1,12,2,12,2,3,1,19,1,13,2,11,1,15,
2,12,1,15,1,19,2,16,1,16,1,16,1,16,1,25,
2,19,1,19,1,12,1,13,1,12,1,114,91,1,0,0,
99,2,0,0,0,0,0,0,0,3,0,0,0,3,0,0,
0,67,0,0,0,115,136,0,0,0,116,0,0,124,0,0,
124,1,0,131,2,0,1,116,1,0,131,0,0,125,2,0,
116,2,0,106,3,0,106,4,0,116,5,0,106,6,0,124,
2,0,140,0,0,103,1,0,131,1,0,1,116,2,0,106,
7,0,106,8,0,116,9,0,131,1,0,1,116,2,0,106,
7,0,106,8,0,116,10,0,131,1,0,1,116,11,0,106,
12,0,100,1,0,107,2,0,114,116,0,116,2,0,106,7,
0,106,8,0,116,13,0,131,1,0,1,110,0,0,116,2,
0,106,7,0,106,8,0,116,14,0,131,1,0,1,100,2,
0,83,40,3,0,0,0,117,50,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,114,85,
1,0,0,78,40,15,0,0,0,114,91,1,0,0,114,228,
0,0,0,114,7,0,0,0,114,33,1,0,0,114,205,0,
0,0,114,40,1,0,0,114,54,1,0,0,114,60,1,0,
0,114,164,0,0,0,114,207,0,0,0,114,216,0,0,0,
114,3,0,0,0,114,56,0,0,0,114,218,0,0,0,114,
28,1,0,0,40,3,0,0,0,114,89,1,0,0,114,90,
1,0,0,116,17,0,0,0,115,117,112,112,111,114,116,101,
100,95,108,111,97,100,101,114,115,114,4,0,0,0,114,4,
0,0,0,114,5,0,0,0,244,8,0,0,0,95,105,110,
115,116,97,108,108,5,7,0,0,115,16,0,0,0,0,2,
13,1,9,1,28,1,16,1,16,1,15,1,19,1,114,92,
1,0,0,40,3,0,0,0,117,3,0,0,0,119,105,110,
114,1,0,0,0,114,2,0,0,0,40,80,0,0,0,114,
58,0,0,0,114,10,0,0,0,114,11,0,0,0,114,17,
0,0,0,114,19,0,0,0,114,28,0,0,0,114,38,0,
0,0,114,43,0,0,0,114,44,0,0,0,114,45,0,0,
0,114,54,0,0,0,114,64,0,0,0,114,65,0,0,0,
244,8,0,0,0,95,95,99,111,100,101,95,95,114,201,0,
0,0,114,67,0,0,0,114,91,0,0,0,114,80,0,0,
0,114,87,0,0,0,114,68,0,0,0,114,69,0,0,0,
114,90,0,0,0,114,95,0,0,0,114,98,0,0,0,114,
101,0,0,0,114,15,0,0,0,114,194,0,0,0,114,14,
0,0,0,114,18,0,0,0,116,17,0,0,0,95,82,65,
87,95,77,65,71,73,67,95,78,85,77,66,69,82,114,112,
0,0,0,114,121,0,0,0,114,106,0,0,0,114,107,0,
0,0,114,119,0,0,0,114,122,0,0,0,114,130,0,0,
0,114,132,0,0,0,114,140,0,0,0,114,141,0,0,0,
114,154,0,0,0,114,161,0,0,0,114,165,0,0,0,114,
169,0,0,0,114,172,0,0,0,114,175,0,0,0,114,179,
0,0,0,114,182,0,0,0,114,189,0,0,0,114,198,0,
0,0,114,203,0,0,0,114,206,0,0,0,114,207,0,0,
0,114,216,0,0,0,114,218,0,0,0,114,231,0,0,0,
114,235,0,0,0,114,255,0,0,0,114,3,1,0,0,114,
8,1,0,0,114,12,1,0,0,114,9,1,0,0,114,13,
1,0,0,114,27,1,0,0,114,28,1,0,0,114,40,1,
0,0,114,55,1,0,0,114,59,1,0,0,114,61,1,0,
0,114,64,1,0,0,114,65,1,0,0,114,68,1,0,0,
114,69,1,0,0,114,70,1,0,0,114,76,1,0,0,114,
78,1,0,0,114,228,0,0,0,114,82,1,0,0,114,91,
1,0,0,114,92,1,0,0,114,4,0,0,0,114,4,0,
0,0,114,4,0,0,0,114,5,0,0,0,244,8,0,0,
0,60,109,111,100,117,108,101,62,8,0,0,0,115,146,0,
0,0,6,17,6,3,12,12,12,5,12,5,12,6,12,12,
12,10,12,6,12,7,15,22,12,8,15,3,12,12,6,2,
6,3,22,4,19,68,19,23,12,19,12,20,12,111,22,1,
18,2,6,2,9,2,9,1,9,2,15,27,12,23,12,21,
12,12,18,9,19,44,18,9,12,15,12,11,12,13,12,11,
12,18,12,11,12,11,12,13,21,55,21,12,18,12,19,57,
19,54,19,50,19,41,22,122,19,29,25,43,25,20,6,3,
19,45,19,55,19,19,19,91,19,128,19,13,12,9,12,17,
12,17,6,2,12,50,12,13,18,24,12,34,12,15,12,11,
24,36,12,76,
6,0,0,0,95,115,101,116,117,112,178,6,0,0,115,102,
0,0,0,0,9,6,1,6,2,12,1,9,2,6,2,12,
1,28,1,15,1,24,1,15,1,12,1,15,1,22,2,13,
1,13,1,15,1,18,2,13,1,20,2,33,1,19,2,31,
1,10,1,15,1,13,1,4,2,3,1,15,1,5,1,13,
1,12,2,12,2,3,1,19,1,13,2,11,1,15,2,12,
1,15,1,19,2,16,1,16,1,16,1,16,1,25,2,19,
1,19,1,12,1,13,1,12,1,114,91,1,0,0,99,2,
0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,67,
0,0,0,115,136,0,0,0,116,0,0,124,0,0,124,1,
0,131,2,0,1,116,1,0,131,0,0,125,2,0,116,2,
0,106,3,0,106,4,0,116,5,0,106,6,0,124,2,0,
140,0,0,103,1,0,131,1,0,1,116,2,0,106,7,0,
106,8,0,116,9,0,131,1,0,1,116,2,0,106,7,0,
106,8,0,116,10,0,131,1,0,1,116,11,0,106,12,0,
100,1,0,107,2,0,114,116,0,116,2,0,106,7,0,106,
8,0,116,13,0,131,1,0,1,110,0,0,116,2,0,106,
7,0,106,8,0,116,14,0,131,1,0,1,100,2,0,83,
40,3,0,0,0,117,50,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,114,85,1,0,
0,78,40,15,0,0,0,114,91,1,0,0,114,228,0,0,
0,114,7,0,0,0,114,33,1,0,0,114,205,0,0,0,
114,40,1,0,0,114,54,1,0,0,114,60,1,0,0,114,
164,0,0,0,114,207,0,0,0,114,216,0,0,0,114,3,
0,0,0,114,56,0,0,0,114,218,0,0,0,114,28,1,
0,0,40,3,0,0,0,114,89,1,0,0,114,90,1,0,
0,116,17,0,0,0,115,117,112,112,111,114,116,101,100,95,
108,111,97,100,101,114,115,114,4,0,0,0,114,4,0,0,
0,114,5,0,0,0,244,8,0,0,0,95,105,110,115,116,
97,108,108,254,6,0,0,115,16,0,0,0,0,2,13,1,
9,1,28,1,16,1,16,1,15,1,19,1,114,92,1,0,
0,40,3,0,0,0,117,3,0,0,0,119,105,110,114,1,
0,0,0,114,2,0,0,0,40,80,0,0,0,114,58,0,
0,0,114,10,0,0,0,114,11,0,0,0,114,17,0,0,
0,114,19,0,0,0,114,28,0,0,0,114,38,0,0,0,
114,43,0,0,0,114,44,0,0,0,114,45,0,0,0,114,
54,0,0,0,114,64,0,0,0,114,65,0,0,0,244,8,
0,0,0,95,95,99,111,100,101,95,95,114,201,0,0,0,
114,67,0,0,0,114,91,0,0,0,114,80,0,0,0,114,
87,0,0,0,114,68,0,0,0,114,69,0,0,0,114,90,
0,0,0,114,95,0,0,0,114,98,0,0,0,114,101,0,
0,0,114,15,0,0,0,114,194,0,0,0,114,14,0,0,
0,114,18,0,0,0,116,17,0,0,0,95,82,65,87,95,
77,65,71,73,67,95,78,85,77,66,69,82,114,112,0,0,
0,114,121,0,0,0,114,106,0,0,0,114,107,0,0,0,
114,119,0,0,0,114,122,0,0,0,114,130,0,0,0,114,
132,0,0,0,114,140,0,0,0,114,141,0,0,0,114,154,
0,0,0,114,161,0,0,0,114,165,0,0,0,114,169,0,
0,0,114,172,0,0,0,114,175,0,0,0,114,179,0,0,
0,114,182,0,0,0,114,189,0,0,0,114,198,0,0,0,
114,203,0,0,0,114,206,0,0,0,114,207,0,0,0,114,
216,0,0,0,114,218,0,0,0,114,231,0,0,0,114,235,
0,0,0,114,255,0,0,0,114,3,1,0,0,114,8,1,
0,0,114,12,1,0,0,114,9,1,0,0,114,13,1,0,
0,114,27,1,0,0,114,28,1,0,0,114,40,1,0,0,
114,55,1,0,0,114,59,1,0,0,114,61,1,0,0,114,
64,1,0,0,114,65,1,0,0,114,68,1,0,0,114,69,
1,0,0,114,70,1,0,0,114,76,1,0,0,114,78,1,
0,0,114,228,0,0,0,114,82,1,0,0,114,91,1,0,
0,114,92,1,0,0,114,4,0,0,0,114,4,0,0,0,
114,4,0,0,0,114,5,0,0,0,244,8,0,0,0,60,
109,111,100,117,108,101,62,8,0,0,0,115,146,0,0,0,
6,17,6,3,12,12,12,5,12,5,12,6,12,12,12,10,
12,6,12,7,15,22,12,8,15,3,12,12,6,2,6,3,
22,4,19,68,19,23,12,19,12,20,12,111,22,1,18,2,
6,2,9,2,9,1,9,2,15,27,12,23,12,21,12,12,
18,9,19,44,18,9,12,15,12,11,12,13,12,11,12,18,
12,11,12,11,12,13,21,55,21,12,18,12,19,57,19,54,
19,50,19,41,22,122,19,29,25,43,25,20,6,3,19,45,
19,55,19,19,19,91,19,128,19,13,12,9,12,17,12,17,
6,2,12,46,12,13,18,24,12,31,12,15,12,11,24,36,
12,76,
};