--- /dev/null +++ b/Lib/_ios_support.py @@ -0,0 +1,36 @@ +from ctypes import cdll, c_void_p, c_char_p +from ctypes import util + + +def get_platform_ios(): + objc = cdll.LoadLibrary(util.find_library(b'objc')) + + objc.objc_getClass.restype = c_void_p + objc.objc_getClass.argtypes = [c_char_p] + objc.objc_msgSend.restype = c_void_p + objc.objc_msgSend.argtypes = [c_void_p, c_void_p] + objc.sel_registerName.restype = c_void_p + objc.sel_registerName.argtypes = [c_char_p] + + UIDevice = c_void_p(objc.objc_getClass(b'UIDevice')) + SEL_currentDevice = c_void_p(objc.sel_registerName(b'currentDevice')) + device = c_void_p(objc.objc_msgSend(UIDevice, SEL_currentDevice)) + + SEL_systemVersion = c_void_p(objc.sel_registerName(b'systemVersion')) + systemVersion = c_void_p(objc.objc_msgSend(device, SEL_systemVersion)) + + SEL_systemName = c_void_p(objc.sel_registerName(b'systemName')) + systemName = c_void_p(objc.objc_msgSend(device, SEL_systemName)) + + SEL_model = c_void_p(objc.sel_registerName(b'model')) + systemModel = c_void_p(objc.objc_msgSend(device, SEL_model)) + + # UTF8String returns a const char*; + SEL_UTF8String = c_void_p(objc.sel_registerName(b'UTF8String')) + objc.objc_msgSend.restype = c_char_p + + system = objc.objc_msgSend(systemName, SEL_UTF8String).decode() + release = objc.objc_msgSend(systemVersion, SEL_UTF8String).decode() + model = objc.objc_msgSend(systemModel, SEL_UTF8String).decode() + + return system, release, model diff --git a/Lib/ctypes/util.py b/Lib/ctypes/util.py index 0c2510e161..6c3c43f11d 100644 --- a/Lib/ctypes/util.py +++ b/Lib/ctypes/util.py @@ -67,7 +67,7 @@ return fname return None -elif os.name == "posix" and sys.platform == "darwin": +elif os.name == "posix" and sys.platform in ('darwin', 'ios', 'tvos', 'watchos'): from ctypes.macholib.dyld import dyld_find as _dyld_find def find_library(name): possible = ['lib%s.dylib' % name, diff --git a/Lib/distutils/tests/test_build_ext.py b/Lib/distutils/tests/test_build_ext.py index 808c0dc287..a7a7887f70 100644 --- a/Lib/distutils/tests/test_build_ext.py +++ b/Lib/distutils/tests/test_build_ext.py @@ -15,6 +15,7 @@ import unittest from test import support +from test.support import os_helper, has_subprocess_support from test.support.script_helper import assert_python_ok # http://bugs.python.org/issue4373 @@ -52,6 +53,7 @@ def build_ext(self, *args, **kwargs): return build_ext(*args, **kwargs) + @unittest.skipUnless(has_subprocess_support, "distutils cannot spawn child processes") def test_build_ext(self): cmd = support.missing_compiler_executable() if cmd is not None: @@ -328,6 +330,7 @@ cmd.run() self.assertEqual(cmd.compiler, 'unix') + @unittest.skipUnless(has_subprocess_support, "distutils cannot spawn child processes") def test_get_outputs(self): cmd = support.missing_compiler_executable() if cmd is not None: diff --git a/Lib/distutils/tests/test_build_py.py b/Lib/distutils/tests/test_build_py.py index 0712e92c6a..4c05e8d968 100644 --- a/Lib/distutils/tests/test_build_py.py +++ b/Lib/distutils/tests/test_build_py.py @@ -9,7 +9,7 @@ from distutils.errors import DistutilsFileError from distutils.tests import support -from test.support import run_unittest +from test.support import run_unittest, has_subprocess_support class BuildPyTestCase(support.TempdirManager, @@ -106,6 +106,7 @@ ['boiledeggs.%s.pyc' % sys.implementation.cache_tag]) @unittest.skipIf(sys.dont_write_bytecode, 'byte-compile disabled') + @unittest.skipUnless(has_subprocess_support, "distutils cannot spawn child processes") def test_byte_compile_optimized(self): project_dir, dist = self.create_dist(py_modules=['boiledeggs']) os.chdir(project_dir) diff --git a/Lib/distutils/tests/test_config_cmd.py b/Lib/distutils/tests/test_config_cmd.py index 9aeab07b46..a729c0907b 100644 --- a/Lib/distutils/tests/test_config_cmd.py +++ b/Lib/distutils/tests/test_config_cmd.py @@ -2,7 +2,7 @@ import unittest import os import sys -from test.support import run_unittest, missing_compiler_executable +from test.support import run_unittest, missing_compiler_executable, has_subprocess_support from distutils.command.config import dump_file, config from distutils.tests import support @@ -38,6 +38,7 @@ self.assertEqual(len(self._logs), numlines+1) @unittest.skipIf(sys.platform == 'win32', "can't test on Windows") + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_search_cpp(self): cmd = missing_compiler_executable(['preprocessor']) if cmd is not None: diff --git a/Lib/distutils/tests/test_cygwinccompiler.py b/Lib/distutils/tests/test_cygwinccompiler.py index 9dc869de4c..9a1b18aba9 100644 --- a/Lib/distutils/tests/test_cygwinccompiler.py +++ b/Lib/distutils/tests/test_cygwinccompiler.py @@ -5,11 +5,14 @@ from io import BytesIO from test.support import run_unittest -from distutils import cygwinccompiler -from distutils.cygwinccompiler import (check_config_h, - CONFIG_H_OK, CONFIG_H_NOTOK, - CONFIG_H_UNCERTAIN, get_versions, - get_msvcr) +# Importing cygwinccompiler attempts to import other tools +# that may not exist unless you're on win32. +if sys.platform == 'win32': + from distutils import cygwinccompiler + from distutils.cygwinccompiler import (check_config_h, + CONFIG_H_OK, CONFIG_H_NOTOK, + CONFIG_H_UNCERTAIN, get_versions, + get_msvcr) from distutils.tests import support class FakePopen(object): @@ -25,6 +28,7 @@ self.stdout = os.popen(cmd, 'r') +@unittest.skipUnless(sys.platform == "win32", "These tests are only for win32") class CygwinCCompilerTestCase(support.TempdirManager, unittest.TestCase): diff --git a/Lib/distutils/tests/test_install.py b/Lib/distutils/tests/test_install.py index 51c80e0421..57b50380fd 100644 --- a/Lib/distutils/tests/test_install.py +++ b/Lib/distutils/tests/test_install.py @@ -5,7 +5,7 @@ import unittest import site -from test.support import captured_stdout, run_unittest +from test.support import captured_stdout, run_unittest, has_subprocess_support from distutils import sysconfig from distutils.command.install import install @@ -197,6 +197,7 @@ 'UNKNOWN-0.0.0-py%s.%s.egg-info' % sys.version_info[:2]] self.assertEqual(found, expected) + @unittest.skipUnless(has_subprocess_support, "distutils cannot spawn child processes") def test_record_extensions(self): cmd = test_support.missing_compiler_executable() if cmd is not None: diff --git a/Lib/distutils/tests/test_install_lib.py b/Lib/distutils/tests/test_install_lib.py index fda6315bbc..121664b722 100644 --- a/Lib/distutils/tests/test_install_lib.py +++ b/Lib/distutils/tests/test_install_lib.py @@ -8,7 +8,7 @@ from distutils.extension import Extension from distutils.tests import support from distutils.errors import DistutilsOptionError -from test.support import run_unittest +from test.support import run_unittest, has_subprocess_support class InstallLibTestCase(support.TempdirManager, @@ -35,6 +35,7 @@ self.assertEqual(cmd.optimize, 2) @unittest.skipIf(sys.dont_write_bytecode, 'byte-compile disabled') + @unittest.skipUnless(has_subprocess_support, "distutils cannot spawn child processes") def test_byte_compile(self): project_dir, dist = self.create_dist() os.chdir(project_dir) diff --git a/Lib/distutils/tests/test_spawn.py b/Lib/distutils/tests/test_spawn.py index ad5038142f..62236514e2 100644 --- a/Lib/distutils/tests/test_spawn.py +++ b/Lib/distutils/tests/test_spawn.py @@ -3,7 +3,7 @@ import stat import sys import unittest.mock -from test.support import run_unittest, unix_shell +from test.support import run_unittest, unix_shell, has_subprocess_support from test import support as test_support from distutils.spawn import find_executable @@ -17,6 +17,7 @@ @unittest.skipUnless(os.name in ('nt', 'posix'), 'Runs only under posix or nt') + @unittest.skipUnless(has_subprocess_support, "distutils cannot spawn child processes") def test_spawn(self): tmpdir = self.mkdtemp() diff --git a/Lib/distutils/tests/test_sysconfig.py b/Lib/distutils/tests/test_sysconfig.py index 236755d095..a941290dc1 100644 --- a/Lib/distutils/tests/test_sysconfig.py +++ b/Lib/distutils/tests/test_sysconfig.py @@ -10,7 +10,7 @@ from distutils import sysconfig from distutils.ccompiler import get_default_compiler from distutils.tests import support -from test.support import TESTFN, run_unittest, check_warnings, swap_item +from test.support import TESTFN, run_unittest, check_warnings, swap_item, has_subprocess_support class SysconfigTestCase(support.EnvironGuard, unittest.TestCase): def setUp(self): @@ -244,6 +244,7 @@ self.assertIsNotNone(vars['SO']) self.assertEqual(vars['SO'], vars['EXT_SUFFIX']) + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_customize_compiler_before_get_config_vars(self): # Issue #21923: test that a Distribution compiler # instance can be called without an explicit call to diff --git a/Lib/distutils/tests/test_util.py b/Lib/distutils/tests/test_util.py index bf0d4333f9..8a4ba3666a 100644 --- a/Lib/distutils/tests/test_util.py +++ b/Lib/distutils/tests/test_util.py @@ -3,7 +3,7 @@ import sys import unittest from copy import copy -from test.support import run_unittest +from test.support import run_unittest, has_subprocess_support from unittest import mock from distutils.errors import DistutilsPlatformError, DistutilsByteCompileError @@ -233,6 +233,7 @@ # XXX platforms to be covered: mac + @unittest.skipUnless(has_subprocess_support, "distutils cannot spawn child processes") def test_check_environ(self): util._environ_checked = 0 os.environ.pop('HOME', None) diff --git a/Lib/distutils/unixccompiler.py b/Lib/distutils/unixccompiler.py index d00c48981e..5d12b4779d 100644 --- a/Lib/distutils/unixccompiler.py +++ b/Lib/distutils/unixccompiler.py @@ -270,9 +270,9 @@ static_f = self.library_filename(lib, lib_type='static') if sys.platform == 'darwin': - # On OSX users can specify an alternate SDK using - # '-isysroot', calculate the SDK root if it is specified - # (and use it further on) + # On macOS users can specify an alternate SDK using + # '-isysroot ' or --sysroot=, calculate the SDK root + # if it is specified (and use it further on) # # Note that, as of Xcode 7, Apple SDKs may contain textual stub # libraries with .tbd extensions rather than the normal .dylib @@ -291,12 +291,14 @@ cflags = sysconfig.get_config_var('CFLAGS') m = re.search(r'-isysroot\s*(\S+)', cflags) if m is None: - sysroot = _osx_support._default_sysroot(sysconfig.get_config_var('CC')) + m = re.search(r'--sysroot=(\S+)', cflags) + if m is None: + sysroot = _osx_support._default_sysroot(sysconfig.get_config_var('CC')) + else: + sysroot = m.group(1) else: sysroot = m.group(1) - - for dir in dirs: shared = os.path.join(dir, shared_f) dylib = os.path.join(dir, dylib_f) diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py index f3828b10e1..9eafa5dcaa 100644 --- a/Lib/importlib/_bootstrap_external.py +++ b/Lib/importlib/_bootstrap_external.py @@ -49,7 +49,7 @@ # Bootstrap-related code ###################################################### _CASE_INSENSITIVE_PLATFORMS_STR_KEY = 'win', -_CASE_INSENSITIVE_PLATFORMS_BYTES_KEY = 'cygwin', 'darwin' +_CASE_INSENSITIVE_PLATFORMS_BYTES_KEY = 'cygwin', 'darwin', 'ios', 'tvos', 'watchos' _CASE_INSENSITIVE_PLATFORMS = (_CASE_INSENSITIVE_PLATFORMS_BYTES_KEY + _CASE_INSENSITIVE_PLATFORMS_STR_KEY) @@ -1615,6 +1615,59 @@ return 'FileFinder({!r})'.format(self.path) +class AppleFrameworkLoader(ExtensionFileLoader): + """A loader for modules that have been packaged as Apple Frameworks for + compatibility with Apple's App Store policies. + + For compatibility with the App Store, *all* binary modules must be in .dylibs, + contained in a Framework, in the ``Frameworks`` folder of the packaged app. If + you're trying to run "from foo import _bar", and _bar is implemented with the binary + module "foo/_bar.abi3.dylib" (or any other .dylib extension), this loader will look + for "{sys.executable}/Frameworks/foo__bar.framework/_bar.abi3.dylib" (forming the + package name by taking the full path of the library, and replacing ``/`` with + ``_``). The app packaging tool is responsible for putting the library in this + location. + + However, the ``__file__`` attribute of the _bar module will report as the original + location inside the ``foo`` directory. This so that code that depends on walking + directory trees will continue to work as expected based on the *original* file + location. + """ + def __init__(self, fullname, dylib_file, path): + super().__init__(fullname, dylib_file) + self.parent_paths = path + + def create_module(self, spec): + mod = super().create_module(spec) + if self.parent_paths: + for parent_path in self.parent_paths: + if _path_isdir(parent_path): + mod.__file__ = _path_join(parent_path, _path_split(self.path)[-1]) + continue + return mod + + +class AppleFrameworkFinder: + """A finder for modules that have been packaged as Apple Frameworks + for compatibility with Apple's App Store policies. + + See AppleFrameworkLoader for details. + """ + def __init__(self, path): + self.frameworks_path = path + + def find_spec(self, fullname, path, target=None): + name = fullname.split(".")[-1] + + for extension in EXTENSION_SUFFIXES: + dylib_file = _path_join(self.frameworks_path, f"{fullname}.framework", f"{name}{extension}") + _bootstrap._verbose_message('Looking for Apple Framework dylib {}', dylib_file) + if _path_isfile(dylib_file): + loader = AppleFrameworkLoader(fullname, dylib_file, path) + return _bootstrap.spec_from_loader(fullname, loader) + + return None + # Import setup ############################################################### def _fix_up_module(ns, name, pathname, cpathname=None): @@ -1714,3 +1767,7 @@ supported_loaders = _get_supported_file_loaders() sys.path_hooks.extend([FileFinder.path_hook(*supported_loaders)]) sys.meta_path.append(PathFinder) + if sys.platform in {"ios", "tvos", "watchos"}: + frameworks_folder = _path_join(_path_split(sys.executable)[0], "Frameworks") + _bootstrap._verbose_message('Adding Apple Framework dylib finder at {}', frameworks_folder) + sys.meta_path.append(AppleFrameworkFinder(frameworks_folder)) diff --git a/Lib/platform.py b/Lib/platform.py index d6412e169b..d1532ba89c 100755 --- a/Lib/platform.py +++ b/Lib/platform.py @@ -449,6 +449,25 @@ # If that also doesn't work return the default values return release, versioninfo, machine + +def iOS_ver(): + """Get iOS/tvOS version information, and return it as a + tuple (system, release, model). All tuple entries are strings. + """ + import _ios_support + return _ios_support.get_platform_ios() + +def is_simulator(): + """Determine if the current platform is a device simulator. + Only useful when working with iOS, tvOS or watchOS, because + Apple provides simulator platforms for those devices. + If the platform is actual hardware, returns False. Will also + return False for device *emulators*, which are indistinguishable + from actual devices because they are reproducing actual device + properties. + """ + return getattr(sys.implementation, "_simulator", False) + def _java_getprop(name, default): from java.lang import System @@ -615,7 +634,7 @@ default in case the command should fail. """ - if sys.platform in ('dos', 'win32', 'win16'): + if sys.platform in ('dos', 'win32', 'win16', 'ios', 'tvos', 'watchos'): # XXX Others too ? return default @@ -757,6 +776,24 @@ csid, cpu_number = vms_lib.getsyi('SYI$_CPU', 0) return 'Alpha' if cpu_number >= 128 else 'VAX' + # On iOS, tvOS and watchOS, os.uname returns the architecture + # as uname.machine. On device it doesn't; but there's only + # on CPU architecture on device + def get_ios(): + if getattr(sys.implementation, "_simulator", False): + return os.uname().machine + return 'arm64' + + def get_tvos(): + if getattr(sys.implementation, "_simulator", False): + return os.uname().machine + return 'arm64' + + def get_watchos(): + if getattr(sys.implementation, "_simulator", False): + return os.uname().machine + return 'arm64_32' + def from_subprocess(): """ Fall back to `uname -p` @@ -904,6 +941,15 @@ system = 'Windows' release = 'Vista' + # Normalize responses on Apple mobile platforms + if sys.platform in ('ios', 'tvos'): + system, release, model = iOS_ver() + + # On iOS/tvOS simulators, os.uname() reports the machine as something + # like "arm64" or "x86_64". + if getattr(sys.implementation, "_simulator", False): + machine = f'{model}Simulator' + vals = system, node, release, version, machine # Replace 'unknown' values with the more portable '' _uname_cache = uname_result(*map(_unknown_as_blank, vals)) @@ -1216,11 +1262,14 @@ system, release, version = system_alias(system, release, version) if system == 'Darwin': - # macOS (darwin kernel) - macos_release = mac_ver()[0] - if macos_release: - system = 'macOS' - release = macos_release + # macOS/iOS/tvOS/watchOS (darwin kernel) + if sys.platform in ('ios', 'tvos'): + system, release, _ = iOS_ver() + else: + macos_release = mac_ver()[0] + if macos_release: + system = 'macOS' + release = macos_release if system == 'Windows': # MS platforms diff --git a/Lib/site.py b/Lib/site.py index 9e617afb00..41305298d3 100644 --- a/Lib/site.py +++ b/Lib/site.py @@ -271,6 +271,9 @@ if sys.platform == 'darwin' and sys._framework: return f'{userbase}/lib/python/site-packages' + elif sys.platform in ('ios', 'tvos', 'watchos'): + from sysconfig import get_path + return get_path('purelib', sys.platform) return f'{userbase}/lib/python{version[0]}.{version[1]}/site-packages' diff --git a/Lib/subprocess.py b/Lib/subprocess.py index 8579d3f29e..53384a16f3 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -100,6 +100,8 @@ "CREATE_NO_WINDOW", "DETACHED_PROCESS", "CREATE_DEFAULT_ERROR_MODE", "CREATE_BREAKAWAY_FROM_JOB"]) +# Some platforms do not support processes +_can_fork_exec = sys.platform not in {"ios", "tvos", "watchos"} # Exception classes used by this module. class SubprocessError(Exception): pass @@ -762,6 +764,9 @@ pass_fds=(), *, user=None, group=None, extra_groups=None, encoding=None, errors=None, text=None, umask=-1): """Create new Popen instance.""" + if not _can_fork_exec: + raise RuntimeError(f"Subprocesses are not supported on {sys.platform}") + _cleanup() # Held while anything is calling waitpid before returncode has been # updated to prevent clobbering returncode if wait() or poll() are @@ -1850,7 +1855,7 @@ else: self.returncode = waitstatus_to_exitcode(sts) - def _internal_poll(self, _deadstate=None, _waitpid=os.waitpid, + def _internal_poll(self, _deadstate=None, _waitpid=None, _WNOHANG=os.WNOHANG, _ECHILD=errno.ECHILD): """Check if child process has terminated. Returns returncode attribute. @@ -1859,6 +1864,8 @@ outside of the local scope (nor can any methods it calls). """ + if _waitpid is None: + _waitpid = os.waitpid if self.returncode is None: if not self._waitpid_lock.acquire(False): # Something else is busy calling waitpid. Don't allow two diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py index e3f79bfde5..53a4722bc1 100644 --- a/Lib/sysconfig.py +++ b/Lib/sysconfig.py @@ -84,6 +84,33 @@ 'scripts': '{userbase}/bin', 'data': '{userbase}', }, + 'ios': { + 'stdlib': '{installed_base}/lib/python{py_version_short}', + 'platstdlib': '{installed_base}/lib/python{py_version_short}', + 'purelib': '{installed_base}/lib/python{py_version_short}/site-packages', + 'platlib': '{installed_base}/lib/python{py_version_short}/site-packages', + 'include': '{installed_base}/include', + 'scripts': '{installed_base}/bin', + 'data': '{installed_base}/Resources', + }, + 'tvos': { + 'stdlib': '{installed_base}/lib/python{py_version_short}', + 'platstdlib': '{installed_base}/lib/python{py_version_short}', + 'purelib': '{installed_base}/lib/python{py_version_short}/site-packages', + 'platlib': '{installed_base}/lib/python{py_version_short}/site-packages', + 'include': '{installed_base}/include', + 'scripts': '{installed_base}/bin', + 'data': '{installed_base}/Resources', + }, + 'watchos': { + 'stdlib': '{installed_base}/lib/python{py_version_short}', + 'platstdlib': '{installed_base}/lib/python{py_version_short}', + 'purelib': '{installed_base}/lib/python{py_version_short}/site-packages', + 'platlib': '{installed_base}/lib/python{py_version_short}/site-packages', + 'include': '{installed_base}/include', + 'scripts': '{installed_base}/bin', + 'data': '{installed_base}/Resources', + }, } _SCHEME_KEYS = ('stdlib', 'platstdlib', 'purelib', 'platlib', 'include', @@ -185,6 +212,8 @@ if os.name == 'posix': # the default scheme for posix is posix_prefix return 'posix_prefix' + elif sys.platform in ('ios', 'tvos', 'watchos'): + return sys.platform return os.name @@ -205,6 +234,11 @@ if sys.platform == "darwin" and sys._framework: return joinuser("~", "Library", sys._framework, "%d.%d" % sys.version_info[:2]) + elif sys.platform in ('ios', 'tvos', 'watchos'): + if env_base: + return env_base + else: + return _BASE_PREFIX return joinuser("~", ".local") @@ -688,10 +722,16 @@ if m: release = m.group() elif osname[:6] == "darwin": - import _osx_support - osname, release, machine = _osx_support.get_platform_osx( - get_config_vars(), - osname, release, machine) + if sys.platform in ("ios", "tvos", "watchos"): + import _ios_support + _, release, _ = _ios_support.get_platform_ios() + osname = sys.platform + machine = sys.implementation._multiarch + else: + import _osx_support + osname, release, machine = _osx_support.get_platform_osx( + get_config_vars(), + osname, release, machine) return "%s-%s-%s" % (osname, release, machine) diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index 6dc08135e0..5b268e98bc 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -56,7 +56,7 @@ "check__all__", "skip_if_buggy_ucrt_strfptime", "ignore_warnings", "check_sanitizer", "skip_if_sanitizer", # sys - "is_jython", "is_android", "check_impl_detail", "unix_shell", + "is_jython", "is_android", "is_apple_mobile", "check_impl_detail", "unix_shell", "setswitchinterval", # network "open_urlresource", @@ -743,11 +743,24 @@ is_android = hasattr(sys, 'getandroidapilevel') -if sys.platform != 'win32': +if sys.platform not in ('win32', 'vxworks', 'ios', 'tvos', 'watchos'): unix_shell = '/system/bin/sh' if is_android else '/bin/sh' else: unix_shell = None +# Apple mobile platforms (iOS/tvOS/watchOS) are POSIX-like but do not +# have subprocess or fork support. +is_apple_mobile = sys.platform in ('ios', 'tvos', 'watchos') + +has_fork_support = ( + hasattr(os, "fork") + and not is_apple_mobile +) + +has_subprocess_support = ( + not is_apple_mobile +) + # Filename used for testing if os.name == 'java': # Jython disallows @ in module names @@ -813,8 +826,8 @@ # TESTFN_UNICODE is a non-ascii filename TESTFN_UNICODE = TESTFN_ASCII + "-\xe0\xf2\u0258\u0141\u011f" -if sys.platform == 'darwin': - # In Mac OS X's VFS API file names are, by definition, canonically +if sys.platform in ('darwin', 'ios', 'tvos', 'watchos'): + # In iOS and Mac OS X, VFS API file names are, by definition, canonically # decomposed Unicode, encoded using UTF-8. See QA1173: # http://developer.apple.com/mac/library/qa/qa2001/qa1173.html import unicodedata @@ -840,8 +853,8 @@ 'Unicode filename tests may not be effective' % (TESTFN_UNENCODABLE, TESTFN_ENCODING)) TESTFN_UNENCODABLE = None -# Mac OS X denies unencodable filenames (invalid utf-8) -elif sys.platform != 'darwin': +# Mac OS X and iOS deny unencodable filenames (invalid utf-8) +elif sys.platform not in ('darwin', 'ios', 'tvos', 'watchos'): try: # ascii and utf-8 cannot encode the byte 0xff b'\xff'.decode(TESTFN_ENCODING) diff --git a/Lib/test/support/script_helper.py b/Lib/test/support/script_helper.py index 37e576d4a7..bb458f566b 100644 --- a/Lib/test/support/script_helper.py +++ b/Lib/test/support/script_helper.py @@ -8,15 +8,19 @@ import os.path import subprocess import py_compile +import unittest import zipfile from importlib.util import source_from_cache +from test.support import has_subprocess_support from test.support import make_legacy_pyc # Cached result of the expensive test performed in the function below. __cached_interp_requires_environment = None + +@unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def interpreter_requires_environment(): """ Returns True if our sys.executable interpreter requires environment @@ -136,6 +140,7 @@ rc = proc.returncode return _PythonRunResult(rc, out, err), cmd_line +@unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def _assert_python(expected_success, /, *args, **env_vars): res, cmd_line = run_python_until_end(*args, **env_vars) if (res.rc and expected_success) or (not res.rc and not expected_success): @@ -165,6 +170,8 @@ """ return _assert_python(False, *args, **env_vars) + +@unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def spawn_python(*args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, **kw): """Run a Python subprocess with the given arguments. diff --git a/Lib/test/test_asyncio/test_events.py b/Lib/test/test_asyncio/test_events.py index 72189bfd38..c5a5ce79da 100644 --- a/Lib/test/test_asyncio/test_events.py +++ b/Lib/test/test_asyncio/test_events.py @@ -32,6 +32,7 @@ from asyncio import selector_events from test.test_asyncio import utils as test_utils from test import support +from test.support import is_apple_mobile, has_subprocess_support from test.support import socket_helper from test.support import ALWAYS_EQ, LARGEST, SMALLEST @@ -516,6 +517,7 @@ self._basetest_create_connection(conn_fut) @socket_helper.skip_unless_bind_unix_socket + @unittest.skipIf(is_apple_mobile, "%s doesn't fully support UNIX sockets." % sys.platform) def test_create_unix_connection(self): # Issue #20682: On Mac OS X Tiger, getsockname() returns a # zero-length address for UNIX socket. @@ -608,6 +610,7 @@ self.assertEqual(cm.exception.reason, 'CERTIFICATE_VERIFY_FAILED') @unittest.skipIf(ssl is None, 'No ssl module') + @unittest.skipIf(is_apple_mobile, "%s doesn't fully support UNIX sockets." % sys.platform) def test_create_ssl_connection(self): with test_utils.run_test_server(use_ssl=True) as httpd: create_connection = functools.partial( @@ -619,6 +622,7 @@ @socket_helper.skip_unless_bind_unix_socket @unittest.skipIf(ssl is None, 'No ssl module') + @unittest.skipIf(is_apple_mobile, "%s doesn't fully support UNIX sockets." % sys.platform) def test_create_ssl_unix_connection(self): # Issue #20682: On Mac OS X Tiger, getsockname() returns a # zero-length address for UNIX socket. @@ -842,6 +846,7 @@ return server, path @socket_helper.skip_unless_bind_unix_socket + @unittest.skipIf(is_apple_mobile, "%s doesn't fully support UNIX sockets." % sys.platform) def test_create_unix_server(self): proto = MyProto(loop=self.loop) server, path = self._make_unix_server(lambda: proto) @@ -870,6 +875,7 @@ server.close() @unittest.skipUnless(hasattr(socket, 'AF_UNIX'), 'No UNIX Sockets') + @unittest.skipIf(is_apple_mobile, "%s doesn't fully support UNIX sockets." % sys.platform) def test_create_unix_server_path_socket_error(self): proto = MyProto(loop=self.loop) sock = socket.socket() @@ -935,6 +941,7 @@ @socket_helper.skip_unless_bind_unix_socket @unittest.skipIf(ssl is None, 'No ssl module') + @unittest.skipIf(is_apple_mobile, "%s doesn't fully support UNIX sockets." % sys.platform) def test_create_unix_server_ssl(self): proto = MyProto(loop=self.loop) server, path = self._make_ssl_unix_server( @@ -965,6 +972,7 @@ server.close() @unittest.skipIf(ssl is None, 'No ssl module') + @unittest.skipIf(is_apple_mobile, "%s doesn't fully support UNIX sockets." % sys.platform) def test_create_server_ssl_verify_failed(self): proto = MyProto(loop=self.loop) server, host, port = self._make_ssl_server( @@ -995,6 +1003,7 @@ @socket_helper.skip_unless_bind_unix_socket @unittest.skipIf(ssl is None, 'No ssl module') + @unittest.skipIf(is_apple_mobile, "%s doesn't fully support UNIX sockets." % sys.platform) def test_create_unix_server_ssl_verify_failed(self): proto = MyProto(loop=self.loop) server, path = self._make_ssl_unix_server( @@ -1055,6 +1064,7 @@ @socket_helper.skip_unless_bind_unix_socket @unittest.skipIf(ssl is None, 'No ssl module') + @unittest.skipIf(is_apple_mobile, "%s doesn't fully support UNIX sockets." % sys.platform) def test_create_unix_server_ssl_verified(self): proto = MyProto(loop=self.loop) server, path = self._make_ssl_unix_server( @@ -1714,6 +1724,7 @@ next(it) +@unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') class SubprocessTestsMixin: def check_terminated(self, returncode): diff --git a/Lib/test/test_asyncio/test_streams.py b/Lib/test/test_asyncio/test_streams.py index 38f4d84d47..b6c725937c 100644 --- a/Lib/test/test_asyncio/test_streams.py +++ b/Lib/test/test_asyncio/test_streams.py @@ -17,6 +17,7 @@ import asyncio from test.test_asyncio import utils as test_utils +from test.support import is_apple_mobile, has_subprocess_support def tearDownModule(): @@ -67,6 +68,7 @@ self._basetest_open_connection(conn_fut) @socket_helper.skip_unless_bind_unix_socket + @unittest.skipIf(is_apple_mobile, "%s doesn't fully support UNIX sockets." % sys.platform) def test_open_unix_connection(self): with test_utils.run_test_unix_server() as httpd: conn_fut = asyncio.open_unix_connection(httpd.address, @@ -101,6 +103,7 @@ @socket_helper.skip_unless_bind_unix_socket @unittest.skipIf(ssl is None, 'No ssl module') + @unittest.skipIf(is_apple_mobile, "%s doesn't fully support UNIX sockets." % sys.platform) def test_open_unix_connection_no_loop_ssl(self): with test_utils.run_test_unix_server(use_ssl=True) as httpd: conn_fut = asyncio.open_unix_connection( @@ -131,6 +134,7 @@ self._basetest_open_connection_error(conn_fut) @socket_helper.skip_unless_bind_unix_socket + @unittest.skipIf(is_apple_mobile, "%s doesn't fully support UNIX sockets." % sys.platform) def test_open_unix_connection_error(self): with test_utils.run_test_unix_server() as httpd: conn_fut = asyncio.open_unix_connection(httpd.address, @@ -656,6 +660,7 @@ self.assertEqual(messages, []) @socket_helper.skip_unless_bind_unix_socket + @unittest.skipIf(is_apple_mobile, "%s doesn't fully support UNIX sockets." % sys.platform) def test_start_unix_server(self): class MyServer: @@ -732,6 +737,7 @@ self.assertEqual(messages, []) @unittest.skipIf(sys.platform == 'win32', "Don't have pipes") + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_read_all_from_pipe_reader(self): # See asyncio issue 168. This test is derived from the example # subprocess_attach_read_pipe.py, but we configure the diff --git a/Lib/test/test_asyncio/test_subprocess.py b/Lib/test/test_asyncio/test_subprocess.py index 3f6fc15b27..9d8d43efbe 100644 --- a/Lib/test/test_asyncio/test_subprocess.py +++ b/Lib/test/test_asyncio/test_subprocess.py @@ -10,6 +10,7 @@ from asyncio import subprocess from test.test_asyncio import utils as test_utils from test import support +from test.support import has_subprocess_support if sys.platform != 'win32': from asyncio import unix_events @@ -103,6 +104,7 @@ transport.close() +@unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') class SubprocessMixin: def test_stdin_stdout(self): diff --git a/Lib/test/test_asyncio/test_unix_events.py b/Lib/test/test_asyncio/test_unix_events.py index 70d306ffe8..1b0fcf631e 100644 --- a/Lib/test/test_asyncio/test_unix_events.py +++ b/Lib/test/test_asyncio/test_unix_events.py @@ -15,6 +15,7 @@ import unittest from unittest import mock from test import support +from test.support import is_apple_mobile, has_subprocess_support from test.support import socket_helper if sys.platform == 'win32': @@ -267,6 +268,7 @@ @unittest.skipUnless(hasattr(socket, 'AF_UNIX'), 'UNIX Sockets are not supported') +@unittest.skipIf(is_apple_mobile, "%s doesn't fully support UNIX sockets." % sys.platform) class SelectorEventLoopUnixSocketTests(test_utils.TestCase): def setUp(self): @@ -1134,6 +1136,7 @@ )) +@unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') class ChildWatcherTestsMixin: ignore_warnings = mock.patch.object(log.logger, "warning") diff --git a/Lib/test/test_base64.py b/Lib/test/test_base64.py index 1dbeac41dc..94959a2534 100644 --- a/Lib/test/test_base64.py +++ b/Lib/test/test_base64.py @@ -645,6 +645,7 @@ self.assertTrue(issubclass(binascii.Error, ValueError)) +@unittest.skipUnless(os.allows_subprocesses, 'Test requires support for subprocesses.') class TestMain(unittest.TestCase): def tearDown(self): if os.path.exists(support.TESTFN): diff --git a/Lib/test/test_capi.py b/Lib/test/test_capi.py index 39b1b64651..e6552352e5 100644 --- a/Lib/test/test_capi.py +++ b/Lib/test/test_capi.py @@ -17,6 +17,7 @@ import importlib.util from test import support from test.support import MISSING_C_DOCSTRINGS +from test.support import has_subprocess_support from test.support.script_helper import assert_python_failure, assert_python_ok try: import _posixsubprocess @@ -54,6 +55,7 @@ self.assertEqual(testfunction.attribute, "test") self.assertRaises(AttributeError, setattr, inst.testfunction, "attribute", "test") + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_no_FatalError_infinite_loop(self): with support.SuppressCrashReport(): p = subprocess.Popen([sys.executable, "-c", @@ -720,6 +722,7 @@ self.assertEqual(main_attr_id, subinterp_attr_id) +@unittest.skipUnless(threading, 'Threading required for this test.') class TestThreadState(unittest.TestCase): @support.reap_threads diff --git a/Lib/test/test_cmd_line.py b/Lib/test/test_cmd_line.py index 9fb48c5bac..e2c609e3f2 100644 --- a/Lib/test/test_cmd_line.py +++ b/Lib/test/test_cmd_line.py @@ -9,6 +9,7 @@ import textwrap import unittest from test import support +from test.support import has_subprocess_support from test.support.script_helper import ( spawn_python, kill_python, assert_python_ok, assert_python_failure, interpreter_requires_environment @@ -67,6 +68,7 @@ rc, out, err = assert_python_ok('-vv') self.assertNotIn(b'stack overflow', err) + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') @unittest.skipIf(interpreter_requires_environment(), 'Cannot run -E tests when PYTHON env vars are required.') def test_xoptions(self): @@ -85,6 +87,7 @@ opts = get_xoptions('-Xa', '-Xb=c,d=e') self.assertEqual(opts, {'a': True, 'b': 'c,d=e'}) + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_showrefcount(self): def run_python(*args): # this is similar to assert_python_ok but doesn't strip @@ -169,6 +172,7 @@ # arguments as unicode (using wmain() instead of main()). @unittest.skipIf(sys.platform == 'win32', 'Windows has a native unicode API') + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_undecodable_code(self): undecodable = b"\xff" env = os.environ.copy() @@ -284,6 +288,7 @@ 'False False False\n' 'False False True\n') + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_unbuffered_output(self): # Test expected operation of the '-u' switch for stream in ('stdout', 'stderr'): @@ -342,6 +347,7 @@ # for empty and unset PYTHONPATH self.assertEqual(out1, out2) + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_displayhook_unencodable(self): for encoding in ('ascii', 'latin-1', 'utf-8'): env = os.environ.copy() @@ -360,6 +366,7 @@ escaped = repr(text).encode(encoding, 'backslashreplace') self.assertIn(escaped, data) + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def check_input(self, code, expected): with tempfile.NamedTemporaryFile("wb+") as stdin: sep = os.linesep.encode('ASCII') @@ -435,6 +442,7 @@ @unittest.skipIf(os.name != 'posix', "test needs POSIX semantics") @unittest.skipIf(sys.platform == "vxworks", "test needs preexec support in subprocess.Popen") + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def _test_no_stdio(self, streams): code = """if 1: import os, sys diff --git a/Lib/test/test_concurrent_futures.py b/Lib/test/test_concurrent_futures.py index 2d27a294b1..a091f30929 100644 --- a/Lib/test/test_concurrent_futures.py +++ b/Lib/test/test_concurrent_futures.py @@ -5,7 +5,7 @@ # Skip tests if sem_open implementation is broken. support.skip_if_broken_multiprocessing_synchronize() -from test.support import hashlib_helper +from test.support import hashlib_helper, has_subprocess_support from test.support.script_helper import assert_python_ok import contextlib @@ -151,6 +151,7 @@ executor_type = futures.ThreadPoolExecutor +@unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') class ProcessPoolForkMixin(ExecutorMixin): executor_type = futures.ProcessPoolExecutor ctx = "fork" @@ -161,11 +162,13 @@ return super().get_context() +@unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') class ProcessPoolSpawnMixin(ExecutorMixin): executor_type = futures.ProcessPoolExecutor ctx = "spawn" +@unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') class ProcessPoolForkserverMixin(ExecutorMixin): executor_type = futures.ProcessPoolExecutor ctx = "forkserver" diff --git a/Lib/test/test_doctest.py b/Lib/test/test_doctest.py index dba19103e8..d56399e18a 100644 --- a/Lib/test/test_doctest.py +++ b/Lib/test/test_doctest.py @@ -3,6 +3,7 @@ """ from test import support +from test.support import is_apple_mobile import doctest import functools import os @@ -2838,7 +2839,12 @@ TestResults(failed=1, attempted=1) """ -def test_CLI(): r""" +if is_apple_mobile: + # Mobile platforms can't invoke doctest from the command line, + # so skip this test. + pass +else: + def test_CLI(): r""" The doctest module can be used to run doctests against an arbitrary file. These tests test this CLI functionality. diff --git a/Lib/test/test_eintr.py b/Lib/test/test_eintr.py index a5f8f6465e..e4366a1289 100644 --- a/Lib/test/test_eintr.py +++ b/Lib/test/test_eintr.py @@ -5,10 +5,11 @@ import unittest from test import support -from test.support import script_helper +from test.support import script_helper, has_subprocess_support @unittest.skipUnless(os.name == "posix", "only supported on Unix") +@unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') class EINTRTests(unittest.TestCase): @unittest.skipUnless(hasattr(signal, "setitimer"), "requires setitimer()") diff --git a/Lib/test/test_faulthandler.py b/Lib/test/test_faulthandler.py index 2f8f5eec47..2d4f1456ff 100644 --- a/Lib/test/test_faulthandler.py +++ b/Lib/test/test_faulthandler.py @@ -6,6 +6,7 @@ import subprocess import sys from test import support +from test.support import has_subprocess_support from test.support import script_helper, is_android from test.support import skip_if_sanitizer import tempfile @@ -342,6 +343,7 @@ finally: sys.stderr = orig_stderr + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_disabled_by_default(self): # By default, the module should be disabled code = "import faulthandler; print(faulthandler.is_enabled())" @@ -350,6 +352,7 @@ output = subprocess.check_output(args) self.assertEqual(output.rstrip(), b"False") + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_sys_xoptions(self): # Test python -X faulthandler code = "import faulthandler; print(faulthandler.is_enabled())" @@ -362,6 +365,7 @@ output = subprocess.check_output(args, env=env) self.assertEqual(output.rstrip(), b"True") + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_env_var(self): # empty env var code = "import faulthandler; print(faulthandler.is_enabled())" diff --git a/Lib/test/test_fcntl.py b/Lib/test/test_fcntl.py index 2a3209eb7d..8e2a041f4b 100644 --- a/Lib/test/test_fcntl.py +++ b/Lib/test/test_fcntl.py @@ -7,7 +7,7 @@ import unittest from multiprocessing import Process from test.support import (verbose, TESTFN, unlink, import_module, - cpython_only) + cpython_only, is_apple_mobile) # Skip test if no fcntl module. fcntl = import_module('fcntl') @@ -23,7 +23,7 @@ start_len = "qq" if (sys.platform.startswith(('netbsd', 'freebsd', 'openbsd')) - or sys.platform == 'darwin'): + or sys.platform == 'darwin' or is_apple_mobile): if struct.calcsize('l') == 8: off_t = 'l' pid_t = 'i' diff --git a/Lib/test/test_file_eintr.py b/Lib/test/test_file_eintr.py index f1efd266ff..5a68c60cc2 100644 --- a/Lib/test/test_file_eintr.py +++ b/Lib/test/test_file_eintr.py @@ -15,6 +15,7 @@ import sys import time import unittest +from test.support import has_subprocess_support # Test import all of the things we're about to try testing up front. import _io @@ -69,6 +70,7 @@ self.fail('Error from IO process %s:\nSTDOUT:\n%sSTDERR:\n%s\n' % (why, stdout.decode(), stderr.decode())) + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def _test_reading(self, data_to_write, read_and_verify_code): """Generic buffered read method test harness to validate EINTR behavior. diff --git a/Lib/test/test_gc.py b/Lib/test/test_gc.py index 3313804703..10415ed4b2 100644 --- a/Lib/test/test_gc.py +++ b/Lib/test/test_gc.py @@ -3,7 +3,7 @@ from test.support import (verbose, refcount_test, cpython_only, start_threads, temp_dir, TESTFN, unlink, - import_module) + import_modul, has_subprocess_support) from test.support.script_helper import assert_python_ok, make_script import gc @@ -680,6 +680,8 @@ del x gc.set_debug(%s) """ + + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def run_command(code): p = subprocess.Popen([sys.executable, "-Wd", "-c", code], stdout=subprocess.PIPE, diff --git a/Lib/test/test_gdb.py b/Lib/test/test_gdb.py index b3aa855a5b..3304cb9606 100644 --- a/Lib/test/test_gdb.py +++ b/Lib/test/test_gdb.py @@ -33,6 +33,8 @@ # This is what "no gdb" looks like. There may, however, be other # errors that manifest this way too. raise unittest.SkipTest("Couldn't find gdb on the path") + except RuntimeError: + raise unittest.SkipTest('Test requires support for subprocesses.') # Regex to parse: # 'GNU gdb (GDB; SUSE Linux Enterprise 12) 7.7\n' -> 7.7 diff --git a/Lib/test/test_httpservers.py b/Lib/test/test_httpservers.py index b70a109c27..8a168b4af8 100644 --- a/Lib/test/test_httpservers.py +++ b/Lib/test/test_httpservers.py @@ -30,6 +30,8 @@ import unittest from test import support +from test.support import is_apple_mobile +from test.support import has_subprocess_support class NoLogRequestHandler: @@ -398,7 +400,7 @@ with open(os.path.join(self.tempdir, filename), 'wb') as f: f.write(support.TESTFN_UNDECODABLE) response = self.request(self.base_url + '/') - if sys.platform == 'darwin': + if sys.platform == 'darwin' or is_apple_mobile: # On Mac OS the HFS+ filesystem replaces bytes that aren't valid # UTF-8 into a percent-encoded value. for name in os.listdir(self.tempdir): @@ -665,6 +667,7 @@ @unittest.skipIf(hasattr(os, 'geteuid') and os.geteuid() == 0, "This test can't be run reliably as root (issue #13308).") +@unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') class CGIHTTPServerTestCase(BaseTestCase): class request_handler(NoLogRequestHandler, CGIHTTPRequestHandler): pass diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py index feee861830..5c2863acaf 100644 --- a/Lib/test/test_io.py +++ b/Lib/test/test_io.py @@ -39,7 +39,7 @@ from test import support from test.support.script_helper import ( assert_python_ok, assert_python_failure, run_python_until_end) -from test.support import FakePath, skip_if_sanitizer +from test.support import FakePath, skip_if_sanitizer, is_apple_mobile import codecs import io # C implementation of io @@ -594,7 +594,7 @@ # On Windows and Mac OSX this test consumes large resources; It takes # a long time to build the >2 GiB file and takes >2 GiB of disk space # therefore the resource must be enabled to run this test. - if sys.platform[:3] == 'win' or sys.platform == 'darwin': + if sys.platform[:3] == 'win' or sys.platform == 'darwin' or is_apple_mobile: support.requires( 'largefile', 'test requires %s bytes and a long time to run' % self.LARGE) diff --git a/Lib/test/test_json/test_tool.py b/Lib/test/test_json/test_tool.py index d441bb15a7..1e9ba2f3fe 100644 --- a/Lib/test/test_json/test_tool.py +++ b/Lib/test/test_json/test_tool.py @@ -6,6 +6,7 @@ import subprocess from test import support +from test.support import has_subprocess_support from test.support.script_helper import assert_python_ok @@ -84,6 +85,7 @@ } """) + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_stdin_stdout(self): args = sys.executable, '-m', 'json.tool' process = subprocess.run(args, input=self.data, capture_output=True, text=True, check=True) diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py index 0a9d449078..af9395e33a 100644 --- a/Lib/test/test_logging.py +++ b/Lib/test/test_logging.py @@ -43,6 +43,7 @@ import tempfile from test.support.script_helper import assert_python_ok, assert_python_failure from test import support +from test.support import is_apple_mobile from test.support import socket_helper from test.support.logging_helper import TestHandler import textwrap @@ -1768,9 +1769,20 @@ # just need a name - file can't be present, or we'll get an # 'address already in use' error. os.remove(fn) + # Check the size of the socket file name. If it exceeds 108 + # characters (UNIX_PATH_MAX), it can't be used as a UNIX socket. + # In this case, fall back to a path constructed somewhere that + # is known to be short. + if len(fn) > 108: + fd, fn = tempfile.mkstemp(prefix='test_logging_', suffix='.sock', dir='/tmp') + os.close(fd) + # just need a name - file can't be present, or we'll get an + # 'address already in use' error. + os.remove(fn) return fn @unittest.skipUnless(hasattr(socket, "AF_UNIX"), "Unix sockets required") +@unittest.skipIf(is_apple_mobile, "%s doesn't fully support UNIX sockets." % sys.platform) class UnixSocketHandlerTest(SocketHandlerTest): """Test for SocketHandler with unix sockets.""" @@ -1852,6 +1864,7 @@ self.assertEqual(self.log_output, "spam\neggs\n") @unittest.skipUnless(hasattr(socket, "AF_UNIX"), "Unix sockets required") +@unittest.skipIf(is_apple_mobile, "%s doesn't fully support UNIX sockets." % sys.platform) class UnixDatagramHandlerTest(DatagramHandlerTest): """Test for DatagramHandler using Unix sockets.""" @@ -1936,6 +1949,7 @@ self.assertEqual(self.log_output, b'<11>h\xc3\xa4m-sp\xc3\xa4m') @unittest.skipUnless(hasattr(socket, "AF_UNIX"), "Unix sockets required") +@unittest.skipIf(is_apple_mobile, "%s doesn't fully support UNIX sockets." % sys.platform) class UnixSysLogHandlerTest(SysLogHandlerTest): """Test for SysLogHandler with Unix sockets.""" diff --git a/Lib/test/test_mailcap.py b/Lib/test/test_mailcap.py index 920283d9a2..02322dce95 100644 --- a/Lib/test/test_mailcap.py +++ b/Lib/test/test_mailcap.py @@ -1,8 +1,10 @@ import mailcap import os import copy +import sys import test.support import unittest +from test.support import is_apple_mobile # Location of mailcap file MAILCAPFILE = test.support.findfile("mailcap.txt") @@ -216,7 +218,7 @@ ] self._run_cases(cases) - @unittest.skipUnless(os.name == "posix", "Requires 'test' command on system") + @unittest.skipUnless(os.name == "posix" and not is_apple_mobile, "Requires 'test' command on system") def test_test(self): # findmatch() will automatically check any "test" conditions and skip # the entry if the check fails. diff --git a/Lib/test/test_marshal.py b/Lib/test/test_marshal.py index ace1593999..2fa6603ed3 100644 --- a/Lib/test/test_marshal.py +++ b/Lib/test/test_marshal.py @@ -1,4 +1,5 @@ from test import support +from test.support import is_apple_mobile import array import io import marshal @@ -240,7 +241,10 @@ if os.name == 'nt': MAX_MARSHAL_STACK_DEPTH = 1000 else: - MAX_MARSHAL_STACK_DEPTH = 2000 + if is_apple_mobile: + MAX_MARSHAL_STACK_DEPTH = 1500 + else: + MAX_MARSHAL_STACK_DEPTH = 2000 for i in range(MAX_MARSHAL_STACK_DEPTH - 2): last.append([0]) last = last[-1] diff --git a/Lib/test/test_mmap.py b/Lib/test/test_mmap.py index 5400f25f50..c617345b2e 100644 --- a/Lib/test/test_mmap.py +++ b/Lib/test/test_mmap.py @@ -1,5 +1,5 @@ from test.support import (TESTFN, import_module, unlink, - requires, _2G, _4G, gc_collect, cpython_only) + requires, _2G, _4G, gc_collect, cpython_only, is_apple_mobile) import unittest import os import re @@ -230,7 +230,7 @@ with open(TESTFN, "r+b") as f: self.assertRaises(ValueError, mmap.mmap, f.fileno(), mapsize, access=4) - if os.name == "posix": + if os.name == "posix" and not is_apple_mobile: # Try incompatible flags, prot and access parameters. with open(TESTFN, "r+b") as f: self.assertRaises(ValueError, mmap.mmap, f.fileno(), mapsize, @@ -805,7 +805,7 @@ unlink(TESTFN) def _make_test_file(self, num_zeroes, tail): - if sys.platform[:3] == 'win' or sys.platform == 'darwin': + if sys.platform[:3] == 'win' or sys.platform == 'darwin' or is_apple_mobile: requires('largefile', 'test requires %s bytes and a long time to run' % str(0x180000000)) f = open(TESTFN, 'w+b') diff --git a/Lib/test/test_multiprocessing_fork.py b/Lib/test/test_multiprocessing_fork.py index 5000edb7c5..65a0fb67f9 100644 --- a/Lib/test/test_multiprocessing_fork.py +++ b/Lib/test/test_multiprocessing_fork.py @@ -1,4 +1,9 @@ import unittest +from test.support import has_subprocess_support + +if not has_subprocess_support: + raise unittest.SkipTest('Test requires support for subprocesses.') + import test._test_multiprocessing import sys diff --git a/Lib/test/test_multiprocessing_forkserver.py b/Lib/test/test_multiprocessing_forkserver.py index 6ad5faf9e8..a5285ef77a 100644 --- a/Lib/test/test_multiprocessing_forkserver.py +++ b/Lib/test/test_multiprocessing_forkserver.py @@ -1,4 +1,9 @@ import unittest +from test.support import has_subprocess_support + +if not has_subprocess_support: + raise unittest.SkipTest('Test requires support for subprocesses.') + import test._test_multiprocessing import sys diff --git a/Lib/test/test_multiprocessing_spawn.py b/Lib/test/test_multiprocessing_spawn.py index 6558952308..192096e2ac 100644 --- a/Lib/test/test_multiprocessing_spawn.py +++ b/Lib/test/test_multiprocessing_spawn.py @@ -1,4 +1,9 @@ import unittest +from test.support import has_subprocess_support + +if not has_subprocess_support: + raise unittest.SkipTest('Test requires support for subprocesses.') + import test._test_multiprocessing from test import support diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py index 78dd3151b3..cd6e6cbd83 100644 --- a/Lib/test/test_os.py +++ b/Lib/test/test_os.py @@ -31,6 +31,7 @@ import uuid import warnings from test import support +from test.support import has_subprocess_support from test.support import socket_helper from platform import win32_is_iot @@ -852,6 +853,7 @@ # Bug 1110478 @unittest.skipUnless(unix_shell and os.path.exists(unix_shell), 'requires a shell') + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_update2(self): os.environ.clear() os.environ.update(HELLO="World") @@ -861,6 +863,7 @@ @unittest.skipUnless(unix_shell and os.path.exists(unix_shell), 'requires a shell') + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_os_popen_iter(self): with os.popen("%s -c 'echo \"line1\nline2\nline3\"'" % unix_shell) as popen: @@ -1812,6 +1815,7 @@ @unittest.skipUnless(hasattr(os, 'execv'), "need os.execv()") +@unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') class ExecTests(unittest.TestCase): @unittest.skipIf(USING_LINUXTHREADS, "avoid triggering a linuxthreads bug: see issue #4970") @@ -2133,6 +2137,7 @@ self.assertRaises(OverflowError, os.setreuid, 0, self.UID_OVERFLOW) @unittest.skipUnless(hasattr(os, 'setreuid'), 'test needs os.setreuid()') + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_setreuid_neg1(self): # Needs to accept -1. We run this in a subprocess to avoid # altering the test runner's process state (issue8045). @@ -2141,6 +2146,7 @@ 'import os,sys;os.setreuid(-1,-1);sys.exit(0)']) @unittest.skipUnless(hasattr(os, 'setregid'), 'test needs os.setregid()') + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_setregid(self): if os.getuid() != 0 and not HAVE_WHEEL_GROUP: self.assertRaises(OSError, os.setregid, 0, 0) @@ -2150,6 +2156,7 @@ self.assertRaises(OverflowError, os.setregid, 0, self.GID_OVERFLOW) @unittest.skipUnless(hasattr(os, 'setregid'), 'test needs os.setregid()') + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_setregid_neg1(self): # Needs to accept -1. We run this in a subprocess to avoid # altering the test runner's process state (issue8045). @@ -2822,6 +2829,7 @@ class PidTests(unittest.TestCase): @unittest.skipUnless(hasattr(os, 'getppid'), "test needs os.getppid") + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_getppid(self): p = subprocess.Popen([sys.executable, '-c', 'import os; print(os.getppid())'], @@ -2848,6 +2856,7 @@ self.assertEqual(os.waitstatus_to_exitcode(status), exitcode) self.assertEqual(pid2, pid) + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_waitpid(self): self.check_waitpid(code='pass', exitcode=0) @@ -3517,6 +3526,7 @@ self.assertGreaterEqual(size.columns, 0) self.assertGreaterEqual(size.lines, 0) + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_stty_match(self): """Check if stty returns the same results diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py index 58778300ee..7856be8429 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -14,6 +14,7 @@ from contextlib import ExitStack, redirect_stdout from io import StringIO from test import support +from test.support import has_subprocess_support # This little helper class is essential for testing pdb under doctest. from test.test_doctest import _FakeInput from unittest.mock import patch @@ -1293,6 +1294,7 @@ def tearDown(self): support.unlink(support.TESTFN) + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def _run_pdb(self, pdb_args, commands): self.addCleanup(support.rmtree, '__pycache__') cmd = [sys.executable, '-m', 'pdb'] + pdb_args @@ -1385,6 +1387,7 @@ ('bÅ“r', 1), ) + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_issue7964(self): # open the file as binary so we can force \r\n newline with open(support.TESTFN, 'wb') as f: diff --git a/Lib/test/test_pipes.py b/Lib/test/test_pipes.py index 72e1cabab2..d62b516e5a 100644 --- a/Lib/test/test_pipes.py +++ b/Lib/test/test_pipes.py @@ -1,13 +1,17 @@ import pipes import os import string +import sys import unittest import shutil -from test.support import TESTFN, unlink, reap_children +from test.support import TESTFN, unlink, reap_children, is_apple_mobile if os.name != 'posix': raise unittest.SkipTest('pipes module only works on posix') +if is_apple_mobile: + raise unittest.SkipTest('pipes tests cannot run on %s' % sys.platform) + TESTFN2 = TESTFN + "2" # tr a-z A-Z is not portable, so make the ranges explicit diff --git a/Lib/test/test_platform.py b/Lib/test/test_platform.py index 9f04c79e09..ab2c1e507a 100644 --- a/Lib/test/test_platform.py +++ b/Lib/test/test_platform.py @@ -8,7 +8,7 @@ from unittest import mock from test import support - +from test.support import has_subprocess_support, is_apple_mobile class PlatformTest(unittest.TestCase): def clear_caches(self): @@ -20,6 +20,7 @@ res = platform.architecture() @support.skip_unless_symlink + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_architecture_via_symlink(self): # issue3762 with support.PythonSymlink() as py: cmd = "-c", "import platform; print(platform.architecture())" @@ -254,7 +255,7 @@ def test_mac_ver(self): res = platform.mac_ver() - if platform.uname().system == 'Darwin': + if platform.uname().system == 'Darwin' and not is_apple_mobile: # We are on a macOS system, check that the right version # information is returned output = subprocess.check_output(['sw_vers'], text=True) @@ -286,6 +287,9 @@ else: self.assertEqual(res[2], 'PowerPC') + @unittest.skipUnless(is_apple_mobile, "iOS/tvOS/watchOS only test") + def test_ios_ver(self): + res = platform.ios_ver() @unittest.skipUnless(sys.platform == 'darwin', "OSX only test") def test_mac_ver_with_fork(self): diff --git a/Lib/test/test_poll.py b/Lib/test/test_poll.py index 294131da79..c74979d9a7 100644 --- a/Lib/test/test_poll.py +++ b/Lib/test/test_poll.py @@ -7,7 +7,7 @@ import threading import time import unittest -from test.support import TESTFN, reap_threads, cpython_only +from test.support import TESTFN, reap_threads, cpython_only, has_subprocess_support try: select.poll @@ -117,6 +117,7 @@ # Another test case for poll(). This is copied from the test case for # select(), modified to use poll() instead. + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_poll2(self): cmd = 'for i in 0 1 2 3 4 5 6 7 8 9; do echo testing...; sleep 1; done' proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, diff --git a/Lib/test/test_popen.py b/Lib/test/test_popen.py index ab1bc77655..c5850faddc 100644 --- a/Lib/test/test_popen.py +++ b/Lib/test/test_popen.py @@ -5,6 +5,7 @@ import unittest from test import support +from test.support import has_subprocess_support import os, sys # Test that command-lines get down as we expect. @@ -16,6 +17,7 @@ if ' ' in python: python = '"' + python + '"' # quote embedded space for cmdline +@unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') class PopenTest(unittest.TestCase): def _do_test_commandline(self, cmdline, expected): diff --git a/Lib/test/test_posix.py b/Lib/test/test_posix.py index 3c0ddeb003..b8276216fa 100644 --- a/Lib/test/test_posix.py +++ b/Lib/test/test_posix.py @@ -1,6 +1,8 @@ "Test posix functions" from test import support +from test.support import has_subprocess_support +from test.support import is_apple_mobile from test.support.script_helper import assert_python_ok # Skip these tests if there is no posix module. @@ -61,15 +63,22 @@ # no side-effects which we need to cleanup (e.g., fork, wait, abort) NO_ARG_FUNCTIONS = [ "ctermid", "getcwd", "getcwdb", "uname", "times", "getloadavg", - "getegid", "geteuid", "getgid", "getgroups", + "getegid", "geteuid", "getgid", "getpid", "getpgrp", "getppid", "getuid", "sync", ] + # getgroups can't be invoked on iOS/tvOS/watchOS. + if is_apple_mobile: + NO_ARG_FUNCTIONS.append("getgroups") + for name in NO_ARG_FUNCTIONS: posix_func = getattr(posix, name, None) if posix_func is not None: - posix_func() - self.assertRaises(TypeError, posix_func, 1) + try: + posix_func() + self.assertRaises(TypeError, posix_func, 1) + except Exception as e: + self.fail('Problem invoking %s: %s' % (name, e)) @unittest.skipUnless(hasattr(posix, 'getresuid'), 'test needs posix.getresuid()') @@ -745,9 +754,10 @@ check_stat(uid, gid) self.assertRaises(OSError, chown_func, first_param, 0, -1) check_stat(uid, gid) - if 0 not in os.getgroups(): - self.assertRaises(OSError, chown_func, first_param, -1, 0) - check_stat(uid, gid) + if hasattr(os, 'getgroups') and not is_apple_mobile: + if 0 not in os.getgroups(): + self.assertRaises(OSError, chown_func, first_param, -1, 0) + check_stat(uid, gid) # test illegal types for t in str, float: self.assertRaises(TypeError, chown_func, first_param, t(uid), gid) @@ -1028,8 +1038,8 @@ group = pwd.getpwuid(os.getuid())[3] self.assertIn(group, posix.getgrouplist(user, group)) - @unittest.skipUnless(hasattr(os, 'getegid'), "test needs os.getegid()") + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_getgroups(self): with os.popen('id -G 2>/dev/null') as idg: groups = idg.read().strip() @@ -1088,7 +1098,7 @@ self.assertIsInstance(hi, int) self.assertGreaterEqual(hi, lo) # OSX evidently just returns 15 without checking the argument. - if sys.platform != "darwin": + if sys.platform != 'darwin' and not is_apple_mobile: self.assertRaises(OSError, posix.sched_get_priority_min, -23) self.assertRaises(OSError, posix.sched_get_priority_max, -23) diff --git a/Lib/test/test_pty.py b/Lib/test/test_pty.py index 9c32467cbb..89d266b27e 100644 --- a/Lib/test/test_pty.py +++ b/Lib/test/test_pty.py @@ -1,4 +1,4 @@ -from test.support import verbose, import_module, reap_children +from test.support import verbose, import_module, reap_children, has_subprocess_support # Skip these tests if termios is not available import_module('termios') @@ -138,6 +138,7 @@ # to ignore this signal. os.close(master_fd) + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_fork(self): debug("calling pty.fork()") pid, master_fd = pty.fork() diff --git a/Lib/test/test_quopri.py b/Lib/test/test_quopri.py index 715544c8a9..0641b2fcef 100644 --- a/Lib/test/test_quopri.py +++ b/Lib/test/test_quopri.py @@ -1,4 +1,5 @@ import unittest +from test.support import has_subprocess_support import sys, io, subprocess import quopri @@ -180,6 +181,7 @@ for p, e in self.HSTRINGS: self.assertEqual(quopri.decodestring(e, header=True), p) + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_scriptencode(self): (p, e) = self.STRINGS[-1] process = subprocess.Popen([sys.executable, "-mquopri"], @@ -196,6 +198,7 @@ self.assertEqual(cout[i], e[i]) self.assertEqual(cout, e) + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_scriptdecode(self): (p, e) = self.STRINGS[-1] process = subprocess.Popen([sys.executable, "-mquopri", "-d"], diff --git a/Lib/test/test_script_helper.py b/Lib/test/test_script_helper.py index 4ade2cbc0d..63175fcc13 100644 --- a/Lib/test/test_script_helper.py +++ b/Lib/test/test_script_helper.py @@ -3,7 +3,7 @@ import subprocess import sys import os -from test.support import script_helper +from test.support import script_helper, has_subprocess_support import unittest from unittest import mock @@ -35,6 +35,7 @@ self.assertIn('import sys; sys.exit(0)', error_msg, msg='unexpected command line.') + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') @mock.patch('subprocess.Popen') def test_assert_python_isolated_when_env_not_required(self, mock_popen): with mock.patch.object(script_helper, @@ -53,6 +54,7 @@ self.assertIn('-I', popen_command) self.assertNotIn('-E', popen_command) # -I overrides this + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') @mock.patch('subprocess.Popen') def test_assert_python_not_isolated_when_env_is_required(self, mock_popen): """Ensure that -I is not passed when the environment is required.""" @@ -82,6 +84,7 @@ # Reset the private cached state. script_helper.__dict__['__cached_interp_requires_environment'] = None + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') @mock.patch('subprocess.check_call') def test_interpreter_requires_environment_true(self, mock_check_call): with mock.patch.dict(os.environ): @@ -91,6 +94,7 @@ self.assertTrue(script_helper.interpreter_requires_environment()) self.assertEqual(1, mock_check_call.call_count) + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') @mock.patch('subprocess.check_call') def test_interpreter_requires_environment_false(self, mock_check_call): with mock.patch.dict(os.environ): @@ -100,6 +104,7 @@ self.assertFalse(script_helper.interpreter_requires_environment()) self.assertEqual(1, mock_check_call.call_count) + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') @mock.patch('subprocess.check_call') def test_interpreter_requires_environment_details(self, mock_check_call): with mock.patch.dict(os.environ): diff --git a/Lib/test/test_select.py b/Lib/test/test_select.py index 458998a62f..607c533e12 100644 --- a/Lib/test/test_select.py +++ b/Lib/test/test_select.py @@ -4,6 +4,7 @@ import sys import unittest from test import support +from test.support import has_subprocess_support @unittest.skipIf((sys.platform[:3]=='win'), "can't easily test on this system") @@ -44,6 +45,7 @@ self.assertIsNot(r, x) self.assertIsNot(w, x) + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_select(self): cmd = 'for i in 0 1 2 3 4 5 6 7 8 9; do echo testing...; sleep 1; done' with os.popen(cmd) as p: diff --git a/Lib/test/test_shutil.py b/Lib/test/test_shutil.py index 9041e7aa36..dddf0b9de8 100644 --- a/Lib/test/test_shutil.py +++ b/Lib/test/test_shutil.py @@ -30,8 +30,7 @@ posix = None from test import support -from test.support import TESTFN, FakePath -from test.support import warnings_helper +from test.support import TESTFN, FakePath, has_subprocess_support, warnings_helper TESTFN2 = TESTFN + "2" TESTFN_SRC = TESTFN + "_SRC" @@ -1745,6 +1744,7 @@ check_chown(dirname, uid, gid) +@unittest.skipIf(support.has_subprocess_support, 'Test requires support for subprocesses.') class TestWhich(BaseTest, unittest.TestCase): def setUp(self): @@ -2612,6 +2612,7 @@ self.assertGreaterEqual(size.lines, 0) @unittest.skipUnless(os.isatty(sys.__stdout__.fileno()), "not on tty") + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') @unittest.skipUnless(hasattr(os, 'get_terminal_size'), 'need os.get_terminal_size()') def test_stty_match(self): diff --git a/Lib/test/test_site.py b/Lib/test/test_site.py index 3d25d7e473..4ea33b64c9 100644 --- a/Lib/test/test_site.py +++ b/Lib/test/test_site.py @@ -7,6 +7,7 @@ import unittest import test.support from test import support +from test.support import has_subprocess_support from test.support import socket_helper from test.support import (captured_stderr, TESTFN, EnvironmentVarGuard, change_cwd) @@ -200,6 +201,7 @@ @unittest.skipUnless(site.ENABLE_USER_SITE, "requires access to PEP 370 " "user-site (site.ENABLE_USER_SITE)") + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_s_option(self): # (ncoghlan) Change this to use script_helper... usersite = site.USER_SITE @@ -474,6 +476,7 @@ class StartupImportTests(unittest.TestCase): + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_startup_imports(self): # Get sys.path in isolated mode (python3 -I) popen = subprocess.Popen([sys.executable, '-I', '-c', diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py index 127d61cb6a..c182b83edc 100755 --- a/Lib/test/test_socket.py +++ b/Lib/test/test_socket.py @@ -1,5 +1,6 @@ import unittest from test import support +from test.support import is_apple_mobile from test.support import socket_helper import errno @@ -1143,7 +1144,7 @@ # I've ordered this by protocols that have both a tcp and udp # protocol, at least for modern Linuxes. if (sys.platform.startswith(('freebsd', 'netbsd', 'gnukfreebsd')) - or sys.platform in ('linux', 'darwin')): + or sys.platform in ('linux', 'darwin') or is_apple_mobile): # avoid the 'echo' service on this platform, as there is an # assumption breaking non-standard port/protocol entry services = ('daytime', 'qotd', 'domain') @@ -3496,7 +3497,7 @@ def _testFDPassCMSG_LEN(self): self.createAndSendFDs(1) - @unittest.skipIf(sys.platform == "darwin", "skipping, see issue #12958") + @unittest.skipIf(sys.platform == "darwin" or is_apple_mobile, "skipping, see issue #12958") @unittest.skipIf(AIX, "skipping, see issue #22397") @requireAttrs(socket, "CMSG_SPACE") def testFDPassSeparate(self): @@ -3507,7 +3508,7 @@ maxcmsgs=2) @testFDPassSeparate.client_skip - @unittest.skipIf(sys.platform == "darwin", "skipping, see issue #12958") + @unittest.skipIf(sys.platform == "darwin" or is_apple_mobile, "skipping, see issue #12958") @unittest.skipIf(AIX, "skipping, see issue #22397") def _testFDPassSeparate(self): fd0, fd1 = self.newFDs(2) @@ -3520,7 +3521,7 @@ array.array("i", [fd1]))]), len(MSG)) - @unittest.skipIf(sys.platform == "darwin", "skipping, see issue #12958") + @unittest.skipIf(sys.platform == "darwin" or is_apple_mobile, "skipping, see issue #12958") @unittest.skipIf(AIX, "skipping, see issue #22397") @requireAttrs(socket, "CMSG_SPACE") def testFDPassSeparateMinSpace(self): @@ -3534,7 +3535,7 @@ maxcmsgs=2, ignoreflags=socket.MSG_CTRUNC) @testFDPassSeparateMinSpace.client_skip - @unittest.skipIf(sys.platform == "darwin", "skipping, see issue #12958") + @unittest.skipIf(sys.platform == "darwin" or is_apple_mobile, "skipping, see issue #12958") @unittest.skipIf(AIX, "skipping, see issue #22397") def _testFDPassSeparateMinSpace(self): fd0, fd1 = self.newFDs(2) @@ -3558,7 +3559,7 @@ nbytes = self.sendmsgToServer([msg]) self.assertEqual(nbytes, len(msg)) - @unittest.skipIf(sys.platform == "darwin", "see issue #24725") + @unittest.skipIf(sys.platform == "darwin" or is_apple_mobile, "skipping, see issue #12958") def testFDPassEmpty(self): # Try to pass an empty FD array. Can receive either no array # or an empty array. @@ -4378,28 +4379,33 @@ pass @requireAttrs(socket.socket, "sendmsg") +@unittest.skipIf(is_apple_mobile, "%s doesn't fully support UNIX sockets." % sys.platform) @requireAttrs(socket, "AF_UNIX") class SendmsgUnixStreamTest(SendmsgStreamTests, SendrecvmsgUnixStreamTestBase): pass @requireAttrs(socket.socket, "recvmsg") +@unittest.skipIf(is_apple_mobile, "%s doesn't fully support UNIX sockets." % sys.platform) @requireAttrs(socket, "AF_UNIX") class RecvmsgUnixStreamTest(RecvmsgTests, RecvmsgGenericStreamTests, SendrecvmsgUnixStreamTestBase): pass @requireAttrs(socket.socket, "recvmsg_into") +@unittest.skipIf(is_apple_mobile, "%s doesn't fully support UNIX sockets." % sys.platform) @requireAttrs(socket, "AF_UNIX") class RecvmsgIntoUnixStreamTest(RecvmsgIntoTests, RecvmsgGenericStreamTests, SendrecvmsgUnixStreamTestBase): pass @requireAttrs(socket.socket, "sendmsg", "recvmsg") +@unittest.skipIf(is_apple_mobile, "%s doesn't fully support UNIX sockets." % sys.platform) @requireAttrs(socket, "AF_UNIX", "SOL_SOCKET", "SCM_RIGHTS") class RecvmsgSCMRightsStreamTest(SCMRightsTest, SendrecvmsgUnixStreamTestBase): pass @requireAttrs(socket.socket, "sendmsg", "recvmsg_into") +@unittest.skipIf(is_apple_mobile, "%s doesn't fully support UNIX sockets." % sys.platform) @requireAttrs(socket, "AF_UNIX", "SOL_SOCKET", "SCM_RIGHTS") class RecvmsgIntoSCMRightsStreamTest(RecvmsgIntoMixin, SCMRightsTest, SendrecvmsgUnixStreamTestBase): diff --git a/Lib/test/test_socketserver.py b/Lib/test/test_socketserver.py index c9455adfd8..a06d325d1e 100644 --- a/Lib/test/test_socketserver.py +++ b/Lib/test/test_socketserver.py @@ -8,13 +8,14 @@ import select import signal import socket +import sys import tempfile import threading import unittest import socketserver import test.support -from test.support import reap_children, reap_threads, verbose +from test.support import reap_children, reap_threads, verbose, has_subprocess_support, is_apple_mobile from test.support import socket_helper @@ -26,7 +27,7 @@ HAVE_UNIX_SOCKETS = hasattr(socket, "AF_UNIX") requires_unix_sockets = unittest.skipUnless(HAVE_UNIX_SOCKETS, 'requires Unix sockets') -HAVE_FORKING = hasattr(os, "fork") +HAVE_FORKING = hasattr(os, "fork") and has_subprocess_support requires_forking = unittest.skipUnless(HAVE_FORKING, 'requires forking') def signal_alarm(n): @@ -194,12 +195,14 @@ self.stream_examine) @requires_unix_sockets + @unittest.skipIf(is_apple_mobile, "%s doesn't fully support UNIX sockets." % sys.platform) def test_UnixStreamServer(self): self.run_server(socketserver.UnixStreamServer, socketserver.StreamRequestHandler, self.stream_examine) @requires_unix_sockets + @unittest.skipIf(is_apple_mobile, "%s doesn't fully support UNIX sockets." % sys.platform) def test_ThreadingUnixStreamServer(self): self.run_server(socketserver.ThreadingUnixStreamServer, socketserver.StreamRequestHandler, diff --git a/Lib/test/test_source_encoding.py b/Lib/test/test_source_encoding.py index 5ca43461d9..2841c401a5 100644 --- a/Lib/test/test_source_encoding.py +++ b/Lib/test/test_source_encoding.py @@ -1,7 +1,7 @@ # -*- coding: koi8-r -*- import unittest -from test.support import TESTFN, unlink, unload, rmtree, script_helper, captured_stdout +from test.support import TESTFN, unlink, unload, rmtree, script_helper, captured_stdout, has_subprocess_support import importlib import os import sys @@ -12,11 +12,11 @@ def test_pep263(self): self.assertEqual( - "ðÉÔÏÎ".encode("utf-8"), + "�����".encode("utf-8"), b'\xd0\x9f\xd0\xb8\xd1\x82\xd0\xbe\xd0\xbd' ) self.assertEqual( - "\ð".encode("utf-8"), + "\�".encode("utf-8"), b'\\\xd0\x9f' ) @@ -63,6 +63,7 @@ # two bytes in common with the UTF-8 BOM self.assertRaises(SyntaxError, eval, b'\xef\xbb\x20') + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_20731(self): sub = subprocess.Popen([sys.executable, os.path.join(os.path.dirname(__file__), diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py index f93fbe9264..a917f229cf 100644 --- a/Lib/test/test_subprocess.py +++ b/Lib/test/test_subprocess.py @@ -21,6 +21,7 @@ import textwrap import json import pathlib +from test.support import has_subprocess_support from test.support import FakePath try: @@ -42,6 +43,9 @@ mswindows = (sys.platform == "win32") +if not has_subprocess_support: + raise unittest.SkipTest('Test requires support for subprocesses.') + # # Depends on the following external programs: Python # diff --git a/Lib/test/test_sundry.py b/Lib/test/test_sundry.py index 2accad1aee..4824b6c8d0 100644 --- a/Lib/test/test_sundry.py +++ b/Lib/test/test_sundry.py @@ -20,7 +20,8 @@ import distutils.bcppcompiler import distutils.ccompiler - import distutils.cygwinccompiler + if sys.platform.startswith('win'): + import distutils.cygwinccompiler import distutils.filelist import distutils.text_file import distutils.unixccompiler diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py index ef32424eab..22a8914261 100644 --- a/Lib/test/test_sys.py +++ b/Lib/test/test_sys.py @@ -11,6 +11,7 @@ import sys import sysconfig import test.support +from test.support import has_subprocess_support import textwrap import unittest import warnings @@ -558,6 +559,7 @@ def test_clear_type_cache(self): sys._clear_type_cache() + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_ioencoding(self): env = dict(os.environ) @@ -605,6 +607,7 @@ 'requires OS support of non-ASCII encodings') @unittest.skipUnless(sys.getfilesystemencoding() == locale.getpreferredencoding(False), 'requires FS encoding to match locale') + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_ioencoding_nonascii(self): env = dict(os.environ) @@ -617,6 +620,7 @@ @unittest.skipIf(sys.base_prefix != sys.prefix, 'Test is not venv-compatible') + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_executable(self): # sys.executable should be absolute self.assertEqual(os.path.abspath(sys.executable), sys.executable) @@ -651,6 +655,7 @@ expected = None self.check_fsencoding(fs_encoding, expected) + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def c_locale_get_error_handler(self, locale, isolated=False, encoding=None): # Force the POSIX locale env = os.environ.copy() diff --git a/Lib/test/test_sysconfig.py b/Lib/test/test_sysconfig.py index 0ca5c9390d..eca8dad7c7 100644 --- a/Lib/test/test_sysconfig.py +++ b/Lib/test/test_sysconfig.py @@ -7,7 +7,7 @@ from test.support import (import_module, TESTFN, unlink, check_warnings, captured_stdout, skip_unless_symlink, change_cwd, - PythonSymlink) + PythonSymlink, has_subprocess_support) import sysconfig from sysconfig import (get_paths, get_platform, get_config_vars, @@ -229,10 +229,12 @@ def test_get_scheme_names(self): wanted = ('nt', 'nt_user', 'osx_framework_user', - 'posix_home', 'posix_prefix', 'posix_user') + 'posix_home', 'posix_prefix', 'posix_user', + 'tvos', 'watchos') self.assertEqual(get_scheme_names(), wanted) @skip_unless_symlink + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_symlink(self): # Issue 7880 with PythonSymlink() as py: cmd = "-c", "import sysconfig; print(sysconfig.get_platform())" diff --git a/Lib/test/test_tempfile.py b/Lib/test/test_tempfile.py index 8ad1bb98e8..eedc7fcf21 100644 --- a/Lib/test/test_tempfile.py +++ b/Lib/test/test_tempfile.py @@ -15,11 +15,12 @@ import unittest from test import support +from test_support import has_subprocess_support from test.support import script_helper has_textmode = (tempfile._text_openflags != tempfile._bin_openflags) -has_spawnl = hasattr(os, 'spawnl') +has_spawnl = hasattr(os, 'spawnl') and has_subprocess_support # TEST_FILES may need to be tweaked for systems depending on the maximum # number of files that can be opened at one time (see ulimit -n) diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py index af480b9014..a088feb7e9 100644 --- a/Lib/test/test_threading.py +++ b/Lib/test/test_threading.py @@ -3,7 +3,7 @@ """ import test.support -from test.support import verbose, import_module, cpython_only, unlink +from test.support import verbose, import_module, cpython_only, unlink, is_apple_mobile from test.support.script_helper import assert_python_ok, assert_python_failure import random @@ -1028,6 +1028,7 @@ os.set_blocking(r, False) return (r, w) + @unittest.skipIf(is_apple_mobile, "%s doesn't have os.pipe" % sys.platform) def test_threads_join(self): # Non-daemon threads should be joined at subinterpreter shutdown # (issue #18808) @@ -1056,6 +1057,7 @@ # The thread was joined properly. self.assertEqual(os.read(r, 1), b"x") + @unittest.skipIf(is_apple_mobile, "%s doesn't have os.pipe" % sys.platform) def test_threads_join_2(self): # Same as above, but a delay gets introduced after the thread's # Python code returned but before the thread state is deleted. diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py index c0b3388b2d..68ffd3d669 100644 --- a/Lib/test/test_traceback.py +++ b/Lib/test/test_traceback.py @@ -7,7 +7,7 @@ import unittest import re from test import support -from test.support import TESTFN, Error, captured_output, unlink, cpython_only, ALWAYS_EQ +from test.support import TESTFN, Error, captured_output, unlink, cpython_only, ALWAYS_EQ, has_subprocess_support from test.support.script_helper import assert_python_ok import textwrap @@ -142,6 +142,7 @@ str_name = '.'.join([X.__module__, X.__qualname__]) self.assertEqual(err[0], "%s: %s\n" % (str_name, str_value)) + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_encoded_file(self): # Test that tracebacks are correctly printed for encoded source files: # - correct line number (Issue2384) diff --git a/Lib/test/test_unicodedata.py b/Lib/test/test_unicodedata.py index edfd860fd5..e3bc801a8f 100644 --- a/Lib/test/test_unicodedata.py +++ b/Lib/test/test_unicodedata.py @@ -11,7 +11,7 @@ import sys import unicodedata import unittest -from test.support import open_urlresource, requires_resource, script_helper +from test.support import open_urlresource, requires_resource, script_helper, has_subprocess_support class UnicodeMethodsTest(unittest.TestCase): @@ -225,6 +225,7 @@ class UnicodeMiscTest(UnicodeDatabaseTest): + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_failed_import_during_compiling(self): # Issue 4367 # Decoding \N escapes requires the unicodedata module. If it can't be diff --git a/Lib/test/test_urllib2net.py b/Lib/test/test_urllib2net.py index ba4c500e8e..1534b59cef 100644 --- a/Lib/test/test_urllib2net.py +++ b/Lib/test/test_urllib2net.py @@ -8,6 +8,10 @@ import urllib.error import urllib.request import sys +try: + import ssl +except ImportError: + ssl = None support.requires("network") @@ -158,6 +162,7 @@ ## self._test_urls(urls, self._extra_handlers()+[bauth, dauth]) + @unittest.skipIf(ssl is None, 'test requires ssl module') def test_urlwithfrag(self): urlwith_frag = "http://www.pythontest.net/index.html#frag" with socket_helper.transient_internet(urlwith_frag): @@ -166,6 +171,7 @@ self.assertEqual(res.geturl(), "http://www.pythontest.net/index.html#frag") + @unittest.skipIf(ssl is None, 'test requires ssl module') def test_redirect_url_withfrag(self): redirect_url_with_frag = "http://www.pythontest.net/redir/with_frag/" with socket_helper.transient_internet(redirect_url_with_frag): diff --git a/Lib/test/test_uuid.py b/Lib/test/test_uuid.py index b1c92427dd..925a1f0354 100644 --- a/Lib/test/test_uuid.py +++ b/Lib/test/test_uuid.py @@ -1,5 +1,6 @@ import unittest from test import support +from test.support import has_subprocess_support import builtins import contextlib import copy @@ -639,6 +640,7 @@ equal(str(u), v) @unittest.skipUnless(os.name == 'posix', 'requires Posix') + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def testIssue8621(self): # On at least some versions of OSX self.uuid.uuid4 generates # the same sequence of UUIDs in the parent and any @@ -824,6 +826,7 @@ @unittest.skipUnless(_uuid._ifconfig_getnode in _uuid._GETTERS, "ifconfig is not used for introspection on this platform") + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_ifconfig_getnode(self): node = self.uuid._ifconfig_getnode() self.check_node(node, 'ifconfig') @@ -836,6 +839,7 @@ @unittest.skipUnless(_uuid._arp_getnode in _uuid._GETTERS, "arp is not used for introspection on this platform") + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_arp_getnode(self): node = self.uuid._arp_getnode() self.check_node(node, 'arp') @@ -848,6 +852,7 @@ @unittest.skipUnless(_uuid._netstat_getnode in _uuid._GETTERS, "netstat is not used for introspection on this platform") + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_netstat_getnode(self): node = self.uuid._netstat_getnode() self.check_node(node, 'netstat') diff --git a/Lib/test/test_venv.py b/Lib/test/test_venv.py index 480cb29f35..1a63f66028 100644 --- a/Lib/test/test_venv.py +++ b/Lib/test/test_venv.py @@ -16,8 +16,7 @@ import tempfile from test.support import (captured_stdout, captured_stderr, requires_zlib, can_symlink, EnvironmentVarGuard, rmtree, - import_module, - skip_if_broken_multiprocessing_synchronize) + skip_if_broken_multiprocessing_synchronize, has_subprocess_support) import unittest import venv from unittest.mock import patch @@ -179,6 +178,7 @@ builder.upgrade_dependencies(fake_context) @requireVenvCreate + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_prefixes(self): """ Test that the prefix values are as expected. @@ -316,6 +316,7 @@ # point to the venv being used to run the test, and we lose the link # to the source build - so Python can't initialise properly. @requireVenvCreate + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_executable(self): """ Test that the sys.executable value is as expected. @@ -329,6 +330,7 @@ self.assertEqual(out.strip(), envpy.encode()) @unittest.skipUnless(can_symlink(), 'Needs symlinks') + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_executable_symlinks(self): """ Test that the sys.executable value is as expected. @@ -414,6 +416,7 @@ @requireVenvCreate class EnsurePipTest(BaseTest): """Test venv module installation of pip.""" + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def assert_pip_not_installed(self): envpy = os.path.join(os.path.realpath(self.env_dir), self.bindir, self.exe) @@ -538,6 +541,7 @@ # Issue #26610: pip/pep425tags.py requires ctypes @unittest.skipUnless(ctypes, 'pip requires ctypes') + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') @requires_zlib() def test_with_pip(self): self.do_test_with_pip(False) diff --git a/Lib/test/test_webbrowser.py b/Lib/test/test_webbrowser.py index 519a9432ab..1a2ff78ca7 100644 --- a/Lib/test/test_webbrowser.py +++ b/Lib/test/test_webbrowser.py @@ -4,8 +4,12 @@ import sys import subprocess from unittest import mock +import sys from test import support +from test.support import is_apple_mobile +if is_apple_mobile: + raise unittest.SkipTest("Can't run webbrowser tests on %s" % sys.platform) URL = 'http://www.example.com' CMD_NAME = 'test' diff --git a/Lib/test/test_zipfile.py b/Lib/test/test_zipfile.py index bd383d3f68..f5c830e610 100644 --- a/Lib/test/test_zipfile.py +++ b/Lib/test/test_zipfile.py @@ -1160,6 +1160,7 @@ self.skipTest('requires write access to the installed location') unlink(filename) + @unittest.skipIf(sys.dont_write_bytecode, "Test requires ability to write bytecode") def test_write_pyfile(self): self.requiresWriteAccess(os.path.dirname(__file__)) with TemporaryFile() as t, zipfile.PyZipFile(t, "w") as zipfp: @@ -1204,6 +1205,7 @@ self.assertCompiledIn('email/__init__.py', names) self.assertCompiledIn('email/mime/text.py', names) + @unittest.skipIf(sys.dont_write_bytecode, "Test requires ability to write bytecode") def test_write_filtered_python_package(self): import test packagedir = os.path.dirname(test.__file__) diff --git a/Lib/unittest/test/test_runner.py b/Lib/unittest/test/test_runner.py index 453e6c3d11..dd9880f1d8 100644 --- a/Lib/unittest/test/test_runner.py +++ b/Lib/unittest/test/test_runner.py @@ -9,6 +9,7 @@ from unittest.test.support import (LoggingResult, ResultWithNoStartTestRunStopTestRun) +from test.support import has_subprocess_support def resultFactory(*_): @@ -1135,6 +1136,7 @@ expectedresult = (runner.stream, DESCRIPTIONS, VERBOSITY) self.assertEqual(runner._makeResult(), expectedresult) + @unittest.skipUnless(has_subprocess_support, 'Test requires support for subprocesses.') def test_warnings(self): """ Check that warnings argument of TextTestRunner correctly affects the diff --git a/Lib/webbrowser.py b/Lib/webbrowser.py index 6023c1e138..ae5803c4c8 100755 --- a/Lib/webbrowser.py +++ b/Lib/webbrowser.py @@ -590,6 +590,57 @@ # what to do if _tryorder is now empty? +# +# Platform support for iOS +# +if sys.platform == 'ios': + class MobileSafari(BaseBrowser): + def open(self, url, new=0, autoraise=True): + # This code is the equivalent of: + # NSURL *nsurl = [NSURL URLWithString:url]; + # [[UIApplication sharedApplication] openURL:nsurl]; + from ctypes import cdll, c_void_p, c_char_p, c_uint32 + from ctypes import util + objc = cdll.LoadLibrary(util.find_library(b'objc')) + cf = cdll.LoadLibrary(util.find_library(b'CoreFoundation')) + objc.objc_getClass.restype = c_void_p + objc.objc_getClass.argtypes = [c_char_p] + objc.sel_registerName.restype = c_void_p + objc.sel_registerName.argtypes = [c_char_p] + cf.CFStringCreateWithCString.restype = c_void_p + cf.CFStringCreateWithCString.argtypes = [c_void_p, c_char_p, c_uint32] + + # Get an NSString describing the URL + kCFStringEncodingUTF8 = 0x08000100 + url = c_void_p(cf.CFStringCreateWithCString(None, url.encode('utf-8'), kCFStringEncodingUTF8)) + autorelease = c_void_p(objc.sel_registerName(b'autorelease')) + objc.objc_msgSend.argtypes = [c_void_p, c_void_p] + objc.objc_msgSend.restype = c_void_p + objc.objc_msgSend(url, autorelease) + + # Get an NSURL object representing the URL + NSURL = c_void_p(objc.objc_getClass(b'NSURL')) + urlWithString_ = c_void_p(objc.sel_registerName(b'URLWithString:')) + objc.objc_msgSend.restype = c_void_p + objc.objc_msgSend.argtypes = [c_void_p, c_void_p, c_void_p] + nsurl = c_void_p(objc.objc_msgSend(NSURL, urlWithString_, url)) + + # Get the shared UIApplication instance + UIApplication = c_void_p(objc.objc_getClass(b'UIApplication')) + sharedApplication = c_void_p(objc.sel_registerName(b'sharedApplication')) + objc.objc_msgSend.argtypes = [c_void_p, c_void_p] + objc.objc_msgSend.restype = c_void_p + shared_app = c_void_p(objc.objc_msgSend(UIApplication, sharedApplication)) + + # Open the URL on the shared application + openURL_ = c_void_p(objc.sel_registerName(b'openURL:')) + objc.objc_msgSend.argtypes = [c_void_p, c_void_p, c_void_p] + objc.objc_msgSend.restype = None + objc.objc_msgSend(shared_app, openURL_, nsurl) + + return True + + register("mobilesafari", None, MobileSafari(), preferred=True) # # Platform support for Windows diff --git a/Makefile.pre.in b/Makefile.pre.in index c0272bfcdd..81e09ad4ec 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -301,6 +301,8 @@ ########################################################################## LIBFFI_INCLUDEDIR= @LIBFFI_INCLUDEDIR@ +LIBFFI_LIBDIR= @LIBFFI_LIBDIR@ +LIBFFI_LIB=@LIBFFI_LIB@ ########################################################################## # Parser diff --git a/Modules/_posixsubprocess.c b/Modules/_posixsubprocess.c index d64e0a1cfa..38770238b2 100644 --- a/Modules/_posixsubprocess.c +++ b/Modules/_posixsubprocess.c @@ -566,11 +566,15 @@ saved_errno = 0; for (i = 0; exec_array[i] != NULL; ++i) { const char *executable = exec_array[i]; +#if defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) || defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) + errno = ENOTSUP; +#else if (envp) { execve(executable, argv, envp); } else { execv(executable, argv); } +#endif if (errno != ENOENT && errno != ENOTDIR && saved_errno == 0) { saved_errno = errno; } @@ -841,7 +845,12 @@ need_after_fork = 1; } +#if defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) || defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) + pid = -1; + errno = ENOTSUP; +#else pid = fork(); +#endif if (pid == 0) { /* Child process */ /* diff --git a/Modules/faulthandler.c b/Modules/faulthandler.c index 16f98ace3b..0d7e276ff2 100644 --- a/Modules/faulthandler.c +++ b/Modules/faulthandler.c @@ -1,3 +1,7 @@ +#ifdef __APPLE__ +# include "TargetConditionals.h" +#endif /* __APPLE__ */ + #include "Python.h" #include "pycore_initconfig.h" #include "pycore_traceback.h" @@ -15,6 +19,11 @@ # include #endif +// tvOS and watchOS don't provide a number of important POSIX functions. +#if defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) || defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) +# undef HAVE_SIGALTSTACK +#endif /* TVOS || WATCHOS */ + /* Using an alternative stack requires sigaltstack() and sigaction() SA_ONSTACK */ #if defined(HAVE_SIGALTSTACK) && defined(HAVE_SIGACTION) diff --git a/Modules/mathmodule.c b/Modules/mathmodule.c index 1f16849a3e..a7b16eadc9 100644 --- a/Modules/mathmodule.c +++ b/Modules/mathmodule.c @@ -64,6 +64,10 @@ /*[clinic end generated code: output=da39a3ee5e6b4b0d input=76bc7002685dd942]*/ +#ifdef __APPLE__ +# include "TargetConditionals.h" +#endif /* __APPLE__ */ + /* sin(pi*x), giving accurate results for all finite x (especially x integral or close to an integer). This is here for use in the diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index bf4e648421..dc04447b0f 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -57,6 +57,8 @@ */ #if defined(__APPLE__) +#include "TargetConditionals.h" + #if defined(__has_builtin) #if __has_builtin(__builtin_available) #define HAVE_BUILTIN_AVAILABLE 1 @@ -180,7 +182,6 @@ disguised Unix interface). Refer to the library manual and\n\ corresponding Unix manual entries for more information on calls."); - #ifdef HAVE_SYS_UIO_H # include #endif @@ -337,6 +338,26 @@ # endif /* _MSC_VER */ #endif /* ! __WATCOMC__ || __QNX__ */ +// iOS/tvOS/watchOS *define* a number of POSIX functions, but you can't use them +// because iOS isn't a conventional multiprocess environment. +#if TARGET_OS_IPHONE +# undef HAVE_EXECV +# undef HAVE_FORK +# undef HAVE_FORK1 +# undef HAVE_FORKPTY +# undef HAVE_GETGROUPS +# undef HAVE_POSIX_SPAWN +# undef HAVE_POSIX_SPAWNP +# undef HAVE_SCHED_H +# undef HAVE_SENDFILE +# undef HAVE_SETPRIORITY +# undef HAVE_SPAWNV +# undef HAVE_WAIT +# undef HAVE_WAIT3 +# undef HAVE_WAIT4 +# undef HAVE_WAITPID +#endif + _Py_IDENTIFIER(__fspath__); /*[clinic input] @@ -560,27 +581,33 @@ } } } +#endif void PyOS_BeforeFork(void) { +#ifdef HAVE_FORK run_at_forkers(_PyInterpreterState_GET()->before_forkers, 1); _PyImport_AcquireLock(); +#endif } void PyOS_AfterFork_Parent(void) { +#ifdef HAVE_FORK if (_PyImport_ReleaseLock() <= 0) Py_FatalError("failed releasing import lock after fork"); run_at_forkers(_PyInterpreterState_GET()->after_forkers_parent, 0); +#endif } void PyOS_AfterFork_Child(void) { +#ifdef HAVE_FORK _PyRuntimeState *runtime = &_PyRuntime; _PyGILState_Reinit(runtime); _PyEval_ReInitThreads(runtime); @@ -590,8 +617,10 @@ _PyInterpreterState_DeleteExceptMain(runtime); run_at_forkers(_PyInterpreterState_GET()->after_forkers_child, 0); +#endif } +#ifdef HAVE_FORK static int register_at_forker(PyObject **lst, PyObject *func) { @@ -611,9 +640,7 @@ void PyOS_AfterFork(void) { -#ifdef HAVE_FORK PyOS_AfterFork_Child(); -#endif } @@ -1526,7 +1553,9 @@ */ #include #elif !defined(_MSC_VER) && (!defined(__WATCOMC__) || defined(__QNX__) || defined(__VXWORKS__)) +# if !TARGET_OS_TV && !TARGET_OS_WATCH extern char **environ; +# endif #endif /* !_MSC_VER */ static PyObject * @@ -1542,6 +1571,7 @@ d = PyDict_New(); if (d == NULL) return NULL; +#if !TARGET_OS_TV && !TARGET_OS_WATCH #ifdef MS_WINDOWS /* _wenviron must be initialized in this way if the program is started through main() instead of wmain(). */ @@ -1597,6 +1627,7 @@ Py_DECREF(k); Py_DECREF(v); } +#endif return d; } @@ -4832,7 +4863,12 @@ } Py_BEGIN_ALLOW_THREADS +#if TARGET_OS_IPHONE + result = -1; + errno = ENOTSUP; +#else result = system(bytes); +#endif Py_END_ALLOW_THREADS return result; } @@ -13470,6 +13506,7 @@ int is_symlink; int need_stat; #endif +#if !TARGET_OS_TV && !TARGET_OS_WATCH #ifdef MS_WINDOWS unsigned long dir_bits; #endif @@ -13530,6 +13567,7 @@ #endif return result; +#endif error: Py_XDECREF(st_mode); diff --git a/Modules/pwdmodule.c b/Modules/pwdmodule.c index 901a3ed9a2..5a7536cc7b 100644 --- a/Modules/pwdmodule.c +++ b/Modules/pwdmodule.c @@ -1,6 +1,10 @@ /* UNIX password file access module */ +#ifdef __APPLE__ +# include "TargetConditionals.h" +#endif /* __APPLE__ */ + #include "Python.h" #include "posixmodule.h" @@ -186,6 +190,22 @@ if (nomem == 1) { return PyErr_NoMemory(); } + +// iPhone has a "user" with UID 501, username "mobile"; but the simulator +// doesn't reflect this. Generate a simulated response. +#if TARGET_IPHONE_SIMULATOR + if (uid == 501) { + struct passwd mp; + mp.pw_name = "mobile"; + mp.pw_passwd = "/smx7MYTQIi2M"; + mp.pw_uid = 501; + mp.pw_gid = 501; + mp.pw_gecos = "Mobile User"; + mp.pw_dir = "/var/mobile"; + mp.pw_shell = "/bin/sh"; + return mkpwent(&mp); + } +#endif PyObject *uid_obj = _PyLong_FromUid(uid); if (uid_obj == NULL) return NULL; @@ -269,6 +289,22 @@ PyErr_NoMemory(); } else { +// iPhone has a "user" with UID 501, username "mobile"; but the simulator +// doesn't reflect this. Generate a simulated response. +#if TARGET_IPHONE_SIMULATOR + if (strcmp(name, "mobile") == 0) { + struct passwd mp; + mp.pw_name = "mobile"; + mp.pw_passwd = "/smx7MYTQIi2M"; + mp.pw_uid = 501; + mp.pw_gid = 501; + mp.pw_gecos = "Mobile User"; + mp.pw_dir = "/var/mobile"; + mp.pw_shell = "/bin/sh"; + retval = mkpwent(&mp); + goto out; + } +#endif PyErr_Format(PyExc_KeyError, "getpwnam(): name not found: %R", name); } diff --git a/Modules/timemodule.c b/Modules/timemodule.c index df59f2aac5..c0623f394b 100644 --- a/Modules/timemodule.c +++ b/Modules/timemodule.c @@ -62,6 +62,11 @@ #define SEC_TO_NS (1000 * 1000 * 1000) +#ifdef __APPLE__ +# include "TargetConditionals.h" +#endif /* __APPLE__ */ + + /* Forward declarations */ static int pysleep(_PyTime_t); @@ -245,11 +250,13 @@ if (_PyTime_AsTimespec(t, &tp) == -1) return NULL; +#if !TARGET_OS_IPHONE ret = clock_settime((clockid_t)clk_id, &tp); if (ret != 0) { PyErr_SetFromErrno(PyExc_OSError); return NULL; } +#endif Py_RETURN_NONE; } @@ -278,11 +285,13 @@ return NULL; } +#if !TARGET_OS_IPHONE ret = clock_settime((clockid_t)clk_id, &ts); if (ret != 0) { PyErr_SetFromErrno(PyExc_OSError); return NULL; } +#endif Py_RETURN_NONE; } diff --git a/Python/bootstrap_hash.c b/Python/bootstrap_hash.c index e189ce0d90..5a53988ffa 100644 --- a/Python/bootstrap_hash.c +++ b/Python/bootstrap_hash.c @@ -35,6 +35,10 @@ #endif +#ifdef __APPLE__ +# include "TargetConditionals.h" +#endif /* __APPLE__ */ + #ifdef Py_DEBUG int _Py_HashSecret_Initialized = 0; #else @@ -205,6 +209,9 @@ } #elif defined(HAVE_GETENTROPY) +// iOS, tvOS and watchOS have an incomplete definitions of getentropy +// so it is *found* by configure, but doesn't actually exist. +#elif defined(HAVE_GETENTROPY) && !TARGET_OS_IPHONE #define PY_GETENTROPY 1 /* Fill buffer with size pseudo-random bytes generated by getentropy(): diff --git a/Python/dynload_shlib.c b/Python/dynload_shlib.c index 23828898d3..e500b30b3b 100644 --- a/Python/dynload_shlib.c +++ b/Python/dynload_shlib.c @@ -28,6 +28,10 @@ #define LEAD_UNDERSCORE "" #endif +#ifdef __APPLE__ +# include "TargetConditionals.h" +#endif /* __APPLE__ */ + /* The .so extension module ABI tag, supplied by the Makefile via Makefile.pre.in and configure. This is used to discriminate between incompatible .so files so that extensions for different Python builds can @@ -38,12 +42,21 @@ #ifdef __CYGWIN__ ".dll", #else /* !__CYGWIN__ */ - "." SOABI ".so", -#ifdef ALT_SOABI - "." ALT_SOABI ".so", -#endif - ".abi" PYTHON_ABI_STRING ".so", - ".so", +# ifdef __APPLE__ +# if TARGET_OS_IPHONE +# define SHLIB_SUFFIX ".dylib" +# else +# define SHLIB_SUFFIX ".so" +# endif +# else +# define SHLIB_SUFFIX ".so" +# endif + "." SOABI SHLIB_SUFFIX, +# ifdef ALT_SOABI + "." ALT_SOABI SHLIB_SUFFIX, +# endif + ".abi" PYTHON_ABI_STRING SHLIB_SUFFIX, + SHLIB_SUFFIX, #endif /* __CYGWIN__ */ NULL, }; diff --git a/Python/importlib_external.h b/Python/importlib_external.h index 23af2cd20b..f90abbbba1 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -1,7 +1,7 @@ /* Auto-generated by Programs/_freeze_importlib.c */ const unsigned char _Py_M__importlib_bootstrap_external[] = { 99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,5,0,0,0,64,0,0,0,115,224,2,0,0,100,0, + 0,5,0,0,0,64,0,0,0,115,254,2,0,0,100,0, 90,0,100,1,100,2,108,1,97,1,100,1,100,2,108,2, 90,2,100,1,100,2,108,3,97,3,100,1,100,2,108,4, 90,4,100,1,100,2,108,5,90,5,116,3,106,6,100,3, @@ -20,20 +20,20 @@ 90,27,100,26,100,27,132,0,90,28,100,28,100,29,132,0, 90,29,100,30,100,31,132,0,90,30,100,32,100,33,132,0, 90,31,101,7,144,1,114,36,100,34,100,35,132,0,90,32, - 110,8,100,36,100,35,132,0,90,32,100,111,100,38,100,39, + 110,8,100,36,100,35,132,0,90,32,100,115,100,38,100,39, 132,1,90,33,101,34,101,33,106,35,131,1,90,36,100,40, 160,37,100,41,100,42,161,2,100,43,23,0,90,38,101,39, 160,40,101,38,100,42,161,2,90,41,100,44,90,42,100,45, 90,43,100,46,103,1,90,44,100,47,103,1,90,45,101,45, - 4,0,90,46,90,47,100,112,100,2,100,48,156,1,100,49, + 4,0,90,46,90,47,100,116,100,2,100,48,156,1,100,49, 100,50,132,3,90,48,100,51,100,52,132,0,90,49,100,53, 100,54,132,0,90,50,100,55,100,56,132,0,90,51,100,57, 100,58,132,0,90,52,100,59,100,60,132,0,90,53,100,61, 100,62,132,0,90,54,100,63,100,64,132,0,90,55,100,65, - 100,66,132,0,90,56,100,67,100,68,132,0,90,57,100,113, - 100,69,100,70,132,1,90,58,100,114,100,71,100,72,132,1, - 90,59,100,115,100,74,100,75,132,1,90,60,100,76,100,77, - 132,0,90,61,101,62,131,0,90,63,100,116,100,2,101,63, + 100,66,132,0,90,56,100,67,100,68,132,0,90,57,100,117, + 100,69,100,70,132,1,90,58,100,118,100,71,100,72,132,1, + 90,59,100,119,100,74,100,75,132,1,90,60,100,76,100,77, + 132,0,90,61,101,62,131,0,90,63,100,120,100,2,101,63, 100,78,156,2,100,79,100,80,132,3,90,64,71,0,100,81, 100,82,132,0,100,82,131,2,90,65,71,0,100,83,100,84, 132,0,100,84,131,2,90,66,71,0,100,85,100,86,132,0, @@ -45,767 +45,703 @@ 71,0,100,95,100,96,132,0,100,96,131,2,90,73,71,0, 100,97,100,98,132,0,100,98,131,2,90,74,71,0,100,99, 100,100,132,0,100,100,131,2,90,75,71,0,100,101,100,102, - 132,0,100,102,131,2,90,76,100,117,100,103,100,104,132,1, - 90,77,100,105,100,106,132,0,90,78,100,107,100,108,132,0, - 90,79,100,109,100,110,132,0,90,80,100,2,83,0,41,118, - 97,94,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,112,97,116,104, - 45,98,97,115,101,100,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,233,0,0,0,0,78,90,5,119,105,110,51,50, - 250,1,92,250,1,47,99,1,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,3,0,0,0,99,0,0,0,115, - 26,0,0,0,124,0,93,18,125,1,116,0,124,1,131,1, - 100,0,107,2,86,0,1,0,113,2,100,1,83,0,169,2, - 233,1,0,0,0,78,169,1,218,3,108,101,110,169,2,218, - 2,46,48,218,3,115,101,112,169,0,114,10,0,0,0,250, - 38,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,95,101,120, - 116,101,114,110,97,108,62,218,9,60,103,101,110,101,120,112, - 114,62,43,0,0,0,243,0,0,0,0,114,12,0,0,0, - 218,0,99,1,0,0,0,0,0,0,0,0,0,0,0,2, - 0,0,0,4,0,0,0,67,0,0,0,115,22,0,0,0, - 104,0,124,0,93,14,125,1,100,0,124,1,155,0,157,2, - 146,2,113,4,83,0,169,1,250,1,58,114,10,0,0,0, - 169,2,114,8,0,0,0,218,1,115,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,218,9,60,115,101,116,99, - 111,109,112,62,47,0,0,0,114,13,0,0,0,114,19,0, - 0,0,41,1,218,3,119,105,110,41,2,90,6,99,121,103, - 119,105,110,90,6,100,97,114,119,105,110,99,0,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0, - 3,0,0,0,115,60,0,0,0,116,0,106,1,160,2,116, - 3,161,1,114,48,116,0,106,1,160,2,116,4,161,1,114, - 30,100,1,137,0,110,4,100,2,137,0,135,0,102,1,100, - 3,100,4,132,8,125,0,110,8,100,5,100,4,132,0,125, - 0,124,0,83,0,41,6,78,90,12,80,89,84,72,79,78, - 67,65,83,69,79,75,115,12,0,0,0,80,89,84,72,79, - 78,67,65,83,69,79,75,99,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,19,0,0,0, - 115,20,0,0,0,116,0,106,1,106,2,12,0,111,18,136, - 0,116,3,106,4,118,0,83,0,41,1,122,94,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,32,97,110,100,32,105,103,110,111,114,101,32,101,110,118, - 105,114,111,110,109,101,110,116,32,102,108,97,103,115,32,97, - 114,101,32,110,111,116,32,115,101,116,46,41,5,218,3,115, - 121,115,218,5,102,108,97,103,115,218,18,105,103,110,111,114, - 101,95,101,110,118,105,114,111,110,109,101,110,116,218,3,95, - 111,115,90,7,101,110,118,105,114,111,110,114,10,0,0,0, - 169,1,218,3,107,101,121,114,10,0,0,0,114,11,0,0, - 0,218,11,95,114,101,108,97,120,95,99,97,115,101,64,0, - 0,0,115,2,0,0,0,0,2,122,37,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,0,0,0, - 0,1,0,0,0,83,0,0,0,115,4,0,0,0,100,1, - 83,0,41,2,122,53,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,114,10,0,0, - 0,114,10,0,0,0,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,114,27,0,0,0,68,0,0,0,115,2, - 0,0,0,0,2,41,5,114,21,0,0,0,218,8,112,108, - 97,116,102,111,114,109,218,10,115,116,97,114,116,115,119,105, - 116,104,218,27,95,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,218, - 35,95,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,95,83,84,82, - 95,75,69,89,41,1,114,27,0,0,0,114,10,0,0,0, - 114,25,0,0,0,114,11,0,0,0,218,16,95,109,97,107, - 101,95,114,101,108,97,120,95,99,97,115,101,57,0,0,0, - 115,14,0,0,0,0,1,12,1,12,1,6,2,4,2,14, - 4,8,3,114,32,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,4,0,0,0,67,0,0, - 0,115,20,0,0,0,116,0,124,0,131,1,100,1,64,0, - 160,1,100,2,100,3,161,2,83,0,41,4,122,42,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,236,3,0,0,0,255,127,255, - 127,3,0,233,4,0,0,0,218,6,108,105,116,116,108,101, - 41,2,218,3,105,110,116,218,8,116,111,95,98,121,116,101, - 115,41,1,218,1,120,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,218,12,95,112,97,99,107,95,117,105,110, - 116,51,50,74,0,0,0,115,2,0,0,0,0,2,114,39, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 1,0,0,0,4,0,0,0,67,0,0,0,115,28,0,0, - 0,116,0,124,0,131,1,100,1,107,2,115,16,74,0,130, - 1,116,1,160,2,124,0,100,2,161,2,83,0,41,3,122, - 47,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, - 114,34,0,0,0,114,35,0,0,0,169,3,114,6,0,0, - 0,114,36,0,0,0,218,10,102,114,111,109,95,98,121,116, - 101,115,169,1,218,4,100,97,116,97,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,218,14,95,117,110,112,97, - 99,107,95,117,105,110,116,51,50,79,0,0,0,115,4,0, - 0,0,0,2,16,1,114,44,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0, - 67,0,0,0,115,28,0,0,0,116,0,124,0,131,1,100, - 1,107,2,115,16,74,0,130,1,116,1,160,2,124,0,100, - 2,161,2,83,0,41,3,122,47,67,111,110,118,101,114,116, - 32,50,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,233,2,0,0,0,114,35,0, - 0,0,114,40,0,0,0,114,42,0,0,0,114,10,0,0, + 132,0,100,102,131,2,90,76,71,0,100,103,100,104,132,0, + 100,104,101,72,131,3,90,77,71,0,100,105,100,106,132,0, + 100,106,131,2,90,78,100,121,100,107,100,108,132,1,90,79, + 100,109,100,110,132,0,90,80,100,111,100,112,132,0,90,81, + 100,113,100,114,132,0,90,82,100,2,83,0,41,122,97,94, + 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,112,97,116,104,45,98, + 97,115,101,100,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,233,0,0,0,0,78,90,5,119,105,110,51,50,250,1, + 92,250,1,47,99,1,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,3,0,0,0,99,0,0,0,115,26,0, + 0,0,124,0,93,18,125,1,116,0,124,1,131,1,100,0, + 107,2,86,0,1,0,113,2,100,1,83,0,169,2,233,1, + 0,0,0,78,169,1,218,3,108,101,110,169,2,218,2,46, + 48,218,3,115,101,112,169,0,114,10,0,0,0,250,38,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,95,101,120,116,101, + 114,110,97,108,62,218,9,60,103,101,110,101,120,112,114,62, + 43,0,0,0,243,0,0,0,0,114,12,0,0,0,218,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,4,0,0,0,67,0,0,0,115,22,0,0,0,104,0, + 124,0,93,14,125,1,100,0,124,1,155,0,157,2,146,2, + 113,4,83,0,169,1,250,1,58,114,10,0,0,0,169,2, + 114,8,0,0,0,218,1,115,114,10,0,0,0,114,10,0, + 0,0,114,11,0,0,0,218,9,60,115,101,116,99,111,109, + 112,62,47,0,0,0,114,13,0,0,0,114,19,0,0,0, + 41,1,218,3,119,105,110,41,5,90,6,99,121,103,119,105, + 110,90,6,100,97,114,119,105,110,218,3,105,111,115,218,4, + 116,118,111,115,218,7,119,97,116,99,104,111,115,99,0,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0, + 0,0,3,0,0,0,115,60,0,0,0,116,0,106,1,160, + 2,116,3,161,1,114,48,116,0,106,1,160,2,116,4,161, + 1,114,30,100,1,137,0,110,4,100,2,137,0,135,0,102, + 1,100,3,100,4,132,8,125,0,110,8,100,5,100,4,132, + 0,125,0,124,0,83,0,41,6,78,90,12,80,89,84,72, + 79,78,67,65,83,69,79,75,115,12,0,0,0,80,89,84, + 72,79,78,67,65,83,69,79,75,99,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,19,0, + 0,0,115,20,0,0,0,116,0,106,1,106,2,12,0,111, + 18,136,0,116,3,106,4,118,0,83,0,41,1,122,94,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,32,97,110,100,32,105,103,110,111,114,101,32,101, + 110,118,105,114,111,110,109,101,110,116,32,102,108,97,103,115, + 32,97,114,101,32,110,111,116,32,115,101,116,46,41,5,218, + 3,115,121,115,218,5,102,108,97,103,115,218,18,105,103,110, + 111,114,101,95,101,110,118,105,114,111,110,109,101,110,116,218, + 3,95,111,115,90,7,101,110,118,105,114,111,110,114,10,0, + 0,0,169,1,218,3,107,101,121,114,10,0,0,0,114,11, + 0,0,0,218,11,95,114,101,108,97,120,95,99,97,115,101, + 64,0,0,0,115,2,0,0,0,0,2,122,37,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,0, + 0,0,0,1,0,0,0,83,0,0,0,115,4,0,0,0, + 100,1,83,0,41,2,122,53,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,114,10, + 0,0,0,114,10,0,0,0,114,10,0,0,0,114,10,0, + 0,0,114,11,0,0,0,114,30,0,0,0,68,0,0,0, + 115,2,0,0,0,0,2,41,5,114,24,0,0,0,218,8, + 112,108,97,116,102,111,114,109,218,10,115,116,97,114,116,115, + 119,105,116,104,218,27,95,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,218,35,95,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,95,83, + 84,82,95,75,69,89,41,1,114,30,0,0,0,114,10,0, + 0,0,114,28,0,0,0,114,11,0,0,0,218,16,95,109, + 97,107,101,95,114,101,108,97,120,95,99,97,115,101,57,0, + 0,0,115,14,0,0,0,0,1,12,1,12,1,6,2,4, + 2,14,4,8,3,114,35,0,0,0,99,1,0,0,0,0, + 0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,67, + 0,0,0,115,20,0,0,0,116,0,124,0,131,1,100,1, + 64,0,160,1,100,2,100,3,161,2,83,0,41,4,122,42, + 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,236,3,0,0,0,255, + 127,255,127,3,0,233,4,0,0,0,218,6,108,105,116,116, + 108,101,41,2,218,3,105,110,116,218,8,116,111,95,98,121, + 116,101,115,41,1,218,1,120,114,10,0,0,0,114,10,0, + 0,0,114,11,0,0,0,218,12,95,112,97,99,107,95,117, + 105,110,116,51,50,74,0,0,0,115,2,0,0,0,0,2, + 114,42,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,4,0,0,0,67,0,0,0,115,28, + 0,0,0,116,0,124,0,131,1,100,1,107,2,115,16,74, + 0,130,1,116,1,160,2,124,0,100,2,161,2,83,0,41, + 3,122,47,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,114,37,0,0,0,114,38,0,0,0,169,3,114,6, + 0,0,0,114,39,0,0,0,218,10,102,114,111,109,95,98, + 121,116,101,115,169,1,218,4,100,97,116,97,114,10,0,0, 0,114,10,0,0,0,114,11,0,0,0,218,14,95,117,110, - 112,97,99,107,95,117,105,110,116,49,54,84,0,0,0,115, - 4,0,0,0,0,2,16,1,114,46,0,0,0,99,0,0, - 0,0,0,0,0,0,0,0,0,0,5,0,0,0,4,0, - 0,0,71,0,0,0,115,228,0,0,0,124,0,115,8,100, - 1,83,0,116,0,124,0,131,1,100,2,107,2,114,28,124, - 0,100,3,25,0,83,0,100,1,125,1,103,0,125,2,116, - 1,116,2,106,3,124,0,131,2,68,0,93,122,92,2,125, - 3,125,4,124,3,160,4,116,5,161,1,115,76,124,3,160, - 6,116,5,161,1,114,102,124,3,160,7,116,8,161,1,112, - 88,124,1,125,1,116,9,124,4,23,0,103,1,125,2,113, - 48,124,3,160,6,100,4,161,1,114,152,124,1,160,10,161, - 0,124,3,160,10,161,0,107,3,114,140,124,3,125,1,124, - 4,103,1,125,2,113,170,124,2,160,11,124,4,161,1,1, - 0,113,48,124,3,112,158,124,1,125,1,124,2,160,11,124, - 4,161,1,1,0,113,48,100,5,100,6,132,0,124,2,68, - 0,131,1,125,2,116,0,124,2,131,1,100,2,107,2,114, - 214,124,2,100,3,25,0,115,214,124,1,116,9,23,0,83, - 0,124,1,116,9,160,12,124,2,161,1,23,0,83,0,41, - 7,250,31,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,40, - 41,46,114,14,0,0,0,114,4,0,0,0,114,0,0,0, - 0,114,16,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,5,0,0,0,83,0,0,0,115, - 26,0,0,0,103,0,124,0,93,18,125,1,124,1,114,4, - 124,1,160,0,116,1,161,1,145,2,113,4,83,0,114,10, - 0,0,0,169,2,218,6,114,115,116,114,105,112,218,15,112, - 97,116,104,95,115,101,112,97,114,97,116,111,114,115,169,2, - 114,8,0,0,0,218,1,112,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,218,10,60,108,105,115,116,99,111, - 109,112,62,114,0,0,0,114,13,0,0,0,250,30,95,112, - 97,116,104,95,106,111,105,110,46,60,108,111,99,97,108,115, - 62,46,60,108,105,115,116,99,111,109,112,62,41,13,114,6, - 0,0,0,218,3,109,97,112,114,24,0,0,0,218,15,95, - 112,97,116,104,95,115,112,108,105,116,114,111,111,116,114,29, - 0,0,0,218,14,112,97,116,104,95,115,101,112,95,116,117, - 112,108,101,218,8,101,110,100,115,119,105,116,104,114,49,0, - 0,0,114,50,0,0,0,218,8,112,97,116,104,95,115,101, - 112,218,8,99,97,115,101,102,111,108,100,218,6,97,112,112, - 101,110,100,218,4,106,111,105,110,41,5,218,10,112,97,116, - 104,95,112,97,114,116,115,218,4,114,111,111,116,218,4,112, - 97,116,104,90,8,110,101,119,95,114,111,111,116,218,4,116, - 97,105,108,114,10,0,0,0,114,10,0,0,0,114,11,0, - 0,0,218,10,95,112,97,116,104,95,106,111,105,110,91,0, - 0,0,115,42,0,0,0,0,2,4,1,4,1,12,1,8, - 1,4,1,4,1,20,1,20,1,14,1,12,1,10,1,16, - 3,4,1,8,2,12,2,8,1,12,1,14,1,20,2,8, - 1,114,67,0,0,0,99,0,0,0,0,0,0,0,0,0, - 0,0,0,1,0,0,0,4,0,0,0,71,0,0,0,115, - 20,0,0,0,116,0,160,1,100,1,100,2,132,0,124,0, - 68,0,131,1,161,1,83,0,41,3,114,47,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 5,0,0,0,83,0,0,0,115,26,0,0,0,103,0,124, - 0,93,18,125,1,124,1,114,4,124,1,160,0,116,1,161, - 1,145,2,113,4,83,0,114,10,0,0,0,114,48,0,0, - 0,41,2,114,8,0,0,0,218,4,112,97,114,116,114,10, - 0,0,0,114,10,0,0,0,114,11,0,0,0,114,53,0, - 0,0,123,0,0,0,115,4,0,0,0,6,1,6,255,114, - 54,0,0,0,41,2,114,59,0,0,0,114,62,0,0,0, - 41,1,114,63,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,114,67,0,0,0,121,0,0,0,115, - 6,0,0,0,0,2,10,1,2,255,99,1,0,0,0,0, - 0,0,0,0,0,0,0,2,0,0,0,4,0,0,0,3, - 0,0,0,115,66,0,0,0,116,0,135,0,102,1,100,1, - 100,2,132,8,116,1,68,0,131,1,131,1,125,1,124,1, - 100,3,107,0,114,38,100,4,136,0,102,2,83,0,136,0, - 100,5,124,1,133,2,25,0,136,0,124,1,100,6,23,0, - 100,5,133,2,25,0,102,2,83,0,41,7,122,32,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,40,41,46,99,1, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4, - 0,0,0,51,0,0,0,115,24,0,0,0,124,0,93,16, - 125,1,136,0,160,0,124,1,161,1,86,0,1,0,113,2, - 100,0,83,0,169,1,78,41,1,218,5,114,102,105,110,100, - 114,51,0,0,0,169,1,114,65,0,0,0,114,10,0,0, - 0,114,11,0,0,0,114,12,0,0,0,129,0,0,0,114, - 13,0,0,0,122,30,95,112,97,116,104,95,115,112,108,105, - 116,46,60,108,111,99,97,108,115,62,46,60,103,101,110,101, - 120,112,114,62,114,0,0,0,0,114,14,0,0,0,78,114, - 4,0,0,0,41,2,218,3,109,97,120,114,50,0,0,0, - 41,2,114,65,0,0,0,218,1,105,114,10,0,0,0,114, - 71,0,0,0,114,11,0,0,0,218,11,95,112,97,116,104, - 95,115,112,108,105,116,127,0,0,0,115,8,0,0,0,0, - 2,22,1,8,1,8,1,114,74,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0, - 0,67,0,0,0,115,10,0,0,0,116,0,160,1,124,0, - 161,1,83,0,41,1,122,126,83,116,97,116,32,116,104,101, - 32,112,97,116,104,46,10,10,32,32,32,32,77,97,100,101, - 32,97,32,115,101,112,97,114,97,116,101,32,102,117,110,99, - 116,105,111,110,32,116,111,32,109,97,107,101,32,105,116,32, - 101,97,115,105,101,114,32,116,111,32,111,118,101,114,114,105, - 100,101,32,105,110,32,101,120,112,101,114,105,109,101,110,116, - 115,10,32,32,32,32,40,101,46,103,46,32,99,97,99,104, - 101,32,115,116,97,116,32,114,101,115,117,108,116,115,41,46, - 10,10,32,32,32,32,41,2,114,24,0,0,0,90,4,115, - 116,97,116,114,71,0,0,0,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,218,10,95,112,97,116,104,95,115, - 116,97,116,135,0,0,0,115,2,0,0,0,0,7,114,75, - 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,8,0,0,0,67,0,0,0,115,48,0,0, - 0,122,12,116,0,124,0,131,1,125,2,87,0,110,20,4, - 0,116,1,121,32,1,0,1,0,1,0,89,0,100,1,83, - 0,48,0,124,2,106,2,100,2,64,0,124,1,107,2,83, - 0,41,3,122,49,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,70,105,0,240,0,0,41,3,114,75, - 0,0,0,218,7,79,83,69,114,114,111,114,218,7,115,116, - 95,109,111,100,101,41,3,114,65,0,0,0,218,4,109,111, - 100,101,90,9,115,116,97,116,95,105,110,102,111,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,218,18,95,112, - 97,116,104,95,105,115,95,109,111,100,101,95,116,121,112,101, - 145,0,0,0,115,10,0,0,0,0,2,2,1,12,1,12, - 1,8,1,114,79,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,3,0,0,0,67,0,0, - 0,115,10,0,0,0,116,0,124,0,100,1,131,2,83,0, - 41,2,122,31,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,41,1,114,79,0,0,0,114, - 71,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, - 0,0,0,218,12,95,112,97,116,104,95,105,115,102,105,108, - 101,154,0,0,0,115,2,0,0,0,0,2,114,80,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, - 0,0,3,0,0,0,67,0,0,0,115,22,0,0,0,124, - 0,115,12,116,0,160,1,161,0,125,0,116,2,124,0,100, - 1,131,2,83,0,41,2,122,30,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,41,3,114,24, - 0,0,0,218,6,103,101,116,99,119,100,114,79,0,0,0, - 114,71,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,218,11,95,112,97,116,104,95,105,115,100,105, - 114,159,0,0,0,115,6,0,0,0,0,2,4,1,8,1, - 114,82,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,4,0,0,0,67,0,0,0,115,62, - 0,0,0,124,0,115,8,100,1,83,0,116,0,160,1,124, - 0,161,1,100,2,25,0,160,2,100,3,100,4,161,2,125, - 1,116,3,124,1,131,1,100,5,107,4,111,60,124,1,160, - 4,100,6,161,1,112,60,124,1,160,5,100,4,161,1,83, - 0,41,7,250,30,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,97, - 98,115,46,70,114,0,0,0,0,114,2,0,0,0,114,1, - 0,0,0,114,4,0,0,0,122,2,92,92,41,6,114,24, - 0,0,0,114,56,0,0,0,218,7,114,101,112,108,97,99, - 101,114,6,0,0,0,114,29,0,0,0,114,58,0,0,0, - 41,2,114,65,0,0,0,114,64,0,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,218,11,95,112,97, - 116,104,95,105,115,97,98,115,167,0,0,0,115,8,0,0, - 0,0,2,4,1,4,1,22,1,114,85,0,0,0,99,1, + 112,97,99,107,95,117,105,110,116,51,50,79,0,0,0,115, + 4,0,0,0,0,2,16,1,114,47,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0, + 0,0,67,0,0,0,115,28,0,0,0,116,0,124,0,131, + 1,100,1,107,2,115,16,74,0,130,1,116,1,160,2,124, + 0,100,2,161,2,83,0,41,3,122,47,67,111,110,118,101, + 114,116,32,50,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,233,2,0,0,0,114, + 38,0,0,0,114,43,0,0,0,114,45,0,0,0,114,10, + 0,0,0,114,10,0,0,0,114,11,0,0,0,218,14,95, + 117,110,112,97,99,107,95,117,105,110,116,49,54,84,0,0, + 0,115,4,0,0,0,0,2,16,1,114,49,0,0,0,99, + 0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, + 4,0,0,0,71,0,0,0,115,228,0,0,0,124,0,115, + 8,100,1,83,0,116,0,124,0,131,1,100,2,107,2,114, + 28,124,0,100,3,25,0,83,0,100,1,125,1,103,0,125, + 2,116,1,116,2,106,3,124,0,131,2,68,0,93,122,92, + 2,125,3,125,4,124,3,160,4,116,5,161,1,115,76,124, + 3,160,6,116,5,161,1,114,102,124,3,160,7,116,8,161, + 1,112,88,124,1,125,1,116,9,124,4,23,0,103,1,125, + 2,113,48,124,3,160,6,100,4,161,1,114,152,124,1,160, + 10,161,0,124,3,160,10,161,0,107,3,114,140,124,3,125, + 1,124,4,103,1,125,2,113,170,124,2,160,11,124,4,161, + 1,1,0,113,48,124,3,112,158,124,1,125,1,124,2,160, + 11,124,4,161,1,1,0,113,48,100,5,100,6,132,0,124, + 2,68,0,131,1,125,2,116,0,124,2,131,1,100,2,107, + 2,114,214,124,2,100,3,25,0,115,214,124,1,116,9,23, + 0,83,0,124,1,116,9,160,12,124,2,161,1,23,0,83, + 0,41,7,250,31,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,40,41,46,114,14,0,0,0,114,4,0,0,0,114,0, + 0,0,0,114,16,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,5,0,0,0,83,0,0, + 0,115,26,0,0,0,103,0,124,0,93,18,125,1,124,1, + 114,4,124,1,160,0,116,1,161,1,145,2,113,4,83,0, + 114,10,0,0,0,169,2,218,6,114,115,116,114,105,112,218, + 15,112,97,116,104,95,115,101,112,97,114,97,116,111,114,115, + 169,2,114,8,0,0,0,218,1,112,114,10,0,0,0,114, + 10,0,0,0,114,11,0,0,0,218,10,60,108,105,115,116, + 99,111,109,112,62,114,0,0,0,114,13,0,0,0,250,30, + 95,112,97,116,104,95,106,111,105,110,46,60,108,111,99,97, + 108,115,62,46,60,108,105,115,116,99,111,109,112,62,41,13, + 114,6,0,0,0,218,3,109,97,112,114,27,0,0,0,218, + 15,95,112,97,116,104,95,115,112,108,105,116,114,111,111,116, + 114,32,0,0,0,218,14,112,97,116,104,95,115,101,112,95, + 116,117,112,108,101,218,8,101,110,100,115,119,105,116,104,114, + 52,0,0,0,114,53,0,0,0,218,8,112,97,116,104,95, + 115,101,112,218,8,99,97,115,101,102,111,108,100,218,6,97, + 112,112,101,110,100,218,4,106,111,105,110,41,5,218,10,112, + 97,116,104,95,112,97,114,116,115,218,4,114,111,111,116,218, + 4,112,97,116,104,90,8,110,101,119,95,114,111,111,116,218, + 4,116,97,105,108,114,10,0,0,0,114,10,0,0,0,114, + 11,0,0,0,218,10,95,112,97,116,104,95,106,111,105,110, + 91,0,0,0,115,42,0,0,0,0,2,4,1,4,1,12, + 1,8,1,4,1,4,1,20,1,20,1,14,1,12,1,10, + 1,16,3,4,1,8,2,12,2,8,1,12,1,14,1,20, + 2,8,1,114,70,0,0,0,99,0,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,4,0,0,0,71,0,0, + 0,115,20,0,0,0,116,0,160,1,100,1,100,2,132,0, + 124,0,68,0,131,1,161,1,83,0,41,3,114,50,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,5,0,0,0,83,0,0,0,115,26,0,0,0,103, + 0,124,0,93,18,125,1,124,1,114,4,124,1,160,0,116, + 1,161,1,145,2,113,4,83,0,114,10,0,0,0,114,51, + 0,0,0,41,2,114,8,0,0,0,218,4,112,97,114,116, + 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,114, + 56,0,0,0,123,0,0,0,115,4,0,0,0,6,1,6, + 255,114,57,0,0,0,41,2,114,62,0,0,0,114,65,0, + 0,0,41,1,114,66,0,0,0,114,10,0,0,0,114,10, + 0,0,0,114,11,0,0,0,114,70,0,0,0,121,0,0, + 0,115,6,0,0,0,0,2,10,1,2,255,99,1,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,4,0,0, + 0,3,0,0,0,115,66,0,0,0,116,0,135,0,102,1, + 100,1,100,2,132,8,116,1,68,0,131,1,131,1,125,1, + 124,1,100,3,107,0,114,38,100,4,136,0,102,2,83,0, + 136,0,100,5,124,1,133,2,25,0,136,0,124,1,100,6, + 23,0,100,5,133,2,25,0,102,2,83,0,41,7,122,32, + 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,40,41,46, + 99,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,4,0,0,0,51,0,0,0,115,24,0,0,0,124,0, + 93,16,125,1,136,0,160,0,124,1,161,1,86,0,1,0, + 113,2,100,0,83,0,169,1,78,41,1,218,5,114,102,105, + 110,100,114,54,0,0,0,169,1,114,68,0,0,0,114,10, + 0,0,0,114,11,0,0,0,114,12,0,0,0,129,0,0, + 0,114,13,0,0,0,122,30,95,112,97,116,104,95,115,112, + 108,105,116,46,60,108,111,99,97,108,115,62,46,60,103,101, + 110,101,120,112,114,62,114,0,0,0,0,114,14,0,0,0, + 78,114,4,0,0,0,41,2,218,3,109,97,120,114,53,0, + 0,0,41,2,114,68,0,0,0,218,1,105,114,10,0,0, + 0,114,74,0,0,0,114,11,0,0,0,218,11,95,112,97, + 116,104,95,115,112,108,105,116,127,0,0,0,115,8,0,0, + 0,0,2,22,1,8,1,8,1,114,77,0,0,0,99,1, 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3, - 0,0,0,67,0,0,0,115,10,0,0,0,124,0,160,0, - 116,1,161,1,83,0,41,1,114,83,0,0,0,41,2,114, - 29,0,0,0,114,50,0,0,0,114,71,0,0,0,114,10, - 0,0,0,114,10,0,0,0,114,11,0,0,0,114,85,0, - 0,0,175,0,0,0,115,2,0,0,0,0,2,233,182,1, - 0,0,99,3,0,0,0,0,0,0,0,0,0,0,0,6, - 0,0,0,11,0,0,0,67,0,0,0,115,178,0,0,0, - 100,1,160,0,124,0,116,1,124,0,131,1,161,2,125,3, - 116,2,160,3,124,3,116,2,106,4,116,2,106,5,66,0, - 116,2,106,6,66,0,124,2,100,2,64,0,161,3,125,4, - 122,70,116,7,160,8,124,4,100,3,161,2,143,26,125,5, - 124,5,160,9,124,1,161,1,1,0,87,0,100,4,4,0, - 4,0,131,3,1,0,110,16,49,0,115,94,48,0,1,0, - 1,0,1,0,89,0,1,0,116,2,160,10,124,3,124,0, - 161,2,1,0,87,0,110,54,4,0,116,11,121,172,1,0, - 1,0,1,0,122,14,116,2,160,12,124,3,161,1,1,0, - 87,0,110,18,4,0,116,11,121,164,1,0,1,0,1,0, - 89,0,110,2,48,0,130,0,89,0,110,2,48,0,100,4, - 83,0,41,5,122,162,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,250,5,123,125,46,123,125,114, - 86,0,0,0,90,2,119,98,78,41,13,218,6,102,111,114, - 109,97,116,218,2,105,100,114,24,0,0,0,90,4,111,112, - 101,110,90,6,79,95,69,88,67,76,90,7,79,95,67,82, - 69,65,84,90,8,79,95,87,82,79,78,76,89,218,3,95, - 105,111,218,6,70,105,108,101,73,79,218,5,119,114,105,116, - 101,114,84,0,0,0,114,76,0,0,0,90,6,117,110,108, - 105,110,107,41,6,114,65,0,0,0,114,43,0,0,0,114, - 78,0,0,0,90,8,112,97,116,104,95,116,109,112,90,2, - 102,100,218,4,102,105,108,101,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,218,13,95,119,114,105,116,101,95, - 97,116,111,109,105,99,180,0,0,0,115,28,0,0,0,0, - 5,16,1,6,1,22,255,4,2,2,3,14,1,40,1,16, - 1,12,1,2,1,14,1,12,1,6,1,114,94,0,0,0, - 105,97,13,0,0,114,45,0,0,0,114,35,0,0,0,115, - 2,0,0,0,13,10,90,11,95,95,112,121,99,97,99,104, - 101,95,95,122,4,111,112,116,45,122,3,46,112,121,122,4, - 46,112,121,99,41,1,218,12,111,112,116,105,109,105,122,97, - 116,105,111,110,99,2,0,0,0,0,0,0,0,1,0,0, - 0,12,0,0,0,5,0,0,0,67,0,0,0,115,88,1, - 0,0,124,1,100,1,117,1,114,52,116,0,160,1,100,2, - 116,2,161,2,1,0,124,2,100,1,117,1,114,40,100,3, - 125,3,116,3,124,3,131,1,130,1,124,1,114,48,100,4, - 110,2,100,5,125,2,116,4,160,5,124,0,161,1,125,0, - 116,6,124,0,131,1,92,2,125,4,125,5,124,5,160,7, - 100,6,161,1,92,3,125,6,125,7,125,8,116,8,106,9, - 106,10,125,9,124,9,100,1,117,0,114,114,116,11,100,7, - 131,1,130,1,100,4,160,12,124,6,114,126,124,6,110,2, - 124,8,124,7,124,9,103,3,161,1,125,10,124,2,100,1, - 117,0,114,172,116,8,106,13,106,14,100,8,107,2,114,164, - 100,4,125,2,110,8,116,8,106,13,106,14,125,2,116,15, - 124,2,131,1,125,2,124,2,100,4,107,3,114,224,124,2, - 160,16,161,0,115,210,116,17,100,9,160,18,124,2,161,1, - 131,1,130,1,100,10,160,18,124,10,116,19,124,2,161,3, - 125,10,124,10,116,20,100,8,25,0,23,0,125,11,116,8, - 106,21,100,1,117,1,144,1,114,76,116,22,124,4,131,1, - 144,1,115,16,116,23,116,4,160,24,161,0,124,4,131,2, - 125,4,124,4,100,5,25,0,100,11,107,2,144,1,114,56, - 124,4,100,8,25,0,116,25,118,1,144,1,114,56,124,4, - 100,12,100,1,133,2,25,0,125,4,116,23,116,8,106,21, - 124,4,160,26,116,25,161,1,124,11,131,3,83,0,116,23, - 124,4,116,27,124,11,131,3,83,0,41,13,97,254,2,0, - 0,71,105,118,101,110,32,116,104,101,32,112,97,116,104,32, - 116,111,32,97,32,46,112,121,32,102,105,108,101,44,32,114, - 101,116,117,114,110,32,116,104,101,32,112,97,116,104,32,116, - 111,32,105,116,115,32,46,112,121,99,32,102,105,108,101,46, - 10,10,32,32,32,32,84,104,101,32,46,112,121,32,102,105, - 108,101,32,100,111,101,115,32,110,111,116,32,110,101,101,100, - 32,116,111,32,101,120,105,115,116,59,32,116,104,105,115,32, - 115,105,109,112,108,121,32,114,101,116,117,114,110,115,32,116, - 104,101,32,112,97,116,104,32,116,111,32,116,104,101,10,32, - 32,32,32,46,112,121,99,32,102,105,108,101,32,99,97,108, - 99,117,108,97,116,101,100,32,97,115,32,105,102,32,116,104, - 101,32,46,112,121,32,102,105,108,101,32,119,101,114,101,32, - 105,109,112,111,114,116,101,100,46,10,10,32,32,32,32,84, - 104,101,32,39,111,112,116,105,109,105,122,97,116,105,111,110, - 39,32,112,97,114,97,109,101,116,101,114,32,99,111,110,116, - 114,111,108,115,32,116,104,101,32,112,114,101,115,117,109,101, - 100,32,111,112,116,105,109,105,122,97,116,105,111,110,32,108, - 101,118,101,108,32,111,102,10,32,32,32,32,116,104,101,32, - 98,121,116,101,99,111,100,101,32,102,105,108,101,46,32,73, - 102,32,39,111,112,116,105,109,105,122,97,116,105,111,110,39, - 32,105,115,32,110,111,116,32,78,111,110,101,44,32,116,104, - 101,32,115,116,114,105,110,103,32,114,101,112,114,101,115,101, - 110,116,97,116,105,111,110,10,32,32,32,32,111,102,32,116, - 104,101,32,97,114,103,117,109,101,110,116,32,105,115,32,116, - 97,107,101,110,32,97,110,100,32,118,101,114,105,102,105,101, - 100,32,116,111,32,98,101,32,97,108,112,104,97,110,117,109, - 101,114,105,99,32,40,101,108,115,101,32,86,97,108,117,101, - 69,114,114,111,114,10,32,32,32,32,105,115,32,114,97,105, - 115,101,100,41,46,10,10,32,32,32,32,84,104,101,32,100, - 101,98,117,103,95,111,118,101,114,114,105,100,101,32,112,97, - 114,97,109,101,116,101,114,32,105,115,32,100,101,112,114,101, - 99,97,116,101,100,46,32,73,102,32,100,101,98,117,103,95, - 111,118,101,114,114,105,100,101,32,105,115,32,110,111,116,32, - 78,111,110,101,44,10,32,32,32,32,97,32,84,114,117,101, - 32,118,97,108,117,101,32,105,115,32,116,104,101,32,115,97, - 109,101,32,97,115,32,115,101,116,116,105,110,103,32,39,111, - 112,116,105,109,105,122,97,116,105,111,110,39,32,116,111,32, - 116,104,101,32,101,109,112,116,121,32,115,116,114,105,110,103, - 10,32,32,32,32,119,104,105,108,101,32,97,32,70,97,108, - 115,101,32,118,97,108,117,101,32,105,115,32,101,113,117,105, - 118,97,108,101,110,116,32,116,111,32,115,101,116,116,105,110, - 103,32,39,111,112,116,105,109,105,122,97,116,105,111,110,39, - 32,116,111,32,39,49,39,46,10,10,32,32,32,32,73,102, - 32,115,121,115,46,105,109,112,108,101,109,101,110,116,97,116, - 105,111,110,46,99,97,99,104,101,95,116,97,103,32,105,115, - 32,78,111,110,101,32,116,104,101,110,32,78,111,116,73,109, - 112,108,101,109,101,110,116,101,100,69,114,114,111,114,32,105, - 115,32,114,97,105,115,101,100,46,10,10,32,32,32,32,78, - 122,70,116,104,101,32,100,101,98,117,103,95,111,118,101,114, - 114,105,100,101,32,112,97,114,97,109,101,116,101,114,32,105, - 115,32,100,101,112,114,101,99,97,116,101,100,59,32,117,115, - 101,32,39,111,112,116,105,109,105,122,97,116,105,111,110,39, - 32,105,110,115,116,101,97,100,122,50,100,101,98,117,103,95, - 111,118,101,114,114,105,100,101,32,111,114,32,111,112,116,105, - 109,105,122,97,116,105,111,110,32,109,117,115,116,32,98,101, - 32,115,101,116,32,116,111,32,78,111,110,101,114,14,0,0, - 0,114,4,0,0,0,218,1,46,250,36,115,121,115,46,105, - 109,112,108,101,109,101,110,116,97,116,105,111,110,46,99,97, - 99,104,101,95,116,97,103,32,105,115,32,78,111,110,101,114, - 0,0,0,0,122,24,123,33,114,125,32,105,115,32,110,111, - 116,32,97,108,112,104,97,110,117,109,101,114,105,99,122,7, - 123,125,46,123,125,123,125,114,16,0,0,0,114,45,0,0, - 0,41,28,218,9,95,119,97,114,110,105,110,103,115,218,4, - 119,97,114,110,218,18,68,101,112,114,101,99,97,116,105,111, - 110,87,97,114,110,105,110,103,218,9,84,121,112,101,69,114, - 114,111,114,114,24,0,0,0,218,6,102,115,112,97,116,104, - 114,74,0,0,0,218,10,114,112,97,114,116,105,116,105,111, - 110,114,21,0,0,0,218,14,105,109,112,108,101,109,101,110, - 116,97,116,105,111,110,218,9,99,97,99,104,101,95,116,97, - 103,218,19,78,111,116,73,109,112,108,101,109,101,110,116,101, - 100,69,114,114,111,114,114,62,0,0,0,114,22,0,0,0, - 218,8,111,112,116,105,109,105,122,101,218,3,115,116,114,218, - 7,105,115,97,108,110,117,109,218,10,86,97,108,117,101,69, - 114,114,111,114,114,88,0,0,0,218,4,95,79,80,84,218, - 17,66,89,84,69,67,79,68,69,95,83,85,70,70,73,88, - 69,83,218,14,112,121,99,97,99,104,101,95,112,114,101,102, - 105,120,114,85,0,0,0,114,67,0,0,0,114,81,0,0, - 0,114,50,0,0,0,218,6,108,115,116,114,105,112,218,8, - 95,80,89,67,65,67,72,69,41,12,114,65,0,0,0,90, - 14,100,101,98,117,103,95,111,118,101,114,114,105,100,101,114, - 95,0,0,0,218,7,109,101,115,115,97,103,101,218,4,104, - 101,97,100,114,66,0,0,0,90,4,98,97,115,101,114,9, - 0,0,0,218,4,114,101,115,116,90,3,116,97,103,90,15, - 97,108,109,111,115,116,95,102,105,108,101,110,97,109,101,218, - 8,102,105,108,101,110,97,109,101,114,10,0,0,0,114,10, - 0,0,0,114,11,0,0,0,218,17,99,97,99,104,101,95, - 102,114,111,109,95,115,111,117,114,99,101,105,1,0,0,115, - 72,0,0,0,0,18,8,1,6,1,2,255,4,2,8,1, - 4,1,8,1,12,1,10,1,12,1,16,1,8,1,8,1, - 8,1,24,1,8,1,12,1,6,2,8,1,8,1,8,1, - 8,1,14,1,14,1,12,1,12,9,10,1,14,5,28,1, - 12,4,2,1,4,1,8,1,2,253,4,5,114,120,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,10,0, - 0,0,5,0,0,0,67,0,0,0,115,46,1,0,0,116, - 0,106,1,106,2,100,1,117,0,114,20,116,3,100,2,131, - 1,130,1,116,4,160,5,124,0,161,1,125,0,116,6,124, - 0,131,1,92,2,125,1,125,2,100,3,125,3,116,0,106, - 7,100,1,117,1,114,102,116,0,106,7,160,8,116,9,161, - 1,125,4,124,1,160,10,124,4,116,11,23,0,161,1,114, - 102,124,1,116,12,124,4,131,1,100,1,133,2,25,0,125, - 1,100,4,125,3,124,3,115,144,116,6,124,1,131,1,92, - 2,125,1,125,5,124,5,116,13,107,3,114,144,116,14,116, - 13,155,0,100,5,124,0,155,2,157,3,131,1,130,1,124, - 2,160,15,100,6,161,1,125,6,124,6,100,7,118,1,114, - 178,116,14,100,8,124,2,155,2,157,2,131,1,130,1,110, - 92,124,6,100,9,107,2,144,1,114,14,124,2,160,16,100, - 6,100,10,161,2,100,11,25,0,125,7,124,7,160,10,116, - 17,161,1,115,228,116,14,100,12,116,17,155,2,157,2,131, - 1,130,1,124,7,116,12,116,17,131,1,100,1,133,2,25, - 0,125,8,124,8,160,18,161,0,144,1,115,14,116,14,100, - 13,124,7,155,2,100,14,157,3,131,1,130,1,124,2,160, - 19,100,6,161,1,100,15,25,0,125,9,116,20,124,1,124, - 9,116,21,100,15,25,0,23,0,131,2,83,0,41,16,97, - 110,1,0,0,71,105,118,101,110,32,116,104,101,32,112,97, - 116,104,32,116,111,32,97,32,46,112,121,99,46,32,102,105, - 108,101,44,32,114,101,116,117,114,110,32,116,104,101,32,112, - 97,116,104,32,116,111,32,105,116,115,32,46,112,121,32,102, - 105,108,101,46,10,10,32,32,32,32,84,104,101,32,46,112, - 121,99,32,102,105,108,101,32,100,111,101,115,32,110,111,116, - 32,110,101,101,100,32,116,111,32,101,120,105,115,116,59,32, - 116,104,105,115,32,115,105,109,112,108,121,32,114,101,116,117, - 114,110,115,32,116,104,101,32,112,97,116,104,32,116,111,10, - 32,32,32,32,116,104,101,32,46,112,121,32,102,105,108,101, - 32,99,97,108,99,117,108,97,116,101,100,32,116,111,32,99, - 111,114,114,101,115,112,111,110,100,32,116,111,32,116,104,101, - 32,46,112,121,99,32,102,105,108,101,46,32,32,73,102,32, - 112,97,116,104,32,100,111,101,115,10,32,32,32,32,110,111, - 116,32,99,111,110,102,111,114,109,32,116,111,32,80,69,80, - 32,51,49,52,55,47,52,56,56,32,102,111,114,109,97,116, - 44,32,86,97,108,117,101,69,114,114,111,114,32,119,105,108, - 108,32,98,101,32,114,97,105,115,101,100,46,32,73,102,10, - 32,32,32,32,115,121,115,46,105,109,112,108,101,109,101,110, - 116,97,116,105,111,110,46,99,97,99,104,101,95,116,97,103, - 32,105,115,32,78,111,110,101,32,116,104,101,110,32,78,111, - 116,73,109,112,108,101,109,101,110,116,101,100,69,114,114,111, - 114,32,105,115,32,114,97,105,115,101,100,46,10,10,32,32, - 32,32,78,114,97,0,0,0,70,84,122,31,32,110,111,116, - 32,98,111,116,116,111,109,45,108,101,118,101,108,32,100,105, - 114,101,99,116,111,114,121,32,105,110,32,114,96,0,0,0, - 62,2,0,0,0,114,45,0,0,0,233,3,0,0,0,122, - 29,101,120,112,101,99,116,101,100,32,111,110,108,121,32,50, - 32,111,114,32,51,32,100,111,116,115,32,105,110,32,114,121, - 0,0,0,114,45,0,0,0,233,254,255,255,255,122,53,111, - 112,116,105,109,105,122,97,116,105,111,110,32,112,111,114,116, - 105,111,110,32,111,102,32,102,105,108,101,110,97,109,101,32, - 100,111,101,115,32,110,111,116,32,115,116,97,114,116,32,119, - 105,116,104,32,122,19,111,112,116,105,109,105,122,97,116,105, - 111,110,32,108,101,118,101,108,32,122,29,32,105,115,32,110, - 111,116,32,97,110,32,97,108,112,104,97,110,117,109,101,114, - 105,99,32,118,97,108,117,101,114,0,0,0,0,41,22,114, - 21,0,0,0,114,104,0,0,0,114,105,0,0,0,114,106, - 0,0,0,114,24,0,0,0,114,102,0,0,0,114,74,0, - 0,0,114,113,0,0,0,114,49,0,0,0,114,50,0,0, - 0,114,29,0,0,0,114,59,0,0,0,114,6,0,0,0, - 114,115,0,0,0,114,110,0,0,0,218,5,99,111,117,110, - 116,218,6,114,115,112,108,105,116,114,111,0,0,0,114,109, - 0,0,0,218,9,112,97,114,116,105,116,105,111,110,114,67, - 0,0,0,218,15,83,79,85,82,67,69,95,83,85,70,70, - 73,88,69,83,41,10,114,65,0,0,0,114,117,0,0,0, - 90,16,112,121,99,97,99,104,101,95,102,105,108,101,110,97, - 109,101,90,23,102,111,117,110,100,95,105,110,95,112,121,99, - 97,99,104,101,95,112,114,101,102,105,120,90,13,115,116,114, - 105,112,112,101,100,95,112,97,116,104,90,7,112,121,99,97, - 99,104,101,90,9,100,111,116,95,99,111,117,110,116,114,95, - 0,0,0,90,9,111,112,116,95,108,101,118,101,108,90,13, - 98,97,115,101,95,102,105,108,101,110,97,109,101,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,218,17,115,111, - 117,114,99,101,95,102,114,111,109,95,99,97,99,104,101,176, - 1,0,0,115,60,0,0,0,0,9,12,1,8,1,10,1, - 12,1,4,1,10,1,12,1,14,1,16,1,4,1,4,1, - 12,1,8,1,8,1,2,255,8,2,10,1,8,1,16,1, - 10,1,16,1,10,1,4,1,2,255,8,2,16,1,10,1, - 16,2,14,1,114,127,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,5,0,0,0,9,0,0,0,67,0, - 0,0,115,124,0,0,0,116,0,124,0,131,1,100,1,107, - 2,114,16,100,2,83,0,124,0,160,1,100,3,161,1,92, - 3,125,1,125,2,125,3,124,1,114,56,124,3,160,2,161, - 0,100,4,100,5,133,2,25,0,100,6,107,3,114,60,124, - 0,83,0,122,12,116,3,124,0,131,1,125,4,87,0,110, - 34,4,0,116,4,116,5,102,2,121,106,1,0,1,0,1, - 0,124,0,100,2,100,5,133,2,25,0,125,4,89,0,110, - 2,48,0,116,6,124,4,131,1,114,120,124,4,83,0,124, - 0,83,0,41,7,122,188,67,111,110,118,101,114,116,32,97, - 32,98,121,116,101,99,111,100,101,32,102,105,108,101,32,112, - 97,116,104,32,116,111,32,97,32,115,111,117,114,99,101,32, - 112,97,116,104,32,40,105,102,32,112,111,115,115,105,98,108, - 101,41,46,10,10,32,32,32,32,84,104,105,115,32,102,117, - 110,99,116,105,111,110,32,101,120,105,115,116,115,32,112,117, - 114,101,108,121,32,102,111,114,32,98,97,99,107,119,97,114, - 100,115,45,99,111,109,112,97,116,105,98,105,108,105,116,121, - 32,102,111,114,10,32,32,32,32,80,121,73,109,112,111,114, - 116,95,69,120,101,99,67,111,100,101,77,111,100,117,108,101, - 87,105,116,104,70,105,108,101,110,97,109,101,115,40,41,32, - 105,110,32,116,104,101,32,67,32,65,80,73,46,10,10,32, - 32,32,32,114,0,0,0,0,78,114,96,0,0,0,233,253, - 255,255,255,233,255,255,255,255,90,2,112,121,41,7,114,6, - 0,0,0,114,103,0,0,0,218,5,108,111,119,101,114,114, - 127,0,0,0,114,106,0,0,0,114,110,0,0,0,114,80, - 0,0,0,41,5,218,13,98,121,116,101,99,111,100,101,95, - 112,97,116,104,114,118,0,0,0,218,1,95,90,9,101,120, - 116,101,110,115,105,111,110,218,11,115,111,117,114,99,101,95, - 112,97,116,104,114,10,0,0,0,114,10,0,0,0,114,11, - 0,0,0,218,15,95,103,101,116,95,115,111,117,114,99,101, - 102,105,108,101,216,1,0,0,115,20,0,0,0,0,7,12, - 1,4,1,16,1,24,1,4,1,2,1,12,1,16,1,18, - 1,114,134,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,1,0,0,0,8,0,0,0,67,0,0,0,115, - 72,0,0,0,124,0,160,0,116,1,116,2,131,1,161,1, - 114,46,122,10,116,3,124,0,131,1,87,0,83,0,4,0, - 116,4,121,42,1,0,1,0,1,0,89,0,113,68,48,0, - 110,22,124,0,160,0,116,1,116,5,131,1,161,1,114,64, - 124,0,83,0,100,0,83,0,100,0,83,0,114,69,0,0, - 0,41,6,114,58,0,0,0,218,5,116,117,112,108,101,114, - 126,0,0,0,114,120,0,0,0,114,106,0,0,0,114,112, - 0,0,0,41,1,114,119,0,0,0,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,218,11,95,103,101,116,95, - 99,97,99,104,101,100,235,1,0,0,115,16,0,0,0,0, - 1,14,1,2,1,10,1,12,1,8,1,14,1,4,2,114, - 136,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,8,0,0,0,67,0,0,0,115,50,0, - 0,0,122,14,116,0,124,0,131,1,106,1,125,1,87,0, - 110,22,4,0,116,2,121,36,1,0,1,0,1,0,100,1, - 125,1,89,0,110,2,48,0,124,1,100,2,79,0,125,1, - 124,1,83,0,41,3,122,51,67,97,108,99,117,108,97,116, - 101,32,116,104,101,32,109,111,100,101,32,112,101,114,109,105, - 115,115,105,111,110,115,32,102,111,114,32,97,32,98,121,116, - 101,99,111,100,101,32,102,105,108,101,46,114,86,0,0,0, - 233,128,0,0,0,41,3,114,75,0,0,0,114,77,0,0, - 0,114,76,0,0,0,41,2,114,65,0,0,0,114,78,0, - 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,218,10,95,99,97,108,99,95,109,111,100,101,247,1,0, - 0,115,12,0,0,0,0,2,2,1,14,1,12,1,10,3, - 8,1,114,138,0,0,0,99,1,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,8,0,0,0,3,0,0,0, - 115,66,0,0,0,100,6,135,0,102,1,100,2,100,3,132, - 9,125,1,122,10,116,0,106,1,125,2,87,0,110,26,4, - 0,116,2,121,50,1,0,1,0,1,0,100,4,100,5,132, - 0,125,2,89,0,110,2,48,0,124,2,124,1,136,0,131, - 2,1,0,124,1,83,0,41,7,122,252,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,78,99,2,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,4,0,0,0,31,0,0, - 0,115,72,0,0,0,124,1,100,0,117,0,114,16,124,0, - 106,0,125,1,110,32,124,0,106,0,124,1,107,3,114,48, - 116,1,100,1,124,0,106,0,124,1,102,2,22,0,124,1, - 100,2,141,2,130,1,136,0,124,0,124,1,103,2,124,2, - 162,1,82,0,105,0,124,3,164,1,142,1,83,0,41,3, - 78,122,30,108,111,97,100,101,114,32,102,111,114,32,37,115, - 32,99,97,110,110,111,116,32,104,97,110,100,108,101,32,37, - 115,169,1,218,4,110,97,109,101,41,2,114,140,0,0,0, - 218,11,73,109,112,111,114,116,69,114,114,111,114,41,4,218, - 4,115,101,108,102,114,140,0,0,0,218,4,97,114,103,115, - 218,6,107,119,97,114,103,115,169,1,218,6,109,101,116,104, - 111,100,114,10,0,0,0,114,11,0,0,0,218,19,95,99, - 104,101,99,107,95,110,97,109,101,95,119,114,97,112,112,101, - 114,11,2,0,0,115,18,0,0,0,0,1,8,1,8,1, - 10,1,4,1,8,255,2,1,2,255,6,2,122,40,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,99,2,0,0,0,0,0,0,0,0, - 0,0,0,3,0,0,0,7,0,0,0,83,0,0,0,115, - 56,0,0,0,100,1,68,0,93,32,125,2,116,0,124,1, - 124,2,131,2,114,4,116,1,124,0,124,2,116,2,124,1, - 124,2,131,2,131,3,1,0,113,4,124,0,106,3,160,4, - 124,1,106,3,161,1,1,0,100,0,83,0,41,2,78,41, - 4,218,10,95,95,109,111,100,117,108,101,95,95,218,8,95, - 95,110,97,109,101,95,95,218,12,95,95,113,117,97,108,110, - 97,109,101,95,95,218,7,95,95,100,111,99,95,95,41,5, - 218,7,104,97,115,97,116,116,114,218,7,115,101,116,97,116, - 116,114,218,7,103,101,116,97,116,116,114,218,8,95,95,100, - 105,99,116,95,95,218,6,117,112,100,97,116,101,41,3,90, - 3,110,101,119,90,3,111,108,100,114,84,0,0,0,114,10, - 0,0,0,114,10,0,0,0,114,11,0,0,0,218,5,95, - 119,114,97,112,22,2,0,0,115,8,0,0,0,0,1,8, - 1,10,1,20,1,122,26,95,99,104,101,99,107,95,110,97, - 109,101,46,60,108,111,99,97,108,115,62,46,95,119,114,97, - 112,41,1,78,41,3,218,10,95,98,111,111,116,115,116,114, - 97,112,114,157,0,0,0,218,9,78,97,109,101,69,114,114, - 111,114,41,3,114,146,0,0,0,114,147,0,0,0,114,157, - 0,0,0,114,10,0,0,0,114,145,0,0,0,114,11,0, - 0,0,218,11,95,99,104,101,99,107,95,110,97,109,101,3, - 2,0,0,115,14,0,0,0,0,8,14,7,2,1,10,1, - 12,2,14,5,10,1,114,160,0,0,0,99,2,0,0,0, - 0,0,0,0,0,0,0,0,5,0,0,0,6,0,0,0, - 67,0,0,0,115,60,0,0,0,124,0,160,0,124,1,161, - 1,92,2,125,2,125,3,124,2,100,1,117,0,114,56,116, - 1,124,3,131,1,114,56,100,2,125,4,116,2,160,3,124, - 4,160,4,124,3,100,3,25,0,161,1,116,5,161,2,1, - 0,124,2,83,0,41,4,122,155,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,32,98,121,32,100,101,108,101,103,97, - 116,105,110,103,32,116,111,10,32,32,32,32,115,101,108,102, - 46,102,105,110,100,95,108,111,97,100,101,114,40,41,46,10, - 10,32,32,32,32,84,104,105,115,32,109,101,116,104,111,100, - 32,105,115,32,100,101,112,114,101,99,97,116,101,100,32,105, - 110,32,102,97,118,111,114,32,111,102,32,102,105,110,100,101, - 114,46,102,105,110,100,95,115,112,101,99,40,41,46,10,10, - 32,32,32,32,78,122,44,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,114,0,0,0,0,41,6,218,11,102,105,110,100, - 95,108,111,97,100,101,114,114,6,0,0,0,114,98,0,0, - 0,114,99,0,0,0,114,88,0,0,0,218,13,73,109,112, - 111,114,116,87,97,114,110,105,110,103,41,5,114,142,0,0, - 0,218,8,102,117,108,108,110,97,109,101,218,6,108,111,97, - 100,101,114,218,8,112,111,114,116,105,111,110,115,218,3,109, - 115,103,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,218,17,95,102,105,110,100,95,109,111,100,117,108,101,95, - 115,104,105,109,31,2,0,0,115,10,0,0,0,0,10,14, - 1,16,1,4,1,22,1,114,167,0,0,0,99,3,0,0, - 0,0,0,0,0,0,0,0,0,6,0,0,0,4,0,0, - 0,67,0,0,0,115,166,0,0,0,124,0,100,1,100,2, - 133,2,25,0,125,3,124,3,116,0,107,3,114,64,100,3, - 124,1,155,2,100,4,124,3,155,2,157,4,125,4,116,1, - 160,2,100,5,124,4,161,2,1,0,116,3,124,4,102,1, - 105,0,124,2,164,1,142,1,130,1,116,4,124,0,131,1, - 100,6,107,0,114,106,100,7,124,1,155,2,157,2,125,4, - 116,1,160,2,100,5,124,4,161,2,1,0,116,5,124,4, - 131,1,130,1,116,6,124,0,100,2,100,8,133,2,25,0, - 131,1,125,5,124,5,100,9,64,0,114,162,100,10,124,5, - 155,2,100,11,124,1,155,2,157,4,125,4,116,3,124,4, - 102,1,105,0,124,2,164,1,142,1,130,1,124,5,83,0, - 41,12,97,84,2,0,0,80,101,114,102,111,114,109,32,98, - 97,115,105,99,32,118,97,108,105,100,105,116,121,32,99,104, - 101,99,107,105,110,103,32,111,102,32,97,32,112,121,99,32, - 104,101,97,100,101,114,32,97,110,100,32,114,101,116,117,114, - 110,32,116,104,101,32,102,108,97,103,115,32,102,105,101,108, - 100,44,10,32,32,32,32,119,104,105,99,104,32,100,101,116, - 101,114,109,105,110,101,115,32,104,111,119,32,116,104,101,32, - 112,121,99,32,115,104,111,117,108,100,32,98,101,32,102,117, - 114,116,104,101,114,32,118,97,108,105,100,97,116,101,100,32, - 97,103,97,105,110,115,116,32,116,104,101,32,115,111,117,114, - 99,101,46,10,10,32,32,32,32,42,100,97,116,97,42,32, - 105,115,32,116,104,101,32,99,111,110,116,101,110,116,115,32, - 111,102,32,116,104,101,32,112,121,99,32,102,105,108,101,46, - 32,40,79,110,108,121,32,116,104,101,32,102,105,114,115,116, - 32,49,54,32,98,121,116,101,115,32,97,114,101,10,32,32, - 32,32,114,101,113,117,105,114,101,100,44,32,116,104,111,117, - 103,104,46,41,10,10,32,32,32,32,42,110,97,109,101,42, - 32,105,115,32,116,104,101,32,110,97,109,101,32,111,102,32, - 116,104,101,32,109,111,100,117,108,101,32,98,101,105,110,103, - 32,105,109,112,111,114,116,101,100,46,32,73,116,32,105,115, - 32,117,115,101,100,32,102,111,114,32,108,111,103,103,105,110, - 103,46,10,10,32,32,32,32,42,101,120,99,95,100,101,116, - 97,105,108,115,42,32,105,115,32,97,32,100,105,99,116,105, - 111,110,97,114,121,32,112,97,115,115,101,100,32,116,111,32, - 73,109,112,111,114,116,69,114,114,111,114,32,105,102,32,105, - 116,32,114,97,105,115,101,100,32,102,111,114,10,32,32,32, - 32,105,109,112,114,111,118,101,100,32,100,101,98,117,103,103, - 105,110,103,46,10,10,32,32,32,32,73,109,112,111,114,116, - 69,114,114,111,114,32,105,115,32,114,97,105,115,101,100,32, - 119,104,101,110,32,116,104,101,32,109,97,103,105,99,32,110, - 117,109,98,101,114,32,105,115,32,105,110,99,111,114,114,101, - 99,116,32,111,114,32,119,104,101,110,32,116,104,101,32,102, - 108,97,103,115,10,32,32,32,32,102,105,101,108,100,32,105, - 115,32,105,110,118,97,108,105,100,46,32,69,79,70,69,114, - 114,111,114,32,105,115,32,114,97,105,115,101,100,32,119,104, - 101,110,32,116,104,101,32,100,97,116,97,32,105,115,32,102, - 111,117,110,100,32,116,111,32,98,101,32,116,114,117,110,99, - 97,116,101,100,46,10,10,32,32,32,32,78,114,34,0,0, - 0,122,20,98,97,100,32,109,97,103,105,99,32,110,117,109, - 98,101,114,32,105,110,32,122,2,58,32,250,2,123,125,233, - 16,0,0,0,122,40,114,101,97,99,104,101,100,32,69,79, - 70,32,119,104,105,108,101,32,114,101,97,100,105,110,103,32, - 112,121,99,32,104,101,97,100,101,114,32,111,102,32,233,8, - 0,0,0,233,252,255,255,255,122,14,105,110,118,97,108,105, - 100,32,102,108,97,103,115,32,122,4,32,105,110,32,41,7, - 218,12,77,65,71,73,67,95,78,85,77,66,69,82,114,158, - 0,0,0,218,16,95,118,101,114,98,111,115,101,95,109,101, - 115,115,97,103,101,114,141,0,0,0,114,6,0,0,0,218, - 8,69,79,70,69,114,114,111,114,114,44,0,0,0,41,6, - 114,43,0,0,0,114,140,0,0,0,218,11,101,120,99,95, - 100,101,116,97,105,108,115,90,5,109,97,103,105,99,114,116, - 0,0,0,114,22,0,0,0,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,218,13,95,99,108,97,115,115,105, - 102,121,95,112,121,99,48,2,0,0,115,28,0,0,0,0, - 16,12,1,8,1,16,1,12,1,16,1,12,1,10,1,12, - 1,8,1,16,2,8,1,16,1,16,1,114,176,0,0,0, - 99,5,0,0,0,0,0,0,0,0,0,0,0,6,0,0, - 0,4,0,0,0,67,0,0,0,115,120,0,0,0,116,0, - 124,0,100,1,100,2,133,2,25,0,131,1,124,1,100,3, - 64,0,107,3,114,62,100,4,124,3,155,2,157,2,125,5, - 116,1,160,2,100,5,124,5,161,2,1,0,116,3,124,5, - 102,1,105,0,124,4,164,1,142,1,130,1,124,2,100,6, - 117,1,114,116,116,0,124,0,100,2,100,7,133,2,25,0, - 131,1,124,2,100,3,64,0,107,3,114,116,116,3,100,4, - 124,3,155,2,157,2,102,1,105,0,124,4,164,1,142,1, - 130,1,100,6,83,0,41,8,97,7,2,0,0,86,97,108, - 105,100,97,116,101,32,97,32,112,121,99,32,97,103,97,105, - 110,115,116,32,116,104,101,32,115,111,117,114,99,101,32,108, - 97,115,116,45,109,111,100,105,102,105,101,100,32,116,105,109, - 101,46,10,10,32,32,32,32,42,100,97,116,97,42,32,105, - 115,32,116,104,101,32,99,111,110,116,101,110,116,115,32,111, - 102,32,116,104,101,32,112,121,99,32,102,105,108,101,46,32, - 40,79,110,108,121,32,116,104,101,32,102,105,114,115,116,32, - 49,54,32,98,121,116,101,115,32,97,114,101,10,32,32,32, - 32,114,101,113,117,105,114,101,100,46,41,10,10,32,32,32, - 32,42,115,111,117,114,99,101,95,109,116,105,109,101,42,32, - 105,115,32,116,104,101,32,108,97,115,116,32,109,111,100,105, - 102,105,101,100,32,116,105,109,101,115,116,97,109,112,32,111, - 102,32,116,104,101,32,115,111,117,114,99,101,32,102,105,108, - 101,46,10,10,32,32,32,32,42,115,111,117,114,99,101,95, - 115,105,122,101,42,32,105,115,32,78,111,110,101,32,111,114, - 32,116,104,101,32,115,105,122,101,32,111,102,32,116,104,101, - 32,115,111,117,114,99,101,32,102,105,108,101,32,105,110,32, - 98,121,116,101,115,46,10,10,32,32,32,32,42,110,97,109, + 0,0,0,67,0,0,0,115,10,0,0,0,116,0,160,1, + 124,0,161,1,83,0,41,1,122,126,83,116,97,116,32,116, + 104,101,32,112,97,116,104,46,10,10,32,32,32,32,77,97, + 100,101,32,97,32,115,101,112,97,114,97,116,101,32,102,117, + 110,99,116,105,111,110,32,116,111,32,109,97,107,101,32,105, + 116,32,101,97,115,105,101,114,32,116,111,32,111,118,101,114, + 114,105,100,101,32,105,110,32,101,120,112,101,114,105,109,101, + 110,116,115,10,32,32,32,32,40,101,46,103,46,32,99,97, + 99,104,101,32,115,116,97,116,32,114,101,115,117,108,116,115, + 41,46,10,10,32,32,32,32,41,2,114,27,0,0,0,90, + 4,115,116,97,116,114,74,0,0,0,114,10,0,0,0,114, + 10,0,0,0,114,11,0,0,0,218,10,95,112,97,116,104, + 95,115,116,97,116,135,0,0,0,115,2,0,0,0,0,7, + 114,78,0,0,0,99,2,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,8,0,0,0,67,0,0,0,115,48, + 0,0,0,122,12,116,0,124,0,131,1,125,2,87,0,110, + 20,4,0,116,1,121,32,1,0,1,0,1,0,89,0,100, + 1,83,0,48,0,124,2,106,2,100,2,64,0,124,1,107, + 2,83,0,41,3,122,49,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,70,105,0,240,0,0,41,3, + 114,78,0,0,0,218,7,79,83,69,114,114,111,114,218,7, + 115,116,95,109,111,100,101,41,3,114,68,0,0,0,218,4, + 109,111,100,101,90,9,115,116,97,116,95,105,110,102,111,114, + 10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,18, + 95,112,97,116,104,95,105,115,95,109,111,100,101,95,116,121, + 112,101,145,0,0,0,115,10,0,0,0,0,2,2,1,12, + 1,12,1,8,1,114,82,0,0,0,99,1,0,0,0,0, + 0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,67, + 0,0,0,115,10,0,0,0,116,0,124,0,100,1,131,2, + 83,0,41,2,122,31,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,41,1,114,82,0,0, + 0,114,74,0,0,0,114,10,0,0,0,114,10,0,0,0, + 114,11,0,0,0,218,12,95,112,97,116,104,95,105,115,102, + 105,108,101,154,0,0,0,115,2,0,0,0,0,2,114,83, + 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,3,0,0,0,67,0,0,0,115,22,0,0, + 0,124,0,115,12,116,0,160,1,161,0,125,0,116,2,124, + 0,100,1,131,2,83,0,41,2,122,30,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,41,3, + 114,27,0,0,0,218,6,103,101,116,99,119,100,114,82,0, + 0,0,114,74,0,0,0,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,218,11,95,112,97,116,104,95,105,115, + 100,105,114,159,0,0,0,115,6,0,0,0,0,2,4,1, + 8,1,114,85,0,0,0,99,1,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,4,0,0,0,67,0,0,0, + 115,62,0,0,0,124,0,115,8,100,1,83,0,116,0,160, + 1,124,0,161,1,100,2,25,0,160,2,100,3,100,4,161, + 2,125,1,116,3,124,1,131,1,100,5,107,4,111,60,124, + 1,160,4,100,6,161,1,112,60,124,1,160,5,100,4,161, + 1,83,0,41,7,250,30,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,97,98,115,46,70,114,0,0,0,0,114,2,0,0,0, + 114,1,0,0,0,114,4,0,0,0,122,2,92,92,41,6, + 114,27,0,0,0,114,59,0,0,0,218,7,114,101,112,108, + 97,99,101,114,6,0,0,0,114,32,0,0,0,114,61,0, + 0,0,41,2,114,68,0,0,0,114,67,0,0,0,114,10, + 0,0,0,114,10,0,0,0,114,11,0,0,0,218,11,95, + 112,97,116,104,95,105,115,97,98,115,167,0,0,0,115,8, + 0,0,0,0,2,4,1,4,1,22,1,114,88,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, + 0,3,0,0,0,67,0,0,0,115,10,0,0,0,124,0, + 160,0,116,1,161,1,83,0,41,1,114,86,0,0,0,41, + 2,114,32,0,0,0,114,53,0,0,0,114,74,0,0,0, + 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,114, + 88,0,0,0,175,0,0,0,115,2,0,0,0,0,2,233, + 182,1,0,0,99,3,0,0,0,0,0,0,0,0,0,0, + 0,6,0,0,0,11,0,0,0,67,0,0,0,115,178,0, + 0,0,100,1,160,0,124,0,116,1,124,0,131,1,161,2, + 125,3,116,2,160,3,124,3,116,2,106,4,116,2,106,5, + 66,0,116,2,106,6,66,0,124,2,100,2,64,0,161,3, + 125,4,122,70,116,7,160,8,124,4,100,3,161,2,143,26, + 125,5,124,5,160,9,124,1,161,1,1,0,87,0,100,4, + 4,0,4,0,131,3,1,0,110,16,49,0,115,94,48,0, + 1,0,1,0,1,0,89,0,1,0,116,2,160,10,124,3, + 124,0,161,2,1,0,87,0,110,54,4,0,116,11,121,172, + 1,0,1,0,1,0,122,14,116,2,160,12,124,3,161,1, + 1,0,87,0,110,18,4,0,116,11,121,164,1,0,1,0, + 1,0,89,0,110,2,48,0,130,0,89,0,110,2,48,0, + 100,4,83,0,41,5,122,162,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,250,5,123,125,46,123, + 125,114,89,0,0,0,90,2,119,98,78,41,13,218,6,102, + 111,114,109,97,116,218,2,105,100,114,27,0,0,0,90,4, + 111,112,101,110,90,6,79,95,69,88,67,76,90,7,79,95, + 67,82,69,65,84,90,8,79,95,87,82,79,78,76,89,218, + 3,95,105,111,218,6,70,105,108,101,73,79,218,5,119,114, + 105,116,101,114,87,0,0,0,114,79,0,0,0,90,6,117, + 110,108,105,110,107,41,6,114,68,0,0,0,114,46,0,0, + 0,114,81,0,0,0,90,8,112,97,116,104,95,116,109,112, + 90,2,102,100,218,4,102,105,108,101,114,10,0,0,0,114, + 10,0,0,0,114,11,0,0,0,218,13,95,119,114,105,116, + 101,95,97,116,111,109,105,99,180,0,0,0,115,28,0,0, + 0,0,5,16,1,6,1,22,255,4,2,2,3,14,1,40, + 1,16,1,12,1,2,1,14,1,12,1,6,1,114,97,0, + 0,0,105,97,13,0,0,114,48,0,0,0,114,38,0,0, + 0,115,2,0,0,0,13,10,90,11,95,95,112,121,99,97, + 99,104,101,95,95,122,4,111,112,116,45,122,3,46,112,121, + 122,4,46,112,121,99,41,1,218,12,111,112,116,105,109,105, + 122,97,116,105,111,110,99,2,0,0,0,0,0,0,0,1, + 0,0,0,12,0,0,0,5,0,0,0,67,0,0,0,115, + 88,1,0,0,124,1,100,1,117,1,114,52,116,0,160,1, + 100,2,116,2,161,2,1,0,124,2,100,1,117,1,114,40, + 100,3,125,3,116,3,124,3,131,1,130,1,124,1,114,48, + 100,4,110,2,100,5,125,2,116,4,160,5,124,0,161,1, + 125,0,116,6,124,0,131,1,92,2,125,4,125,5,124,5, + 160,7,100,6,161,1,92,3,125,6,125,7,125,8,116,8, + 106,9,106,10,125,9,124,9,100,1,117,0,114,114,116,11, + 100,7,131,1,130,1,100,4,160,12,124,6,114,126,124,6, + 110,2,124,8,124,7,124,9,103,3,161,1,125,10,124,2, + 100,1,117,0,114,172,116,8,106,13,106,14,100,8,107,2, + 114,164,100,4,125,2,110,8,116,8,106,13,106,14,125,2, + 116,15,124,2,131,1,125,2,124,2,100,4,107,3,114,224, + 124,2,160,16,161,0,115,210,116,17,100,9,160,18,124,2, + 161,1,131,1,130,1,100,10,160,18,124,10,116,19,124,2, + 161,3,125,10,124,10,116,20,100,8,25,0,23,0,125,11, + 116,8,106,21,100,1,117,1,144,1,114,76,116,22,124,4, + 131,1,144,1,115,16,116,23,116,4,160,24,161,0,124,4, + 131,2,125,4,124,4,100,5,25,0,100,11,107,2,144,1, + 114,56,124,4,100,8,25,0,116,25,118,1,144,1,114,56, + 124,4,100,12,100,1,133,2,25,0,125,4,116,23,116,8, + 106,21,124,4,160,26,116,25,161,1,124,11,131,3,83,0, + 116,23,124,4,116,27,124,11,131,3,83,0,41,13,97,254, + 2,0,0,71,105,118,101,110,32,116,104,101,32,112,97,116, + 104,32,116,111,32,97,32,46,112,121,32,102,105,108,101,44, + 32,114,101,116,117,114,110,32,116,104,101,32,112,97,116,104, + 32,116,111,32,105,116,115,32,46,112,121,99,32,102,105,108, + 101,46,10,10,32,32,32,32,84,104,101,32,46,112,121,32, + 102,105,108,101,32,100,111,101,115,32,110,111,116,32,110,101, + 101,100,32,116,111,32,101,120,105,115,116,59,32,116,104,105, + 115,32,115,105,109,112,108,121,32,114,101,116,117,114,110,115, + 32,116,104,101,32,112,97,116,104,32,116,111,32,116,104,101, + 10,32,32,32,32,46,112,121,99,32,102,105,108,101,32,99, + 97,108,99,117,108,97,116,101,100,32,97,115,32,105,102,32, + 116,104,101,32,46,112,121,32,102,105,108,101,32,119,101,114, + 101,32,105,109,112,111,114,116,101,100,46,10,10,32,32,32, + 32,84,104,101,32,39,111,112,116,105,109,105,122,97,116,105, + 111,110,39,32,112,97,114,97,109,101,116,101,114,32,99,111, + 110,116,114,111,108,115,32,116,104,101,32,112,114,101,115,117, + 109,101,100,32,111,112,116,105,109,105,122,97,116,105,111,110, + 32,108,101,118,101,108,32,111,102,10,32,32,32,32,116,104, + 101,32,98,121,116,101,99,111,100,101,32,102,105,108,101,46, + 32,73,102,32,39,111,112,116,105,109,105,122,97,116,105,111, + 110,39,32,105,115,32,110,111,116,32,78,111,110,101,44,32, + 116,104,101,32,115,116,114,105,110,103,32,114,101,112,114,101, + 115,101,110,116,97,116,105,111,110,10,32,32,32,32,111,102, + 32,116,104,101,32,97,114,103,117,109,101,110,116,32,105,115, + 32,116,97,107,101,110,32,97,110,100,32,118,101,114,105,102, + 105,101,100,32,116,111,32,98,101,32,97,108,112,104,97,110, + 117,109,101,114,105,99,32,40,101,108,115,101,32,86,97,108, + 117,101,69,114,114,111,114,10,32,32,32,32,105,115,32,114, + 97,105,115,101,100,41,46,10,10,32,32,32,32,84,104,101, + 32,100,101,98,117,103,95,111,118,101,114,114,105,100,101,32, + 112,97,114,97,109,101,116,101,114,32,105,115,32,100,101,112, + 114,101,99,97,116,101,100,46,32,73,102,32,100,101,98,117, + 103,95,111,118,101,114,114,105,100,101,32,105,115,32,110,111, + 116,32,78,111,110,101,44,10,32,32,32,32,97,32,84,114, + 117,101,32,118,97,108,117,101,32,105,115,32,116,104,101,32, + 115,97,109,101,32,97,115,32,115,101,116,116,105,110,103,32, + 39,111,112,116,105,109,105,122,97,116,105,111,110,39,32,116, + 111,32,116,104,101,32,101,109,112,116,121,32,115,116,114,105, + 110,103,10,32,32,32,32,119,104,105,108,101,32,97,32,70, + 97,108,115,101,32,118,97,108,117,101,32,105,115,32,101,113, + 117,105,118,97,108,101,110,116,32,116,111,32,115,101,116,116, + 105,110,103,32,39,111,112,116,105,109,105,122,97,116,105,111, + 110,39,32,116,111,32,39,49,39,46,10,10,32,32,32,32, + 73,102,32,115,121,115,46,105,109,112,108,101,109,101,110,116, + 97,116,105,111,110,46,99,97,99,104,101,95,116,97,103,32, + 105,115,32,78,111,110,101,32,116,104,101,110,32,78,111,116, + 73,109,112,108,101,109,101,110,116,101,100,69,114,114,111,114, + 32,105,115,32,114,97,105,115,101,100,46,10,10,32,32,32, + 32,78,122,70,116,104,101,32,100,101,98,117,103,95,111,118, + 101,114,114,105,100,101,32,112,97,114,97,109,101,116,101,114, + 32,105,115,32,100,101,112,114,101,99,97,116,101,100,59,32, + 117,115,101,32,39,111,112,116,105,109,105,122,97,116,105,111, + 110,39,32,105,110,115,116,101,97,100,122,50,100,101,98,117, + 103,95,111,118,101,114,114,105,100,101,32,111,114,32,111,112, + 116,105,109,105,122,97,116,105,111,110,32,109,117,115,116,32, + 98,101,32,115,101,116,32,116,111,32,78,111,110,101,114,14, + 0,0,0,114,4,0,0,0,218,1,46,250,36,115,121,115, + 46,105,109,112,108,101,109,101,110,116,97,116,105,111,110,46, + 99,97,99,104,101,95,116,97,103,32,105,115,32,78,111,110, + 101,114,0,0,0,0,122,24,123,33,114,125,32,105,115,32, + 110,111,116,32,97,108,112,104,97,110,117,109,101,114,105,99, + 122,7,123,125,46,123,125,123,125,114,16,0,0,0,114,48, + 0,0,0,41,28,218,9,95,119,97,114,110,105,110,103,115, + 218,4,119,97,114,110,218,18,68,101,112,114,101,99,97,116, + 105,111,110,87,97,114,110,105,110,103,218,9,84,121,112,101, + 69,114,114,111,114,114,27,0,0,0,218,6,102,115,112,97, + 116,104,114,77,0,0,0,218,10,114,112,97,114,116,105,116, + 105,111,110,114,24,0,0,0,218,14,105,109,112,108,101,109, + 101,110,116,97,116,105,111,110,218,9,99,97,99,104,101,95, + 116,97,103,218,19,78,111,116,73,109,112,108,101,109,101,110, + 116,101,100,69,114,114,111,114,114,65,0,0,0,114,25,0, + 0,0,218,8,111,112,116,105,109,105,122,101,218,3,115,116, + 114,218,7,105,115,97,108,110,117,109,218,10,86,97,108,117, + 101,69,114,114,111,114,114,91,0,0,0,218,4,95,79,80, + 84,218,17,66,89,84,69,67,79,68,69,95,83,85,70,70, + 73,88,69,83,218,14,112,121,99,97,99,104,101,95,112,114, + 101,102,105,120,114,88,0,0,0,114,70,0,0,0,114,84, + 0,0,0,114,53,0,0,0,218,6,108,115,116,114,105,112, + 218,8,95,80,89,67,65,67,72,69,41,12,114,68,0,0, + 0,90,14,100,101,98,117,103,95,111,118,101,114,114,105,100, + 101,114,98,0,0,0,218,7,109,101,115,115,97,103,101,218, + 4,104,101,97,100,114,69,0,0,0,90,4,98,97,115,101, + 114,9,0,0,0,218,4,114,101,115,116,90,3,116,97,103, + 90,15,97,108,109,111,115,116,95,102,105,108,101,110,97,109, + 101,218,8,102,105,108,101,110,97,109,101,114,10,0,0,0, + 114,10,0,0,0,114,11,0,0,0,218,17,99,97,99,104, + 101,95,102,114,111,109,95,115,111,117,114,99,101,105,1,0, + 0,115,72,0,0,0,0,18,8,1,6,1,2,255,4,2, + 8,1,4,1,8,1,12,1,10,1,12,1,16,1,8,1, + 8,1,8,1,24,1,8,1,12,1,6,2,8,1,8,1, + 8,1,8,1,14,1,14,1,12,1,12,9,10,1,14,5, + 28,1,12,4,2,1,4,1,8,1,2,253,4,5,114,123, + 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, + 10,0,0,0,5,0,0,0,67,0,0,0,115,46,1,0, + 0,116,0,106,1,106,2,100,1,117,0,114,20,116,3,100, + 2,131,1,130,1,116,4,160,5,124,0,161,1,125,0,116, + 6,124,0,131,1,92,2,125,1,125,2,100,3,125,3,116, + 0,106,7,100,1,117,1,114,102,116,0,106,7,160,8,116, + 9,161,1,125,4,124,1,160,10,124,4,116,11,23,0,161, + 1,114,102,124,1,116,12,124,4,131,1,100,1,133,2,25, + 0,125,1,100,4,125,3,124,3,115,144,116,6,124,1,131, + 1,92,2,125,1,125,5,124,5,116,13,107,3,114,144,116, + 14,116,13,155,0,100,5,124,0,155,2,157,3,131,1,130, + 1,124,2,160,15,100,6,161,1,125,6,124,6,100,7,118, + 1,114,178,116,14,100,8,124,2,155,2,157,2,131,1,130, + 1,110,92,124,6,100,9,107,2,144,1,114,14,124,2,160, + 16,100,6,100,10,161,2,100,11,25,0,125,7,124,7,160, + 10,116,17,161,1,115,228,116,14,100,12,116,17,155,2,157, + 2,131,1,130,1,124,7,116,12,116,17,131,1,100,1,133, + 2,25,0,125,8,124,8,160,18,161,0,144,1,115,14,116, + 14,100,13,124,7,155,2,100,14,157,3,131,1,130,1,124, + 2,160,19,100,6,161,1,100,15,25,0,125,9,116,20,124, + 1,124,9,116,21,100,15,25,0,23,0,131,2,83,0,41, + 16,97,110,1,0,0,71,105,118,101,110,32,116,104,101,32, + 112,97,116,104,32,116,111,32,97,32,46,112,121,99,46,32, + 102,105,108,101,44,32,114,101,116,117,114,110,32,116,104,101, + 32,112,97,116,104,32,116,111,32,105,116,115,32,46,112,121, + 32,102,105,108,101,46,10,10,32,32,32,32,84,104,101,32, + 46,112,121,99,32,102,105,108,101,32,100,111,101,115,32,110, + 111,116,32,110,101,101,100,32,116,111,32,101,120,105,115,116, + 59,32,116,104,105,115,32,115,105,109,112,108,121,32,114,101, + 116,117,114,110,115,32,116,104,101,32,112,97,116,104,32,116, + 111,10,32,32,32,32,116,104,101,32,46,112,121,32,102,105, + 108,101,32,99,97,108,99,117,108,97,116,101,100,32,116,111, + 32,99,111,114,114,101,115,112,111,110,100,32,116,111,32,116, + 104,101,32,46,112,121,99,32,102,105,108,101,46,32,32,73, + 102,32,112,97,116,104,32,100,111,101,115,10,32,32,32,32, + 110,111,116,32,99,111,110,102,111,114,109,32,116,111,32,80, + 69,80,32,51,49,52,55,47,52,56,56,32,102,111,114,109, + 97,116,44,32,86,97,108,117,101,69,114,114,111,114,32,119, + 105,108,108,32,98,101,32,114,97,105,115,101,100,46,32,73, + 102,10,32,32,32,32,115,121,115,46,105,109,112,108,101,109, + 101,110,116,97,116,105,111,110,46,99,97,99,104,101,95,116, + 97,103,32,105,115,32,78,111,110,101,32,116,104,101,110,32, + 78,111,116,73,109,112,108,101,109,101,110,116,101,100,69,114, + 114,111,114,32,105,115,32,114,97,105,115,101,100,46,10,10, + 32,32,32,32,78,114,100,0,0,0,70,84,122,31,32,110, + 111,116,32,98,111,116,116,111,109,45,108,101,118,101,108,32, + 100,105,114,101,99,116,111,114,121,32,105,110,32,114,99,0, + 0,0,62,2,0,0,0,114,48,0,0,0,233,3,0,0, + 0,122,29,101,120,112,101,99,116,101,100,32,111,110,108,121, + 32,50,32,111,114,32,51,32,100,111,116,115,32,105,110,32, + 114,124,0,0,0,114,48,0,0,0,233,254,255,255,255,122, + 53,111,112,116,105,109,105,122,97,116,105,111,110,32,112,111, + 114,116,105,111,110,32,111,102,32,102,105,108,101,110,97,109, + 101,32,100,111,101,115,32,110,111,116,32,115,116,97,114,116, + 32,119,105,116,104,32,122,19,111,112,116,105,109,105,122,97, + 116,105,111,110,32,108,101,118,101,108,32,122,29,32,105,115, + 32,110,111,116,32,97,110,32,97,108,112,104,97,110,117,109, + 101,114,105,99,32,118,97,108,117,101,114,0,0,0,0,41, + 22,114,24,0,0,0,114,107,0,0,0,114,108,0,0,0, + 114,109,0,0,0,114,27,0,0,0,114,105,0,0,0,114, + 77,0,0,0,114,116,0,0,0,114,52,0,0,0,114,53, + 0,0,0,114,32,0,0,0,114,62,0,0,0,114,6,0, + 0,0,114,118,0,0,0,114,113,0,0,0,218,5,99,111, + 117,110,116,218,6,114,115,112,108,105,116,114,114,0,0,0, + 114,112,0,0,0,218,9,112,97,114,116,105,116,105,111,110, + 114,70,0,0,0,218,15,83,79,85,82,67,69,95,83,85, + 70,70,73,88,69,83,41,10,114,68,0,0,0,114,120,0, + 0,0,90,16,112,121,99,97,99,104,101,95,102,105,108,101, + 110,97,109,101,90,23,102,111,117,110,100,95,105,110,95,112, + 121,99,97,99,104,101,95,112,114,101,102,105,120,90,13,115, + 116,114,105,112,112,101,100,95,112,97,116,104,90,7,112,121, + 99,97,99,104,101,90,9,100,111,116,95,99,111,117,110,116, + 114,98,0,0,0,90,9,111,112,116,95,108,101,118,101,108, + 90,13,98,97,115,101,95,102,105,108,101,110,97,109,101,114, + 10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,17, + 115,111,117,114,99,101,95,102,114,111,109,95,99,97,99,104, + 101,176,1,0,0,115,60,0,0,0,0,9,12,1,8,1, + 10,1,12,1,4,1,10,1,12,1,14,1,16,1,4,1, + 4,1,12,1,8,1,8,1,2,255,8,2,10,1,8,1, + 16,1,10,1,16,1,10,1,4,1,2,255,8,2,16,1, + 10,1,16,2,14,1,114,130,0,0,0,99,1,0,0,0, + 0,0,0,0,0,0,0,0,5,0,0,0,9,0,0,0, + 67,0,0,0,115,124,0,0,0,116,0,124,0,131,1,100, + 1,107,2,114,16,100,2,83,0,124,0,160,1,100,3,161, + 1,92,3,125,1,125,2,125,3,124,1,114,56,124,3,160, + 2,161,0,100,4,100,5,133,2,25,0,100,6,107,3,114, + 60,124,0,83,0,122,12,116,3,124,0,131,1,125,4,87, + 0,110,34,4,0,116,4,116,5,102,2,121,106,1,0,1, + 0,1,0,124,0,100,2,100,5,133,2,25,0,125,4,89, + 0,110,2,48,0,116,6,124,4,131,1,114,120,124,4,83, + 0,124,0,83,0,41,7,122,188,67,111,110,118,101,114,116, + 32,97,32,98,121,116,101,99,111,100,101,32,102,105,108,101, + 32,112,97,116,104,32,116,111,32,97,32,115,111,117,114,99, + 101,32,112,97,116,104,32,40,105,102,32,112,111,115,115,105, + 98,108,101,41,46,10,10,32,32,32,32,84,104,105,115,32, + 102,117,110,99,116,105,111,110,32,101,120,105,115,116,115,32, + 112,117,114,101,108,121,32,102,111,114,32,98,97,99,107,119, + 97,114,100,115,45,99,111,109,112,97,116,105,98,105,108,105, + 116,121,32,102,111,114,10,32,32,32,32,80,121,73,109,112, + 111,114,116,95,69,120,101,99,67,111,100,101,77,111,100,117, + 108,101,87,105,116,104,70,105,108,101,110,97,109,101,115,40, + 41,32,105,110,32,116,104,101,32,67,32,65,80,73,46,10, + 10,32,32,32,32,114,0,0,0,0,78,114,99,0,0,0, + 233,253,255,255,255,233,255,255,255,255,90,2,112,121,41,7, + 114,6,0,0,0,114,106,0,0,0,218,5,108,111,119,101, + 114,114,130,0,0,0,114,109,0,0,0,114,113,0,0,0, + 114,83,0,0,0,41,5,218,13,98,121,116,101,99,111,100, + 101,95,112,97,116,104,114,121,0,0,0,218,1,95,218,9, + 101,120,116,101,110,115,105,111,110,218,11,115,111,117,114,99, + 101,95,112,97,116,104,114,10,0,0,0,114,10,0,0,0, + 114,11,0,0,0,218,15,95,103,101,116,95,115,111,117,114, + 99,101,102,105,108,101,216,1,0,0,115,20,0,0,0,0, + 7,12,1,4,1,16,1,24,1,4,1,2,1,12,1,16, + 1,18,1,114,138,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,8,0,0,0,67,0,0, + 0,115,72,0,0,0,124,0,160,0,116,1,116,2,131,1, + 161,1,114,46,122,10,116,3,124,0,131,1,87,0,83,0, + 4,0,116,4,121,42,1,0,1,0,1,0,89,0,113,68, + 48,0,110,22,124,0,160,0,116,1,116,5,131,1,161,1, + 114,64,124,0,83,0,100,0,83,0,100,0,83,0,114,72, + 0,0,0,41,6,114,61,0,0,0,218,5,116,117,112,108, + 101,114,129,0,0,0,114,123,0,0,0,114,109,0,0,0, + 114,115,0,0,0,41,1,114,122,0,0,0,114,10,0,0, + 0,114,10,0,0,0,114,11,0,0,0,218,11,95,103,101, + 116,95,99,97,99,104,101,100,235,1,0,0,115,16,0,0, + 0,0,1,14,1,2,1,10,1,12,1,8,1,14,1,4, + 2,114,140,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,8,0,0,0,67,0,0,0,115, + 50,0,0,0,122,14,116,0,124,0,131,1,106,1,125,1, + 87,0,110,22,4,0,116,2,121,36,1,0,1,0,1,0, + 100,1,125,1,89,0,110,2,48,0,124,1,100,2,79,0, + 125,1,124,1,83,0,41,3,122,51,67,97,108,99,117,108, + 97,116,101,32,116,104,101,32,109,111,100,101,32,112,101,114, + 109,105,115,115,105,111,110,115,32,102,111,114,32,97,32,98, + 121,116,101,99,111,100,101,32,102,105,108,101,46,114,89,0, + 0,0,233,128,0,0,0,41,3,114,78,0,0,0,114,80, + 0,0,0,114,79,0,0,0,41,2,114,68,0,0,0,114, + 81,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, + 0,0,0,218,10,95,99,97,108,99,95,109,111,100,101,247, + 1,0,0,115,12,0,0,0,0,2,2,1,14,1,12,1, + 10,3,8,1,114,142,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,8,0,0,0,3,0, + 0,0,115,66,0,0,0,100,6,135,0,102,1,100,2,100, + 3,132,9,125,1,122,10,116,0,106,1,125,2,87,0,110, + 26,4,0,116,2,121,50,1,0,1,0,1,0,100,4,100, + 5,132,0,125,2,89,0,110,2,48,0,124,2,124,1,136, + 0,131,2,1,0,124,1,83,0,41,7,122,252,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,78,99,2,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,31, + 0,0,0,115,72,0,0,0,124,1,100,0,117,0,114,16, + 124,0,106,0,125,1,110,32,124,0,106,0,124,1,107,3, + 114,48,116,1,100,1,124,0,106,0,124,1,102,2,22,0, + 124,1,100,2,141,2,130,1,136,0,124,0,124,1,103,2, + 124,2,162,1,82,0,105,0,124,3,164,1,142,1,83,0, + 41,3,78,122,30,108,111,97,100,101,114,32,102,111,114,32, + 37,115,32,99,97,110,110,111,116,32,104,97,110,100,108,101, + 32,37,115,169,1,218,4,110,97,109,101,41,2,114,144,0, + 0,0,218,11,73,109,112,111,114,116,69,114,114,111,114,41, + 4,218,4,115,101,108,102,114,144,0,0,0,218,4,97,114, + 103,115,218,6,107,119,97,114,103,115,169,1,218,6,109,101, + 116,104,111,100,114,10,0,0,0,114,11,0,0,0,218,19, + 95,99,104,101,99,107,95,110,97,109,101,95,119,114,97,112, + 112,101,114,11,2,0,0,115,18,0,0,0,0,1,8,1, + 8,1,10,1,4,1,8,255,2,1,2,255,6,2,122,40, + 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,99,2,0,0,0,0,0,0, + 0,0,0,0,0,3,0,0,0,7,0,0,0,83,0,0, + 0,115,56,0,0,0,100,1,68,0,93,32,125,2,116,0, + 124,1,124,2,131,2,114,4,116,1,124,0,124,2,116,2, + 124,1,124,2,131,2,131,3,1,0,113,4,124,0,106,3, + 160,4,124,1,106,3,161,1,1,0,100,0,83,0,41,2, + 78,41,4,218,10,95,95,109,111,100,117,108,101,95,95,218, + 8,95,95,110,97,109,101,95,95,218,12,95,95,113,117,97, + 108,110,97,109,101,95,95,218,7,95,95,100,111,99,95,95, + 41,5,218,7,104,97,115,97,116,116,114,218,7,115,101,116, + 97,116,116,114,218,7,103,101,116,97,116,116,114,218,8,95, + 95,100,105,99,116,95,95,218,6,117,112,100,97,116,101,41, + 3,90,3,110,101,119,90,3,111,108,100,114,87,0,0,0, + 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,218, + 5,95,119,114,97,112,22,2,0,0,115,8,0,0,0,0, + 1,8,1,10,1,20,1,122,26,95,99,104,101,99,107,95, + 110,97,109,101,46,60,108,111,99,97,108,115,62,46,95,119, + 114,97,112,41,1,78,41,3,218,10,95,98,111,111,116,115, + 116,114,97,112,114,161,0,0,0,218,9,78,97,109,101,69, + 114,114,111,114,41,3,114,150,0,0,0,114,151,0,0,0, + 114,161,0,0,0,114,10,0,0,0,114,149,0,0,0,114, + 11,0,0,0,218,11,95,99,104,101,99,107,95,110,97,109, + 101,3,2,0,0,115,14,0,0,0,0,8,14,7,2,1, + 10,1,12,2,14,5,10,1,114,164,0,0,0,99,2,0, + 0,0,0,0,0,0,0,0,0,0,5,0,0,0,6,0, + 0,0,67,0,0,0,115,60,0,0,0,124,0,160,0,124, + 1,161,1,92,2,125,2,125,3,124,2,100,1,117,0,114, + 56,116,1,124,3,131,1,114,56,100,2,125,4,116,2,160, + 3,124,4,160,4,124,3,100,3,25,0,161,1,116,5,161, + 2,1,0,124,2,83,0,41,4,122,155,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,32,98,121,32,100,101,108,101, + 103,97,116,105,110,103,32,116,111,10,32,32,32,32,115,101, + 108,102,46,102,105,110,100,95,108,111,97,100,101,114,40,41, + 46,10,10,32,32,32,32,84,104,105,115,32,109,101,116,104, + 111,100,32,105,115,32,100,101,112,114,101,99,97,116,101,100, + 32,105,110,32,102,97,118,111,114,32,111,102,32,102,105,110, + 100,101,114,46,102,105,110,100,95,115,112,101,99,40,41,46, + 10,10,32,32,32,32,78,122,44,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,114,0,0,0,0,41,6,218,11,102,105, + 110,100,95,108,111,97,100,101,114,114,6,0,0,0,114,101, + 0,0,0,114,102,0,0,0,114,91,0,0,0,218,13,73, + 109,112,111,114,116,87,97,114,110,105,110,103,41,5,114,146, + 0,0,0,218,8,102,117,108,108,110,97,109,101,218,6,108, + 111,97,100,101,114,218,8,112,111,114,116,105,111,110,115,218, + 3,109,115,103,114,10,0,0,0,114,10,0,0,0,114,11, + 0,0,0,218,17,95,102,105,110,100,95,109,111,100,117,108, + 101,95,115,104,105,109,31,2,0,0,115,10,0,0,0,0, + 10,14,1,16,1,4,1,22,1,114,171,0,0,0,99,3, + 0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,4, + 0,0,0,67,0,0,0,115,166,0,0,0,124,0,100,1, + 100,2,133,2,25,0,125,3,124,3,116,0,107,3,114,64, + 100,3,124,1,155,2,100,4,124,3,155,2,157,4,125,4, + 116,1,160,2,100,5,124,4,161,2,1,0,116,3,124,4, + 102,1,105,0,124,2,164,1,142,1,130,1,116,4,124,0, + 131,1,100,6,107,0,114,106,100,7,124,1,155,2,157,2, + 125,4,116,1,160,2,100,5,124,4,161,2,1,0,116,5, + 124,4,131,1,130,1,116,6,124,0,100,2,100,8,133,2, + 25,0,131,1,125,5,124,5,100,9,64,0,114,162,100,10, + 124,5,155,2,100,11,124,1,155,2,157,4,125,4,116,3, + 124,4,102,1,105,0,124,2,164,1,142,1,130,1,124,5, + 83,0,41,12,97,84,2,0,0,80,101,114,102,111,114,109, + 32,98,97,115,105,99,32,118,97,108,105,100,105,116,121,32, + 99,104,101,99,107,105,110,103,32,111,102,32,97,32,112,121, + 99,32,104,101,97,100,101,114,32,97,110,100,32,114,101,116, + 117,114,110,32,116,104,101,32,102,108,97,103,115,32,102,105, + 101,108,100,44,10,32,32,32,32,119,104,105,99,104,32,100, + 101,116,101,114,109,105,110,101,115,32,104,111,119,32,116,104, + 101,32,112,121,99,32,115,104,111,117,108,100,32,98,101,32, + 102,117,114,116,104,101,114,32,118,97,108,105,100,97,116,101, + 100,32,97,103,97,105,110,115,116,32,116,104,101,32,115,111, + 117,114,99,101,46,10,10,32,32,32,32,42,100,97,116,97, + 42,32,105,115,32,116,104,101,32,99,111,110,116,101,110,116, + 115,32,111,102,32,116,104,101,32,112,121,99,32,102,105,108, + 101,46,32,40,79,110,108,121,32,116,104,101,32,102,105,114, + 115,116,32,49,54,32,98,121,116,101,115,32,97,114,101,10, + 32,32,32,32,114,101,113,117,105,114,101,100,44,32,116,104, + 111,117,103,104,46,41,10,10,32,32,32,32,42,110,97,109, 101,42,32,105,115,32,116,104,101,32,110,97,109,101,32,111, 102,32,116,104,101,32,109,111,100,117,108,101,32,98,101,105, 110,103,32,105,109,112,111,114,116,101,100,46,32,73,116,32, @@ -816,1852 +752,2072 @@ 111,32,73,109,112,111,114,116,69,114,114,111,114,32,105,102, 32,105,116,32,114,97,105,115,101,100,32,102,111,114,10,32, 32,32,32,105,109,112,114,111,118,101,100,32,100,101,98,117, - 103,103,105,110,103,46,10,10,32,32,32,32,65,110,32,73, - 109,112,111,114,116,69,114,114,111,114,32,105,115,32,114,97, - 105,115,101,100,32,105,102,32,116,104,101,32,98,121,116,101, - 99,111,100,101,32,105,115,32,115,116,97,108,101,46,10,10, - 32,32,32,32,114,170,0,0,0,233,12,0,0,0,114,33, - 0,0,0,122,22,98,121,116,101,99,111,100,101,32,105,115, - 32,115,116,97,108,101,32,102,111,114,32,114,168,0,0,0, - 78,114,169,0,0,0,41,4,114,44,0,0,0,114,158,0, - 0,0,114,173,0,0,0,114,141,0,0,0,41,6,114,43, - 0,0,0,218,12,115,111,117,114,99,101,95,109,116,105,109, - 101,218,11,115,111,117,114,99,101,95,115,105,122,101,114,140, - 0,0,0,114,175,0,0,0,114,116,0,0,0,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,218,23,95,118, - 97,108,105,100,97,116,101,95,116,105,109,101,115,116,97,109, - 112,95,112,121,99,81,2,0,0,115,16,0,0,0,0,19, - 24,1,10,1,12,1,16,1,8,1,22,255,2,2,114,180, - 0,0,0,99,4,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,4,0,0,0,67,0,0,0,115,42,0,0, - 0,124,0,100,1,100,2,133,2,25,0,124,1,107,3,114, - 38,116,0,100,3,124,2,155,2,157,2,102,1,105,0,124, - 3,164,1,142,1,130,1,100,4,83,0,41,5,97,243,1, - 0,0,86,97,108,105,100,97,116,101,32,97,32,104,97,115, - 104,45,98,97,115,101,100,32,112,121,99,32,98,121,32,99, - 104,101,99,107,105,110,103,32,116,104,101,32,114,101,97,108, - 32,115,111,117,114,99,101,32,104,97,115,104,32,97,103,97, - 105,110,115,116,32,116,104,101,32,111,110,101,32,105,110,10, - 32,32,32,32,116,104,101,32,112,121,99,32,104,101,97,100, - 101,114,46,10,10,32,32,32,32,42,100,97,116,97,42,32, - 105,115,32,116,104,101,32,99,111,110,116,101,110,116,115,32, - 111,102,32,116,104,101,32,112,121,99,32,102,105,108,101,46, - 32,40,79,110,108,121,32,116,104,101,32,102,105,114,115,116, - 32,49,54,32,98,121,116,101,115,32,97,114,101,10,32,32, - 32,32,114,101,113,117,105,114,101,100,46,41,10,10,32,32, - 32,32,42,115,111,117,114,99,101,95,104,97,115,104,42,32, - 105,115,32,116,104,101,32,105,109,112,111,114,116,108,105,98, - 46,117,116,105,108,46,115,111,117,114,99,101,95,104,97,115, - 104,40,41,32,111,102,32,116,104,101,32,115,111,117,114,99, - 101,32,102,105,108,101,46,10,10,32,32,32,32,42,110,97, - 109,101,42,32,105,115,32,116,104,101,32,110,97,109,101,32, - 111,102,32,116,104,101,32,109,111,100,117,108,101,32,98,101, - 105,110,103,32,105,109,112,111,114,116,101,100,46,32,73,116, - 32,105,115,32,117,115,101,100,32,102,111,114,32,108,111,103, - 103,105,110,103,46,10,10,32,32,32,32,42,101,120,99,95, - 100,101,116,97,105,108,115,42,32,105,115,32,97,32,100,105, - 99,116,105,111,110,97,114,121,32,112,97,115,115,101,100,32, - 116,111,32,73,109,112,111,114,116,69,114,114,111,114,32,105, - 102,32,105,116,32,114,97,105,115,101,100,32,102,111,114,10, - 32,32,32,32,105,109,112,114,111,118,101,100,32,100,101,98, - 117,103,103,105,110,103,46,10,10,32,32,32,32,65,110,32, - 73,109,112,111,114,116,69,114,114,111,114,32,105,115,32,114, - 97,105,115,101,100,32,105,102,32,116,104,101,32,98,121,116, - 101,99,111,100,101,32,105,115,32,115,116,97,108,101,46,10, - 10,32,32,32,32,114,170,0,0,0,114,169,0,0,0,122, - 46,104,97,115,104,32,105,110,32,98,121,116,101,99,111,100, - 101,32,100,111,101,115,110,39,116,32,109,97,116,99,104,32, - 104,97,115,104,32,111,102,32,115,111,117,114,99,101,32,78, - 41,1,114,141,0,0,0,41,4,114,43,0,0,0,218,11, - 115,111,117,114,99,101,95,104,97,115,104,114,140,0,0,0, - 114,175,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,218,18,95,118,97,108,105,100,97,116,101,95, - 104,97,115,104,95,112,121,99,109,2,0,0,115,12,0,0, - 0,0,17,16,1,2,1,8,255,4,2,2,254,114,182,0, - 0,0,99,4,0,0,0,0,0,0,0,0,0,0,0,5, - 0,0,0,5,0,0,0,67,0,0,0,115,80,0,0,0, - 116,0,160,1,124,0,161,1,125,4,116,2,124,4,116,3, - 131,2,114,56,116,4,160,5,100,1,124,2,161,2,1,0, - 124,3,100,2,117,1,114,52,116,6,160,7,124,4,124,3, - 161,2,1,0,124,4,83,0,116,8,100,3,160,9,124,2, - 161,1,124,1,124,2,100,4,141,3,130,1,100,2,83,0, - 41,5,122,35,67,111,109,112,105,108,101,32,98,121,116,101, - 99,111,100,101,32,97,115,32,102,111,117,110,100,32,105,110, - 32,97,32,112,121,99,46,122,21,99,111,100,101,32,111,98, - 106,101,99,116,32,102,114,111,109,32,123,33,114,125,78,122, - 23,78,111,110,45,99,111,100,101,32,111,98,106,101,99,116, - 32,105,110,32,123,33,114,125,169,2,114,140,0,0,0,114, - 65,0,0,0,41,10,218,7,109,97,114,115,104,97,108,90, - 5,108,111,97,100,115,218,10,105,115,105,110,115,116,97,110, - 99,101,218,10,95,99,111,100,101,95,116,121,112,101,114,158, - 0,0,0,114,173,0,0,0,218,4,95,105,109,112,90,16, - 95,102,105,120,95,99,111,95,102,105,108,101,110,97,109,101, - 114,141,0,0,0,114,88,0,0,0,41,5,114,43,0,0, - 0,114,140,0,0,0,114,131,0,0,0,114,133,0,0,0, - 218,4,99,111,100,101,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,218,17,95,99,111,109,112,105,108,101,95, - 98,121,116,101,99,111,100,101,133,2,0,0,115,18,0,0, - 0,0,2,10,1,10,1,12,1,8,1,12,1,4,2,10, - 1,4,255,114,189,0,0,0,99,3,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,5,0,0,0,67,0,0, - 0,115,70,0,0,0,116,0,116,1,131,1,125,3,124,3, - 160,2,116,3,100,1,131,1,161,1,1,0,124,3,160,2, - 116,3,124,1,131,1,161,1,1,0,124,3,160,2,116,3, - 124,2,131,1,161,1,1,0,124,3,160,2,116,4,160,5, - 124,0,161,1,161,1,1,0,124,3,83,0,41,2,122,43, - 80,114,111,100,117,99,101,32,116,104,101,32,100,97,116,97, - 32,102,111,114,32,97,32,116,105,109,101,115,116,97,109,112, - 45,98,97,115,101,100,32,112,121,99,46,114,0,0,0,0, - 41,6,218,9,98,121,116,101,97,114,114,97,121,114,172,0, - 0,0,218,6,101,120,116,101,110,100,114,39,0,0,0,114, - 184,0,0,0,218,5,100,117,109,112,115,41,4,114,188,0, - 0,0,218,5,109,116,105,109,101,114,179,0,0,0,114,43, - 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, - 0,0,218,22,95,99,111,100,101,95,116,111,95,116,105,109, - 101,115,116,97,109,112,95,112,121,99,146,2,0,0,115,12, - 0,0,0,0,2,8,1,14,1,14,1,14,1,16,1,114, - 194,0,0,0,84,99,3,0,0,0,0,0,0,0,0,0, - 0,0,5,0,0,0,5,0,0,0,67,0,0,0,115,80, - 0,0,0,116,0,116,1,131,1,125,3,100,1,124,2,100, - 1,62,0,66,0,125,4,124,3,160,2,116,3,124,4,131, - 1,161,1,1,0,116,4,124,1,131,1,100,2,107,2,115, - 50,74,0,130,1,124,3,160,2,124,1,161,1,1,0,124, - 3,160,2,116,5,160,6,124,0,161,1,161,1,1,0,124, - 3,83,0,41,3,122,38,80,114,111,100,117,99,101,32,116, - 104,101,32,100,97,116,97,32,102,111,114,32,97,32,104,97, - 115,104,45,98,97,115,101,100,32,112,121,99,46,114,4,0, - 0,0,114,170,0,0,0,41,7,114,190,0,0,0,114,172, - 0,0,0,114,191,0,0,0,114,39,0,0,0,114,6,0, - 0,0,114,184,0,0,0,114,192,0,0,0,41,5,114,188, - 0,0,0,114,181,0,0,0,90,7,99,104,101,99,107,101, - 100,114,43,0,0,0,114,22,0,0,0,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,218,17,95,99,111,100, - 101,95,116,111,95,104,97,115,104,95,112,121,99,156,2,0, - 0,115,14,0,0,0,0,2,8,1,12,1,14,1,16,1, - 10,1,16,1,114,195,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,5,0,0,0,6,0,0,0,67,0, - 0,0,115,62,0,0,0,100,1,100,2,108,0,125,1,116, - 1,160,2,124,0,161,1,106,3,125,2,124,1,160,4,124, - 2,161,1,125,3,116,1,160,5,100,2,100,3,161,2,125, - 4,124,4,160,6,124,0,160,6,124,3,100,1,25,0,161, - 1,161,1,83,0,41,4,122,121,68,101,99,111,100,101,32, - 98,121,116,101,115,32,114,101,112,114,101,115,101,110,116,105, - 110,103,32,115,111,117,114,99,101,32,99,111,100,101,32,97, - 110,100,32,114,101,116,117,114,110,32,116,104,101,32,115,116, - 114,105,110,103,46,10,10,32,32,32,32,85,110,105,118,101, - 114,115,97,108,32,110,101,119,108,105,110,101,32,115,117,112, - 112,111,114,116,32,105,115,32,117,115,101,100,32,105,110,32, - 116,104,101,32,100,101,99,111,100,105,110,103,46,10,32,32, - 32,32,114,0,0,0,0,78,84,41,7,218,8,116,111,107, - 101,110,105,122,101,114,90,0,0,0,90,7,66,121,116,101, - 115,73,79,90,8,114,101,97,100,108,105,110,101,90,15,100, - 101,116,101,99,116,95,101,110,99,111,100,105,110,103,90,25, - 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,218,6,100,101,99,111,100, - 101,41,5,218,12,115,111,117,114,99,101,95,98,121,116,101, - 115,114,196,0,0,0,90,21,115,111,117,114,99,101,95,98, - 121,116,101,115,95,114,101,97,100,108,105,110,101,218,8,101, - 110,99,111,100,105,110,103,90,15,110,101,119,108,105,110,101, - 95,100,101,99,111,100,101,114,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,218,13,100,101,99,111,100,101,95, - 115,111,117,114,99,101,167,2,0,0,115,10,0,0,0,0, - 5,8,1,12,1,10,1,12,1,114,200,0,0,0,169,2, - 114,164,0,0,0,218,26,115,117,98,109,111,100,117,108,101, - 95,115,101,97,114,99,104,95,108,111,99,97,116,105,111,110, - 115,99,2,0,0,0,0,0,0,0,2,0,0,0,9,0, - 0,0,8,0,0,0,67,0,0,0,115,12,1,0,0,124, - 1,100,1,117,0,114,58,100,2,125,1,116,0,124,2,100, - 3,131,2,114,68,122,14,124,2,160,1,124,0,161,1,125, - 1,87,0,113,68,4,0,116,2,121,54,1,0,1,0,1, - 0,89,0,113,68,48,0,110,10,116,3,160,4,124,1,161, - 1,125,1,116,5,106,6,124,0,124,2,124,1,100,4,141, - 3,125,4,100,5,124,4,95,7,124,2,100,1,117,0,114, - 152,116,8,131,0,68,0,93,42,92,2,125,5,125,6,124, - 1,160,9,116,10,124,6,131,1,161,1,114,104,124,5,124, - 0,124,1,131,2,125,2,124,2,124,4,95,11,1,0,113, - 152,113,104,100,1,83,0,124,3,116,12,117,0,114,216,116, - 0,124,2,100,6,131,2,114,222,122,14,124,2,160,13,124, - 0,161,1,125,7,87,0,110,18,4,0,116,2,121,202,1, - 0,1,0,1,0,89,0,113,222,48,0,124,7,114,222,103, - 0,124,4,95,14,110,6,124,3,124,4,95,14,124,4,106, - 14,103,0,107,2,144,1,114,8,124,1,144,1,114,8,116, - 15,124,1,131,1,100,7,25,0,125,8,124,4,106,14,160, - 16,124,8,161,1,1,0,124,4,83,0,41,8,97,61,1, - 0,0,82,101,116,117,114,110,32,97,32,109,111,100,117,108, - 101,32,115,112,101,99,32,98,97,115,101,100,32,111,110,32, - 97,32,102,105,108,101,32,108,111,99,97,116,105,111,110,46, - 10,10,32,32,32,32,84,111,32,105,110,100,105,99,97,116, - 101,32,116,104,97,116,32,116,104,101,32,109,111,100,117,108, - 101,32,105,115,32,97,32,112,97,99,107,97,103,101,44,32, - 115,101,116,10,32,32,32,32,115,117,98,109,111,100,117,108, - 101,95,115,101,97,114,99,104,95,108,111,99,97,116,105,111, - 110,115,32,116,111,32,97,32,108,105,115,116,32,111,102,32, - 100,105,114,101,99,116,111,114,121,32,112,97,116,104,115,46, - 32,32,65,110,10,32,32,32,32,101,109,112,116,121,32,108, - 105,115,116,32,105,115,32,115,117,102,102,105,99,105,101,110, - 116,44,32,116,104,111,117,103,104,32,105,116,115,32,110,111, - 116,32,111,116,104,101,114,119,105,115,101,32,117,115,101,102, - 117,108,32,116,111,32,116,104,101,10,32,32,32,32,105,109, - 112,111,114,116,32,115,121,115,116,101,109,46,10,10,32,32, - 32,32,84,104,101,32,108,111,97,100,101,114,32,109,117,115, - 116,32,116,97,107,101,32,97,32,115,112,101,99,32,97,115, - 32,105,116,115,32,111,110,108,121,32,95,95,105,110,105,116, - 95,95,40,41,32,97,114,103,46,10,10,32,32,32,32,78, - 122,9,60,117,110,107,110,111,119,110,62,218,12,103,101,116, - 95,102,105,108,101,110,97,109,101,169,1,218,6,111,114,105, - 103,105,110,84,218,10,105,115,95,112,97,99,107,97,103,101, - 114,0,0,0,0,41,17,114,152,0,0,0,114,203,0,0, - 0,114,141,0,0,0,114,24,0,0,0,114,102,0,0,0, - 114,158,0,0,0,218,10,77,111,100,117,108,101,83,112,101, - 99,90,13,95,115,101,116,95,102,105,108,101,97,116,116,114, - 218,27,95,103,101,116,95,115,117,112,112,111,114,116,101,100, - 95,102,105,108,101,95,108,111,97,100,101,114,115,114,58,0, - 0,0,114,135,0,0,0,114,164,0,0,0,218,9,95,80, - 79,80,85,76,65,84,69,114,206,0,0,0,114,202,0,0, - 0,114,74,0,0,0,114,61,0,0,0,41,9,114,140,0, - 0,0,90,8,108,111,99,97,116,105,111,110,114,164,0,0, - 0,114,202,0,0,0,218,4,115,112,101,99,218,12,108,111, - 97,100,101,114,95,99,108,97,115,115,218,8,115,117,102,102, - 105,120,101,115,114,206,0,0,0,90,7,100,105,114,110,97, - 109,101,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,218,23,115,112,101,99,95,102,114,111,109,95,102,105,108, - 101,95,108,111,99,97,116,105,111,110,184,2,0,0,115,62, - 0,0,0,0,12,8,4,4,1,10,2,2,1,14,1,12, - 1,8,2,10,8,16,1,6,3,8,1,14,1,14,1,10, - 1,6,1,6,2,4,3,8,2,10,1,2,1,14,1,12, - 1,6,2,4,1,8,2,6,1,12,1,6,1,12,1,12, - 2,114,213,0,0,0,99,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,4,0,0,0,64,0,0,0,115, - 80,0,0,0,101,0,90,1,100,0,90,2,100,1,90,3, - 100,2,90,4,100,3,90,5,100,4,90,6,101,7,100,5, - 100,6,132,0,131,1,90,8,101,7,100,7,100,8,132,0, - 131,1,90,9,101,7,100,14,100,10,100,11,132,1,131,1, - 90,10,101,7,100,15,100,12,100,13,132,1,131,1,90,11, - 100,9,83,0,41,16,218,21,87,105,110,100,111,119,115,82, - 101,103,105,115,116,114,121,70,105,110,100,101,114,122,62,77, - 101,116,97,32,112,97,116,104,32,102,105,110,100,101,114,32, - 102,111,114,32,109,111,100,117,108,101,115,32,100,101,99,108, - 97,114,101,100,32,105,110,32,116,104,101,32,87,105,110,100, - 111,119,115,32,114,101,103,105,115,116,114,121,46,122,59,83, - 111,102,116,119,97,114,101,92,80,121,116,104,111,110,92,80, - 121,116,104,111,110,67,111,114,101,92,123,115,121,115,95,118, - 101,114,115,105,111,110,125,92,77,111,100,117,108,101,115,92, - 123,102,117,108,108,110,97,109,101,125,122,65,83,111,102,116, - 119,97,114,101,92,80,121,116,104,111,110,92,80,121,116,104, - 111,110,67,111,114,101,92,123,115,121,115,95,118,101,114,115, - 105,111,110,125,92,77,111,100,117,108,101,115,92,123,102,117, - 108,108,110,97,109,101,125,92,68,101,98,117,103,70,99,2, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,8, - 0,0,0,67,0,0,0,115,54,0,0,0,122,16,116,0, - 160,1,116,0,106,2,124,1,161,2,87,0,83,0,4,0, - 116,3,121,48,1,0,1,0,1,0,116,0,160,1,116,0, - 106,4,124,1,161,2,6,0,89,0,83,0,48,0,100,0, - 83,0,114,69,0,0,0,41,5,218,6,119,105,110,114,101, - 103,90,7,79,112,101,110,75,101,121,90,17,72,75,69,89, - 95,67,85,82,82,69,78,84,95,85,83,69,82,114,76,0, - 0,0,90,18,72,75,69,89,95,76,79,67,65,76,95,77, - 65,67,72,73,78,69,41,2,218,3,99,108,115,114,26,0, - 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,218,14,95,111,112,101,110,95,114,101,103,105,115,116,114, - 121,8,3,0,0,115,8,0,0,0,0,2,2,1,16,1, - 12,1,122,36,87,105,110,100,111,119,115,82,101,103,105,115, - 116,114,121,70,105,110,100,101,114,46,95,111,112,101,110,95, - 114,101,103,105,115,116,114,121,99,2,0,0,0,0,0,0, - 0,0,0,0,0,6,0,0,0,8,0,0,0,67,0,0, - 0,115,132,0,0,0,124,0,106,0,114,14,124,0,106,1, - 125,2,110,6,124,0,106,2,125,2,124,2,106,3,124,1, - 100,1,116,4,106,5,100,0,100,2,133,2,25,0,22,0, - 100,3,141,2,125,3,122,58,124,0,160,6,124,3,161,1, - 143,28,125,4,116,7,160,8,124,4,100,4,161,2,125,5, - 87,0,100,0,4,0,4,0,131,3,1,0,110,16,49,0, - 115,94,48,0,1,0,1,0,1,0,89,0,1,0,87,0, - 110,20,4,0,116,9,121,126,1,0,1,0,1,0,89,0, - 100,0,83,0,48,0,124,5,83,0,41,5,78,122,5,37, - 100,46,37,100,114,45,0,0,0,41,2,114,163,0,0,0, - 90,11,115,121,115,95,118,101,114,115,105,111,110,114,14,0, - 0,0,41,10,218,11,68,69,66,85,71,95,66,85,73,76, - 68,218,18,82,69,71,73,83,84,82,89,95,75,69,89,95, - 68,69,66,85,71,218,12,82,69,71,73,83,84,82,89,95, - 75,69,89,114,88,0,0,0,114,21,0,0,0,218,12,118, - 101,114,115,105,111,110,95,105,110,102,111,114,217,0,0,0, - 114,215,0,0,0,90,10,81,117,101,114,121,86,97,108,117, - 101,114,76,0,0,0,41,6,114,216,0,0,0,114,163,0, - 0,0,90,12,114,101,103,105,115,116,114,121,95,107,101,121, - 114,26,0,0,0,90,4,104,107,101,121,218,8,102,105,108, - 101,112,97,116,104,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,218,16,95,115,101,97,114,99,104,95,114,101, - 103,105,115,116,114,121,15,3,0,0,115,24,0,0,0,0, - 2,6,1,8,2,6,1,6,1,16,255,6,2,2,1,12, - 1,46,1,12,1,8,1,122,38,87,105,110,100,111,119,115, - 82,101,103,105,115,116,114,121,70,105,110,100,101,114,46,95, - 115,101,97,114,99,104,95,114,101,103,105,115,116,114,121,78, - 99,4,0,0,0,0,0,0,0,0,0,0,0,8,0,0, - 0,8,0,0,0,67,0,0,0,115,120,0,0,0,124,0, - 160,0,124,1,161,1,125,4,124,4,100,0,117,0,114,22, - 100,0,83,0,122,12,116,1,124,4,131,1,1,0,87,0, - 110,20,4,0,116,2,121,54,1,0,1,0,1,0,89,0, - 100,0,83,0,48,0,116,3,131,0,68,0,93,52,92,2, - 125,5,125,6,124,4,160,4,116,5,124,6,131,1,161,1, - 114,62,116,6,106,7,124,1,124,5,124,1,124,4,131,2, - 124,4,100,1,141,3,125,7,124,7,2,0,1,0,83,0, - 113,62,100,0,83,0,41,2,78,114,204,0,0,0,41,8, - 114,223,0,0,0,114,75,0,0,0,114,76,0,0,0,114, - 208,0,0,0,114,58,0,0,0,114,135,0,0,0,114,158, - 0,0,0,218,16,115,112,101,99,95,102,114,111,109,95,108, - 111,97,100,101,114,41,8,114,216,0,0,0,114,163,0,0, - 0,114,65,0,0,0,218,6,116,97,114,103,101,116,114,222, - 0,0,0,114,164,0,0,0,114,212,0,0,0,114,210,0, + 103,103,105,110,103,46,10,10,32,32,32,32,73,109,112,111, + 114,116,69,114,114,111,114,32,105,115,32,114,97,105,115,101, + 100,32,119,104,101,110,32,116,104,101,32,109,97,103,105,99, + 32,110,117,109,98,101,114,32,105,115,32,105,110,99,111,114, + 114,101,99,116,32,111,114,32,119,104,101,110,32,116,104,101, + 32,102,108,97,103,115,10,32,32,32,32,102,105,101,108,100, + 32,105,115,32,105,110,118,97,108,105,100,46,32,69,79,70, + 69,114,114,111,114,32,105,115,32,114,97,105,115,101,100,32, + 119,104,101,110,32,116,104,101,32,100,97,116,97,32,105,115, + 32,102,111,117,110,100,32,116,111,32,98,101,32,116,114,117, + 110,99,97,116,101,100,46,10,10,32,32,32,32,78,114,37, + 0,0,0,122,20,98,97,100,32,109,97,103,105,99,32,110, + 117,109,98,101,114,32,105,110,32,122,2,58,32,250,2,123, + 125,233,16,0,0,0,122,40,114,101,97,99,104,101,100,32, + 69,79,70,32,119,104,105,108,101,32,114,101,97,100,105,110, + 103,32,112,121,99,32,104,101,97,100,101,114,32,111,102,32, + 233,8,0,0,0,233,252,255,255,255,122,14,105,110,118,97, + 108,105,100,32,102,108,97,103,115,32,122,4,32,105,110,32, + 41,7,218,12,77,65,71,73,67,95,78,85,77,66,69,82, + 114,162,0,0,0,218,16,95,118,101,114,98,111,115,101,95, + 109,101,115,115,97,103,101,114,145,0,0,0,114,6,0,0, + 0,218,8,69,79,70,69,114,114,111,114,114,47,0,0,0, + 41,6,114,46,0,0,0,114,144,0,0,0,218,11,101,120, + 99,95,100,101,116,97,105,108,115,90,5,109,97,103,105,99, + 114,119,0,0,0,114,25,0,0,0,114,10,0,0,0,114, + 10,0,0,0,114,11,0,0,0,218,13,95,99,108,97,115, + 115,105,102,121,95,112,121,99,48,2,0,0,115,28,0,0, + 0,0,16,12,1,8,1,16,1,12,1,16,1,12,1,10, + 1,12,1,8,1,16,2,8,1,16,1,16,1,114,180,0, + 0,0,99,5,0,0,0,0,0,0,0,0,0,0,0,6, + 0,0,0,4,0,0,0,67,0,0,0,115,120,0,0,0, + 116,0,124,0,100,1,100,2,133,2,25,0,131,1,124,1, + 100,3,64,0,107,3,114,62,100,4,124,3,155,2,157,2, + 125,5,116,1,160,2,100,5,124,5,161,2,1,0,116,3, + 124,5,102,1,105,0,124,4,164,1,142,1,130,1,124,2, + 100,6,117,1,114,116,116,0,124,0,100,2,100,7,133,2, + 25,0,131,1,124,2,100,3,64,0,107,3,114,116,116,3, + 100,4,124,3,155,2,157,2,102,1,105,0,124,4,164,1, + 142,1,130,1,100,6,83,0,41,8,97,7,2,0,0,86, + 97,108,105,100,97,116,101,32,97,32,112,121,99,32,97,103, + 97,105,110,115,116,32,116,104,101,32,115,111,117,114,99,101, + 32,108,97,115,116,45,109,111,100,105,102,105,101,100,32,116, + 105,109,101,46,10,10,32,32,32,32,42,100,97,116,97,42, + 32,105,115,32,116,104,101,32,99,111,110,116,101,110,116,115, + 32,111,102,32,116,104,101,32,112,121,99,32,102,105,108,101, + 46,32,40,79,110,108,121,32,116,104,101,32,102,105,114,115, + 116,32,49,54,32,98,121,116,101,115,32,97,114,101,10,32, + 32,32,32,114,101,113,117,105,114,101,100,46,41,10,10,32, + 32,32,32,42,115,111,117,114,99,101,95,109,116,105,109,101, + 42,32,105,115,32,116,104,101,32,108,97,115,116,32,109,111, + 100,105,102,105,101,100,32,116,105,109,101,115,116,97,109,112, + 32,111,102,32,116,104,101,32,115,111,117,114,99,101,32,102, + 105,108,101,46,10,10,32,32,32,32,42,115,111,117,114,99, + 101,95,115,105,122,101,42,32,105,115,32,78,111,110,101,32, + 111,114,32,116,104,101,32,115,105,122,101,32,111,102,32,116, + 104,101,32,115,111,117,114,99,101,32,102,105,108,101,32,105, + 110,32,98,121,116,101,115,46,10,10,32,32,32,32,42,110, + 97,109,101,42,32,105,115,32,116,104,101,32,110,97,109,101, + 32,111,102,32,116,104,101,32,109,111,100,117,108,101,32,98, + 101,105,110,103,32,105,109,112,111,114,116,101,100,46,32,73, + 116,32,105,115,32,117,115,101,100,32,102,111,114,32,108,111, + 103,103,105,110,103,46,10,10,32,32,32,32,42,101,120,99, + 95,100,101,116,97,105,108,115,42,32,105,115,32,97,32,100, + 105,99,116,105,111,110,97,114,121,32,112,97,115,115,101,100, + 32,116,111,32,73,109,112,111,114,116,69,114,114,111,114,32, + 105,102,32,105,116,32,114,97,105,115,101,100,32,102,111,114, + 10,32,32,32,32,105,109,112,114,111,118,101,100,32,100,101, + 98,117,103,103,105,110,103,46,10,10,32,32,32,32,65,110, + 32,73,109,112,111,114,116,69,114,114,111,114,32,105,115,32, + 114,97,105,115,101,100,32,105,102,32,116,104,101,32,98,121, + 116,101,99,111,100,101,32,105,115,32,115,116,97,108,101,46, + 10,10,32,32,32,32,114,174,0,0,0,233,12,0,0,0, + 114,36,0,0,0,122,22,98,121,116,101,99,111,100,101,32, + 105,115,32,115,116,97,108,101,32,102,111,114,32,114,172,0, + 0,0,78,114,173,0,0,0,41,4,114,47,0,0,0,114, + 162,0,0,0,114,177,0,0,0,114,145,0,0,0,41,6, + 114,46,0,0,0,218,12,115,111,117,114,99,101,95,109,116, + 105,109,101,218,11,115,111,117,114,99,101,95,115,105,122,101, + 114,144,0,0,0,114,179,0,0,0,114,119,0,0,0,114, + 10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,23, + 95,118,97,108,105,100,97,116,101,95,116,105,109,101,115,116, + 97,109,112,95,112,121,99,81,2,0,0,115,16,0,0,0, + 0,19,24,1,10,1,12,1,16,1,8,1,22,255,2,2, + 114,184,0,0,0,99,4,0,0,0,0,0,0,0,0,0, + 0,0,4,0,0,0,4,0,0,0,67,0,0,0,115,42, + 0,0,0,124,0,100,1,100,2,133,2,25,0,124,1,107, + 3,114,38,116,0,100,3,124,2,155,2,157,2,102,1,105, + 0,124,3,164,1,142,1,130,1,100,4,83,0,41,5,97, + 243,1,0,0,86,97,108,105,100,97,116,101,32,97,32,104, + 97,115,104,45,98,97,115,101,100,32,112,121,99,32,98,121, + 32,99,104,101,99,107,105,110,103,32,116,104,101,32,114,101, + 97,108,32,115,111,117,114,99,101,32,104,97,115,104,32,97, + 103,97,105,110,115,116,32,116,104,101,32,111,110,101,32,105, + 110,10,32,32,32,32,116,104,101,32,112,121,99,32,104,101, + 97,100,101,114,46,10,10,32,32,32,32,42,100,97,116,97, + 42,32,105,115,32,116,104,101,32,99,111,110,116,101,110,116, + 115,32,111,102,32,116,104,101,32,112,121,99,32,102,105,108, + 101,46,32,40,79,110,108,121,32,116,104,101,32,102,105,114, + 115,116,32,49,54,32,98,121,116,101,115,32,97,114,101,10, + 32,32,32,32,114,101,113,117,105,114,101,100,46,41,10,10, + 32,32,32,32,42,115,111,117,114,99,101,95,104,97,115,104, + 42,32,105,115,32,116,104,101,32,105,109,112,111,114,116,108, + 105,98,46,117,116,105,108,46,115,111,117,114,99,101,95,104, + 97,115,104,40,41,32,111,102,32,116,104,101,32,115,111,117, + 114,99,101,32,102,105,108,101,46,10,10,32,32,32,32,42, + 110,97,109,101,42,32,105,115,32,116,104,101,32,110,97,109, + 101,32,111,102,32,116,104,101,32,109,111,100,117,108,101,32, + 98,101,105,110,103,32,105,109,112,111,114,116,101,100,46,32, + 73,116,32,105,115,32,117,115,101,100,32,102,111,114,32,108, + 111,103,103,105,110,103,46,10,10,32,32,32,32,42,101,120, + 99,95,100,101,116,97,105,108,115,42,32,105,115,32,97,32, + 100,105,99,116,105,111,110,97,114,121,32,112,97,115,115,101, + 100,32,116,111,32,73,109,112,111,114,116,69,114,114,111,114, + 32,105,102,32,105,116,32,114,97,105,115,101,100,32,102,111, + 114,10,32,32,32,32,105,109,112,114,111,118,101,100,32,100, + 101,98,117,103,103,105,110,103,46,10,10,32,32,32,32,65, + 110,32,73,109,112,111,114,116,69,114,114,111,114,32,105,115, + 32,114,97,105,115,101,100,32,105,102,32,116,104,101,32,98, + 121,116,101,99,111,100,101,32,105,115,32,115,116,97,108,101, + 46,10,10,32,32,32,32,114,174,0,0,0,114,173,0,0, + 0,122,46,104,97,115,104,32,105,110,32,98,121,116,101,99, + 111,100,101,32,100,111,101,115,110,39,116,32,109,97,116,99, + 104,32,104,97,115,104,32,111,102,32,115,111,117,114,99,101, + 32,78,41,1,114,145,0,0,0,41,4,114,46,0,0,0, + 218,11,115,111,117,114,99,101,95,104,97,115,104,114,144,0, + 0,0,114,179,0,0,0,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,218,18,95,118,97,108,105,100,97,116, + 101,95,104,97,115,104,95,112,121,99,109,2,0,0,115,12, + 0,0,0,0,17,16,1,2,1,8,255,4,2,2,254,114, + 186,0,0,0,99,4,0,0,0,0,0,0,0,0,0,0, + 0,5,0,0,0,5,0,0,0,67,0,0,0,115,80,0, + 0,0,116,0,160,1,124,0,161,1,125,4,116,2,124,4, + 116,3,131,2,114,56,116,4,160,5,100,1,124,2,161,2, + 1,0,124,3,100,2,117,1,114,52,116,6,160,7,124,4, + 124,3,161,2,1,0,124,4,83,0,116,8,100,3,160,9, + 124,2,161,1,124,1,124,2,100,4,141,3,130,1,100,2, + 83,0,41,5,122,35,67,111,109,112,105,108,101,32,98,121, + 116,101,99,111,100,101,32,97,115,32,102,111,117,110,100,32, + 105,110,32,97,32,112,121,99,46,122,21,99,111,100,101,32, + 111,98,106,101,99,116,32,102,114,111,109,32,123,33,114,125, + 78,122,23,78,111,110,45,99,111,100,101,32,111,98,106,101, + 99,116,32,105,110,32,123,33,114,125,169,2,114,144,0,0, + 0,114,68,0,0,0,41,10,218,7,109,97,114,115,104,97, + 108,90,5,108,111,97,100,115,218,10,105,115,105,110,115,116, + 97,110,99,101,218,10,95,99,111,100,101,95,116,121,112,101, + 114,162,0,0,0,114,177,0,0,0,218,4,95,105,109,112, + 90,16,95,102,105,120,95,99,111,95,102,105,108,101,110,97, + 109,101,114,145,0,0,0,114,91,0,0,0,41,5,114,46, + 0,0,0,114,144,0,0,0,114,134,0,0,0,114,137,0, + 0,0,218,4,99,111,100,101,114,10,0,0,0,114,10,0, + 0,0,114,11,0,0,0,218,17,95,99,111,109,112,105,108, + 101,95,98,121,116,101,99,111,100,101,133,2,0,0,115,18, + 0,0,0,0,2,10,1,10,1,12,1,8,1,12,1,4, + 2,10,1,4,255,114,193,0,0,0,99,3,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,5,0,0,0,67, + 0,0,0,115,70,0,0,0,116,0,116,1,131,1,125,3, + 124,3,160,2,116,3,100,1,131,1,161,1,1,0,124,3, + 160,2,116,3,124,1,131,1,161,1,1,0,124,3,160,2, + 116,3,124,2,131,1,161,1,1,0,124,3,160,2,116,4, + 160,5,124,0,161,1,161,1,1,0,124,3,83,0,41,2, + 122,43,80,114,111,100,117,99,101,32,116,104,101,32,100,97, + 116,97,32,102,111,114,32,97,32,116,105,109,101,115,116,97, + 109,112,45,98,97,115,101,100,32,112,121,99,46,114,0,0, + 0,0,41,6,218,9,98,121,116,101,97,114,114,97,121,114, + 176,0,0,0,218,6,101,120,116,101,110,100,114,42,0,0, + 0,114,188,0,0,0,218,5,100,117,109,112,115,41,4,114, + 192,0,0,0,218,5,109,116,105,109,101,114,183,0,0,0, + 114,46,0,0,0,114,10,0,0,0,114,10,0,0,0,114, + 11,0,0,0,218,22,95,99,111,100,101,95,116,111,95,116, + 105,109,101,115,116,97,109,112,95,112,121,99,146,2,0,0, + 115,12,0,0,0,0,2,8,1,14,1,14,1,14,1,16, + 1,114,198,0,0,0,84,99,3,0,0,0,0,0,0,0, + 0,0,0,0,5,0,0,0,5,0,0,0,67,0,0,0, + 115,80,0,0,0,116,0,116,1,131,1,125,3,100,1,124, + 2,100,1,62,0,66,0,125,4,124,3,160,2,116,3,124, + 4,131,1,161,1,1,0,116,4,124,1,131,1,100,2,107, + 2,115,50,74,0,130,1,124,3,160,2,124,1,161,1,1, + 0,124,3,160,2,116,5,160,6,124,0,161,1,161,1,1, + 0,124,3,83,0,41,3,122,38,80,114,111,100,117,99,101, + 32,116,104,101,32,100,97,116,97,32,102,111,114,32,97,32, + 104,97,115,104,45,98,97,115,101,100,32,112,121,99,46,114, + 4,0,0,0,114,174,0,0,0,41,7,114,194,0,0,0, + 114,176,0,0,0,114,195,0,0,0,114,42,0,0,0,114, + 6,0,0,0,114,188,0,0,0,114,196,0,0,0,41,5, + 114,192,0,0,0,114,185,0,0,0,90,7,99,104,101,99, + 107,101,100,114,46,0,0,0,114,25,0,0,0,114,10,0, + 0,0,114,10,0,0,0,114,11,0,0,0,218,17,95,99, + 111,100,101,95,116,111,95,104,97,115,104,95,112,121,99,156, + 2,0,0,115,14,0,0,0,0,2,8,1,12,1,14,1, + 16,1,10,1,16,1,114,199,0,0,0,99,1,0,0,0, + 0,0,0,0,0,0,0,0,5,0,0,0,6,0,0,0, + 67,0,0,0,115,62,0,0,0,100,1,100,2,108,0,125, + 1,116,1,160,2,124,0,161,1,106,3,125,2,124,1,160, + 4,124,2,161,1,125,3,116,1,160,5,100,2,100,3,161, + 2,125,4,124,4,160,6,124,0,160,6,124,3,100,1,25, + 0,161,1,161,1,83,0,41,4,122,121,68,101,99,111,100, + 101,32,98,121,116,101,115,32,114,101,112,114,101,115,101,110, + 116,105,110,103,32,115,111,117,114,99,101,32,99,111,100,101, + 32,97,110,100,32,114,101,116,117,114,110,32,116,104,101,32, + 115,116,114,105,110,103,46,10,10,32,32,32,32,85,110,105, + 118,101,114,115,97,108,32,110,101,119,108,105,110,101,32,115, + 117,112,112,111,114,116,32,105,115,32,117,115,101,100,32,105, + 110,32,116,104,101,32,100,101,99,111,100,105,110,103,46,10, + 32,32,32,32,114,0,0,0,0,78,84,41,7,218,8,116, + 111,107,101,110,105,122,101,114,93,0,0,0,90,7,66,121, + 116,101,115,73,79,90,8,114,101,97,100,108,105,110,101,90, + 15,100,101,116,101,99,116,95,101,110,99,111,100,105,110,103, + 90,25,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,218,6,100,101,99, + 111,100,101,41,5,218,12,115,111,117,114,99,101,95,98,121, + 116,101,115,114,200,0,0,0,90,21,115,111,117,114,99,101, + 95,98,121,116,101,115,95,114,101,97,100,108,105,110,101,218, + 8,101,110,99,111,100,105,110,103,90,15,110,101,119,108,105, + 110,101,95,100,101,99,111,100,101,114,114,10,0,0,0,114, + 10,0,0,0,114,11,0,0,0,218,13,100,101,99,111,100, + 101,95,115,111,117,114,99,101,167,2,0,0,115,10,0,0, + 0,0,5,8,1,12,1,10,1,12,1,114,204,0,0,0, + 169,2,114,168,0,0,0,218,26,115,117,98,109,111,100,117, + 108,101,95,115,101,97,114,99,104,95,108,111,99,97,116,105, + 111,110,115,99,2,0,0,0,0,0,0,0,2,0,0,0, + 9,0,0,0,8,0,0,0,67,0,0,0,115,12,1,0, + 0,124,1,100,1,117,0,114,58,100,2,125,1,116,0,124, + 2,100,3,131,2,114,68,122,14,124,2,160,1,124,0,161, + 1,125,1,87,0,113,68,4,0,116,2,121,54,1,0,1, + 0,1,0,89,0,113,68,48,0,110,10,116,3,160,4,124, + 1,161,1,125,1,116,5,106,6,124,0,124,2,124,1,100, + 4,141,3,125,4,100,5,124,4,95,7,124,2,100,1,117, + 0,114,152,116,8,131,0,68,0,93,42,92,2,125,5,125, + 6,124,1,160,9,116,10,124,6,131,1,161,1,114,104,124, + 5,124,0,124,1,131,2,125,2,124,2,124,4,95,11,1, + 0,113,152,113,104,100,1,83,0,124,3,116,12,117,0,114, + 216,116,0,124,2,100,6,131,2,114,222,122,14,124,2,160, + 13,124,0,161,1,125,7,87,0,110,18,4,0,116,2,121, + 202,1,0,1,0,1,0,89,0,113,222,48,0,124,7,114, + 222,103,0,124,4,95,14,110,6,124,3,124,4,95,14,124, + 4,106,14,103,0,107,2,144,1,114,8,124,1,144,1,114, + 8,116,15,124,1,131,1,100,7,25,0,125,8,124,4,106, + 14,160,16,124,8,161,1,1,0,124,4,83,0,41,8,97, + 61,1,0,0,82,101,116,117,114,110,32,97,32,109,111,100, + 117,108,101,32,115,112,101,99,32,98,97,115,101,100,32,111, + 110,32,97,32,102,105,108,101,32,108,111,99,97,116,105,111, + 110,46,10,10,32,32,32,32,84,111,32,105,110,100,105,99, + 97,116,101,32,116,104,97,116,32,116,104,101,32,109,111,100, + 117,108,101,32,105,115,32,97,32,112,97,99,107,97,103,101, + 44,32,115,101,116,10,32,32,32,32,115,117,98,109,111,100, + 117,108,101,95,115,101,97,114,99,104,95,108,111,99,97,116, + 105,111,110,115,32,116,111,32,97,32,108,105,115,116,32,111, + 102,32,100,105,114,101,99,116,111,114,121,32,112,97,116,104, + 115,46,32,32,65,110,10,32,32,32,32,101,109,112,116,121, + 32,108,105,115,116,32,105,115,32,115,117,102,102,105,99,105, + 101,110,116,44,32,116,104,111,117,103,104,32,105,116,115,32, + 110,111,116,32,111,116,104,101,114,119,105,115,101,32,117,115, + 101,102,117,108,32,116,111,32,116,104,101,10,32,32,32,32, + 105,109,112,111,114,116,32,115,121,115,116,101,109,46,10,10, + 32,32,32,32,84,104,101,32,108,111,97,100,101,114,32,109, + 117,115,116,32,116,97,107,101,32,97,32,115,112,101,99,32, + 97,115,32,105,116,115,32,111,110,108,121,32,95,95,105,110, + 105,116,95,95,40,41,32,97,114,103,46,10,10,32,32,32, + 32,78,122,9,60,117,110,107,110,111,119,110,62,218,12,103, + 101,116,95,102,105,108,101,110,97,109,101,169,1,218,6,111, + 114,105,103,105,110,84,218,10,105,115,95,112,97,99,107,97, + 103,101,114,0,0,0,0,41,17,114,156,0,0,0,114,207, + 0,0,0,114,145,0,0,0,114,27,0,0,0,114,105,0, + 0,0,114,162,0,0,0,218,10,77,111,100,117,108,101,83, + 112,101,99,90,13,95,115,101,116,95,102,105,108,101,97,116, + 116,114,218,27,95,103,101,116,95,115,117,112,112,111,114,116, + 101,100,95,102,105,108,101,95,108,111,97,100,101,114,115,114, + 61,0,0,0,114,139,0,0,0,114,168,0,0,0,218,9, + 95,80,79,80,85,76,65,84,69,114,210,0,0,0,114,206, + 0,0,0,114,77,0,0,0,114,64,0,0,0,41,9,114, + 144,0,0,0,90,8,108,111,99,97,116,105,111,110,114,168, + 0,0,0,114,206,0,0,0,218,4,115,112,101,99,218,12, + 108,111,97,100,101,114,95,99,108,97,115,115,218,8,115,117, + 102,102,105,120,101,115,114,210,0,0,0,90,7,100,105,114, + 110,97,109,101,114,10,0,0,0,114,10,0,0,0,114,11, + 0,0,0,218,23,115,112,101,99,95,102,114,111,109,95,102, + 105,108,101,95,108,111,99,97,116,105,111,110,184,2,0,0, + 115,62,0,0,0,0,12,8,4,4,1,10,2,2,1,14, + 1,12,1,8,2,10,8,16,1,6,3,8,1,14,1,14, + 1,10,1,6,1,6,2,4,3,8,2,10,1,2,1,14, + 1,12,1,6,2,4,1,8,2,6,1,12,1,6,1,12, + 1,12,2,114,217,0,0,0,99,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,64,0,0, + 0,115,80,0,0,0,101,0,90,1,100,0,90,2,100,1, + 90,3,100,2,90,4,100,3,90,5,100,4,90,6,101,7, + 100,5,100,6,132,0,131,1,90,8,101,7,100,7,100,8, + 132,0,131,1,90,9,101,7,100,14,100,10,100,11,132,1, + 131,1,90,10,101,7,100,15,100,12,100,13,132,1,131,1, + 90,11,100,9,83,0,41,16,218,21,87,105,110,100,111,119, + 115,82,101,103,105,115,116,114,121,70,105,110,100,101,114,122, + 62,77,101,116,97,32,112,97,116,104,32,102,105,110,100,101, + 114,32,102,111,114,32,109,111,100,117,108,101,115,32,100,101, + 99,108,97,114,101,100,32,105,110,32,116,104,101,32,87,105, + 110,100,111,119,115,32,114,101,103,105,115,116,114,121,46,122, + 59,83,111,102,116,119,97,114,101,92,80,121,116,104,111,110, + 92,80,121,116,104,111,110,67,111,114,101,92,123,115,121,115, + 95,118,101,114,115,105,111,110,125,92,77,111,100,117,108,101, + 115,92,123,102,117,108,108,110,97,109,101,125,122,65,83,111, + 102,116,119,97,114,101,92,80,121,116,104,111,110,92,80,121, + 116,104,111,110,67,111,114,101,92,123,115,121,115,95,118,101, + 114,115,105,111,110,125,92,77,111,100,117,108,101,115,92,123, + 102,117,108,108,110,97,109,101,125,92,68,101,98,117,103,70, + 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,8,0,0,0,67,0,0,0,115,54,0,0,0,122,16, + 116,0,160,1,116,0,106,2,124,1,161,2,87,0,83,0, + 4,0,116,3,121,48,1,0,1,0,1,0,116,0,160,1, + 116,0,106,4,124,1,161,2,6,0,89,0,83,0,48,0, + 100,0,83,0,114,72,0,0,0,41,5,218,6,119,105,110, + 114,101,103,90,7,79,112,101,110,75,101,121,90,17,72,75, + 69,89,95,67,85,82,82,69,78,84,95,85,83,69,82,114, + 79,0,0,0,90,18,72,75,69,89,95,76,79,67,65,76, + 95,77,65,67,72,73,78,69,41,2,218,3,99,108,115,114, + 29,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, + 0,0,0,218,14,95,111,112,101,110,95,114,101,103,105,115, + 116,114,121,8,3,0,0,115,8,0,0,0,0,2,2,1, + 16,1,12,1,122,36,87,105,110,100,111,119,115,82,101,103, + 105,115,116,114,121,70,105,110,100,101,114,46,95,111,112,101, + 110,95,114,101,103,105,115,116,114,121,99,2,0,0,0,0, + 0,0,0,0,0,0,0,6,0,0,0,8,0,0,0,67, + 0,0,0,115,132,0,0,0,124,0,106,0,114,14,124,0, + 106,1,125,2,110,6,124,0,106,2,125,2,124,2,106,3, + 124,1,100,1,116,4,106,5,100,0,100,2,133,2,25,0, + 22,0,100,3,141,2,125,3,122,58,124,0,160,6,124,3, + 161,1,143,28,125,4,116,7,160,8,124,4,100,4,161,2, + 125,5,87,0,100,0,4,0,4,0,131,3,1,0,110,16, + 49,0,115,94,48,0,1,0,1,0,1,0,89,0,1,0, + 87,0,110,20,4,0,116,9,121,126,1,0,1,0,1,0, + 89,0,100,0,83,0,48,0,124,5,83,0,41,5,78,122, + 5,37,100,46,37,100,114,48,0,0,0,41,2,114,167,0, + 0,0,90,11,115,121,115,95,118,101,114,115,105,111,110,114, + 14,0,0,0,41,10,218,11,68,69,66,85,71,95,66,85, + 73,76,68,218,18,82,69,71,73,83,84,82,89,95,75,69, + 89,95,68,69,66,85,71,218,12,82,69,71,73,83,84,82, + 89,95,75,69,89,114,91,0,0,0,114,24,0,0,0,218, + 12,118,101,114,115,105,111,110,95,105,110,102,111,114,221,0, + 0,0,114,219,0,0,0,90,10,81,117,101,114,121,86,97, + 108,117,101,114,79,0,0,0,41,6,114,220,0,0,0,114, + 167,0,0,0,90,12,114,101,103,105,115,116,114,121,95,107, + 101,121,114,29,0,0,0,90,4,104,107,101,121,218,8,102, + 105,108,101,112,97,116,104,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,218,16,95,115,101,97,114,99,104,95, + 114,101,103,105,115,116,114,121,15,3,0,0,115,24,0,0, + 0,0,2,6,1,8,2,6,1,6,1,16,255,6,2,2, + 1,12,1,46,1,12,1,8,1,122,38,87,105,110,100,111, + 119,115,82,101,103,105,115,116,114,121,70,105,110,100,101,114, + 46,95,115,101,97,114,99,104,95,114,101,103,105,115,116,114, + 121,78,99,4,0,0,0,0,0,0,0,0,0,0,0,8, + 0,0,0,8,0,0,0,67,0,0,0,115,120,0,0,0, + 124,0,160,0,124,1,161,1,125,4,124,4,100,0,117,0, + 114,22,100,0,83,0,122,12,116,1,124,4,131,1,1,0, + 87,0,110,20,4,0,116,2,121,54,1,0,1,0,1,0, + 89,0,100,0,83,0,48,0,116,3,131,0,68,0,93,52, + 92,2,125,5,125,6,124,4,160,4,116,5,124,6,131,1, + 161,1,114,62,116,6,106,7,124,1,124,5,124,1,124,4, + 131,2,124,4,100,1,141,3,125,7,124,7,2,0,1,0, + 83,0,113,62,100,0,83,0,41,2,78,114,208,0,0,0, + 41,8,114,227,0,0,0,114,78,0,0,0,114,79,0,0, + 0,114,212,0,0,0,114,61,0,0,0,114,139,0,0,0, + 114,162,0,0,0,218,16,115,112,101,99,95,102,114,111,109, + 95,108,111,97,100,101,114,41,8,114,220,0,0,0,114,167, + 0,0,0,114,68,0,0,0,218,6,116,97,114,103,101,116, + 114,226,0,0,0,114,168,0,0,0,114,216,0,0,0,114, + 214,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, + 0,0,0,218,9,102,105,110,100,95,115,112,101,99,30,3, + 0,0,115,28,0,0,0,0,2,10,1,8,1,4,1,2, + 1,12,1,12,1,8,1,14,1,14,1,6,1,8,1,2, + 254,6,3,122,31,87,105,110,100,111,119,115,82,101,103,105, + 115,116,114,121,70,105,110,100,101,114,46,102,105,110,100,95, + 115,112,101,99,99,3,0,0,0,0,0,0,0,0,0,0, + 0,4,0,0,0,4,0,0,0,67,0,0,0,115,34,0, + 0,0,124,0,160,0,124,1,124,2,161,2,125,3,124,3, + 100,1,117,1,114,26,124,3,106,1,83,0,100,1,83,0, + 100,1,83,0,41,2,122,108,70,105,110,100,32,109,111,100, + 117,108,101,32,110,97,109,101,100,32,105,110,32,116,104,101, + 32,114,101,103,105,115,116,114,121,46,10,10,32,32,32,32, + 32,32,32,32,84,104,105,115,32,109,101,116,104,111,100,32, + 105,115,32,100,101,112,114,101,99,97,116,101,100,46,32,32, + 85,115,101,32,101,120,101,99,95,109,111,100,117,108,101,40, + 41,32,105,110,115,116,101,97,100,46,10,10,32,32,32,32, + 32,32,32,32,78,169,2,114,230,0,0,0,114,168,0,0, + 0,169,4,114,220,0,0,0,114,167,0,0,0,114,68,0, + 0,0,114,214,0,0,0,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,218,11,102,105,110,100,95,109,111,100, + 117,108,101,46,3,0,0,115,8,0,0,0,0,7,12,1, + 8,1,6,2,122,33,87,105,110,100,111,119,115,82,101,103, + 105,115,116,114,121,70,105,110,100,101,114,46,102,105,110,100, + 95,109,111,100,117,108,101,41,2,78,78,41,1,78,41,12, + 114,153,0,0,0,114,152,0,0,0,114,154,0,0,0,114, + 155,0,0,0,114,224,0,0,0,114,223,0,0,0,114,222, + 0,0,0,218,11,99,108,97,115,115,109,101,116,104,111,100, + 114,221,0,0,0,114,227,0,0,0,114,230,0,0,0,114, + 233,0,0,0,114,10,0,0,0,114,10,0,0,0,114,10, + 0,0,0,114,11,0,0,0,114,218,0,0,0,252,2,0, + 0,115,28,0,0,0,8,2,4,3,2,255,2,4,2,255, + 2,3,4,2,2,1,10,6,2,1,10,14,2,1,12,15, + 2,1,114,218,0,0,0,99,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,64,0,0,0, + 115,48,0,0,0,101,0,90,1,100,0,90,2,100,1,90, + 3,100,2,100,3,132,0,90,4,100,4,100,5,132,0,90, + 5,100,6,100,7,132,0,90,6,100,8,100,9,132,0,90, + 7,100,10,83,0,41,11,218,13,95,76,111,97,100,101,114, + 66,97,115,105,99,115,122,83,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,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,0,0,0,0,5,0,0,0,4,0,0,0, + 67,0,0,0,115,64,0,0,0,116,0,124,0,160,1,124, + 1,161,1,131,1,100,1,25,0,125,2,124,2,160,2,100, + 2,100,1,161,2,100,3,25,0,125,3,124,1,160,3,100, + 2,161,1,100,4,25,0,125,4,124,3,100,5,107,2,111, + 62,124,4,100,5,107,3,83,0,41,6,122,141,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,114,4,0,0,0,114, + 99,0,0,0,114,0,0,0,0,114,48,0,0,0,218,8, + 95,95,105,110,105,116,95,95,41,4,114,77,0,0,0,114, + 207,0,0,0,114,127,0,0,0,114,106,0,0,0,41,5, + 114,146,0,0,0,114,167,0,0,0,114,122,0,0,0,90, + 13,102,105,108,101,110,97,109,101,95,98,97,115,101,90,9, + 116,97,105,108,95,110,97,109,101,114,10,0,0,0,114,10, + 0,0,0,114,11,0,0,0,114,210,0,0,0,65,3,0, + 0,115,8,0,0,0,0,3,18,1,16,1,14,1,122,24, + 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,2,0,0,0,0,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,83,0,169,2,122,42,85,115, + 101,32,100,101,102,97,117,108,116,32,115,101,109,97,110,116, + 105,99,115,32,102,111,114,32,109,111,100,117,108,101,32,99, + 114,101,97,116,105,111,110,46,78,114,10,0,0,0,169,2, + 114,146,0,0,0,114,214,0,0,0,114,10,0,0,0,114, + 10,0,0,0,114,11,0,0,0,218,13,99,114,101,97,116, + 101,95,109,111,100,117,108,101,73,3,0,0,115,2,0,0, + 0,0,1,122,27,95,76,111,97,100,101,114,66,97,115,105, + 99,115,46,99,114,101,97,116,101,95,109,111,100,117,108,101, + 99,2,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,5,0,0,0,67,0,0,0,115,56,0,0,0,124,0, + 160,0,124,1,106,1,161,1,125,2,124,2,100,1,117,0, + 114,36,116,2,100,2,160,3,124,1,106,1,161,1,131,1, + 130,1,116,4,160,5,116,6,124,2,124,1,106,7,161,3, + 1,0,100,1,83,0,41,3,122,19,69,120,101,99,117,116, + 101,32,116,104,101,32,109,111,100,117,108,101,46,78,122,52, + 99,97,110,110,111,116,32,108,111,97,100,32,109,111,100,117, + 108,101,32,123,33,114,125,32,119,104,101,110,32,103,101,116, + 95,99,111,100,101,40,41,32,114,101,116,117,114,110,115,32, + 78,111,110,101,41,8,218,8,103,101,116,95,99,111,100,101, + 114,153,0,0,0,114,145,0,0,0,114,91,0,0,0,114, + 162,0,0,0,218,25,95,99,97,108,108,95,119,105,116,104, + 95,102,114,97,109,101,115,95,114,101,109,111,118,101,100,218, + 4,101,120,101,99,114,159,0,0,0,41,3,114,146,0,0, + 0,218,6,109,111,100,117,108,101,114,192,0,0,0,114,10, + 0,0,0,114,10,0,0,0,114,11,0,0,0,218,11,101, + 120,101,99,95,109,111,100,117,108,101,76,3,0,0,115,12, + 0,0,0,0,2,12,1,8,1,6,1,4,255,6,2,122, + 25,95,76,111,97,100,101,114,66,97,115,105,99,115,46,101, + 120,101,99,95,109,111,100,117,108,101,99,2,0,0,0,0, + 0,0,0,0,0,0,0,2,0,0,0,4,0,0,0,67, + 0,0,0,115,12,0,0,0,116,0,160,1,124,0,124,1, + 161,2,83,0,41,1,122,26,84,104,105,115,32,109,111,100, + 117,108,101,32,105,115,32,100,101,112,114,101,99,97,116,101, + 100,46,41,2,114,162,0,0,0,218,17,95,108,111,97,100, + 95,109,111,100,117,108,101,95,115,104,105,109,169,2,114,146, + 0,0,0,114,167,0,0,0,114,10,0,0,0,114,10,0, + 0,0,114,11,0,0,0,218,11,108,111,97,100,95,109,111, + 100,117,108,101,84,3,0,0,115,2,0,0,0,0,2,122, + 25,95,76,111,97,100,101,114,66,97,115,105,99,115,46,108, + 111,97,100,95,109,111,100,117,108,101,78,41,8,114,153,0, + 0,0,114,152,0,0,0,114,154,0,0,0,114,155,0,0, + 0,114,210,0,0,0,114,239,0,0,0,114,244,0,0,0, + 114,247,0,0,0,114,10,0,0,0,114,10,0,0,0,114, + 10,0,0,0,114,11,0,0,0,114,235,0,0,0,60,3, + 0,0,115,10,0,0,0,8,2,4,3,8,8,8,3,8, + 8,114,235,0,0,0,99,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,3,0,0,0,64,0,0,0,115, + 74,0,0,0,101,0,90,1,100,0,90,2,100,1,100,2, + 132,0,90,3,100,3,100,4,132,0,90,4,100,5,100,6, + 132,0,90,5,100,7,100,8,132,0,90,6,100,9,100,10, + 132,0,90,7,100,11,100,12,156,1,100,13,100,14,132,2, + 90,8,100,15,100,16,132,0,90,9,100,17,83,0,41,18, + 218,12,83,111,117,114,99,101,76,111,97,100,101,114,99,2, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1, + 0,0,0,67,0,0,0,115,8,0,0,0,116,0,130,1, + 100,1,83,0,41,2,122,165,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,32,40,97,32,115,116,114,41,46,10,10,32,32,32, + 32,32,32,32,32,82,97,105,115,101,115,32,79,83,69,114, + 114,111,114,32,119,104,101,110,32,116,104,101,32,112,97,116, + 104,32,99,97,110,110,111,116,32,98,101,32,104,97,110,100, + 108,101,100,46,10,32,32,32,32,32,32,32,32,78,41,1, + 114,79,0,0,0,169,2,114,146,0,0,0,114,68,0,0, + 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, + 218,10,112,97,116,104,95,109,116,105,109,101,91,3,0,0, + 115,2,0,0,0,0,6,122,23,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,0,0,0,0,2,0,0, + 0,4,0,0,0,67,0,0,0,115,14,0,0,0,100,1, + 124,0,160,0,124,1,161,1,105,1,83,0,41,2,97,158, + 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,10,32, + 32,32,32,32,32,32,32,112,97,116,104,32,40,97,32,115, + 116,114,41,46,10,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,82,97,105,115,101,115,32, + 79,83,69,114,114,111,114,32,119,104,101,110,32,116,104,101, + 32,112,97,116,104,32,99,97,110,110,111,116,32,98,101,32, + 104,97,110,100,108,101,100,46,10,32,32,32,32,32,32,32, + 32,114,197,0,0,0,41,1,114,250,0,0,0,114,249,0, 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,218,9,102,105,110,100,95,115,112,101,99,30,3,0,0, - 115,28,0,0,0,0,2,10,1,8,1,4,1,2,1,12, - 1,12,1,8,1,14,1,14,1,6,1,8,1,2,254,6, - 3,122,31,87,105,110,100,111,119,115,82,101,103,105,115,116, - 114,121,70,105,110,100,101,114,46,102,105,110,100,95,115,112, - 101,99,99,3,0,0,0,0,0,0,0,0,0,0,0,4, - 0,0,0,4,0,0,0,67,0,0,0,115,34,0,0,0, - 124,0,160,0,124,1,124,2,161,2,125,3,124,3,100,1, - 117,1,114,26,124,3,106,1,83,0,100,1,83,0,100,1, - 83,0,41,2,122,108,70,105,110,100,32,109,111,100,117,108, - 101,32,110,97,109,101,100,32,105,110,32,116,104,101,32,114, - 101,103,105,115,116,114,121,46,10,10,32,32,32,32,32,32, + 0,218,10,112,97,116,104,95,115,116,97,116,115,99,3,0, + 0,115,2,0,0,0,0,12,122,23,83,111,117,114,99,101, + 76,111,97,100,101,114,46,112,97,116,104,95,115,116,97,116, + 115,99,4,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,4,0,0,0,67,0,0,0,115,12,0,0,0,124, + 0,160,0,124,2,124,3,161,2,83,0,41,1,122,228,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,84,104,101,32,115,111,117,114,99,101, + 32,112,97,116,104,32,105,115,32,110,101,101,100,101,100,32, + 105,110,32,111,114,100,101,114,32,116,111,32,99,111,114,114, + 101,99,116,108,121,32,116,114,97,110,115,102,101,114,32,112, + 101,114,109,105,115,115,105,111,110,115,10,32,32,32,32,32, + 32,32,32,41,1,218,8,115,101,116,95,100,97,116,97,41, + 4,114,146,0,0,0,114,137,0,0,0,90,10,99,97,99, + 104,101,95,112,97,116,104,114,46,0,0,0,114,10,0,0, + 0,114,10,0,0,0,114,11,0,0,0,218,15,95,99,97, + 99,104,101,95,98,121,116,101,99,111,100,101,113,3,0,0, + 115,2,0,0,0,0,8,122,28,83,111,117,114,99,101,76, + 111,97,100,101,114,46,95,99,97,99,104,101,95,98,121,116, + 101,99,111,100,101,99,3,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,1,0,0,0,67,0,0,0,115,4, + 0,0,0,100,1,83,0,41,2,122,150,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,32,32,32,32,32,32,32, + 32,78,114,10,0,0,0,41,3,114,146,0,0,0,114,68, + 0,0,0,114,46,0,0,0,114,10,0,0,0,114,10,0, + 0,0,114,11,0,0,0,114,252,0,0,0,123,3,0,0, + 115,2,0,0,0,0,1,122,21,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,0,0,0,0,5,0,0,0,10, + 0,0,0,67,0,0,0,115,84,0,0,0,124,0,160,0, + 124,1,161,1,125,2,122,14,124,0,160,1,124,2,161,1, + 125,3,87,0,110,50,4,0,116,2,121,74,1,0,125,4, + 1,0,122,26,116,3,100,1,124,1,100,2,141,2,124,4, + 130,2,87,0,89,0,100,3,125,4,126,4,110,10,100,3, + 125,4,126,4,48,0,48,0,116,4,124,3,131,1,83,0, + 41,4,122,52,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,122,39,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,114,143,0,0,0,78,41,5,114,207,0,0,0,218,8, + 103,101,116,95,100,97,116,97,114,79,0,0,0,114,145,0, + 0,0,114,204,0,0,0,41,5,114,146,0,0,0,114,167, + 0,0,0,114,68,0,0,0,114,202,0,0,0,218,3,101, + 120,99,114,10,0,0,0,114,10,0,0,0,114,11,0,0, + 0,218,10,103,101,116,95,115,111,117,114,99,101,130,3,0, + 0,115,20,0,0,0,0,2,10,1,2,1,14,1,14,1, + 4,1,2,255,4,1,2,255,24,2,122,23,83,111,117,114, + 99,101,76,111,97,100,101,114,46,103,101,116,95,115,111,117, + 114,99,101,114,132,0,0,0,41,1,218,9,95,111,112,116, + 105,109,105,122,101,99,3,0,0,0,0,0,0,0,1,0, + 0,0,4,0,0,0,8,0,0,0,67,0,0,0,115,22, + 0,0,0,116,0,106,1,116,2,124,1,124,2,100,1,100, + 2,124,3,100,3,141,6,83,0,41,4,122,130,82,101,116, + 117,114,110,32,116,104,101,32,99,111,100,101,32,111,98,106, + 101,99,116,32,99,111,109,112,105,108,101,100,32,102,114,111, + 109,32,115,111,117,114,99,101,46,10,10,32,32,32,32,32, + 32,32,32,84,104,101,32,39,100,97,116,97,39,32,97,114, + 103,117,109,101,110,116,32,99,97,110,32,98,101,32,97,110, + 121,32,111,98,106,101,99,116,32,116,121,112,101,32,116,104, + 97,116,32,99,111,109,112,105,108,101,40,41,32,115,117,112, + 112,111,114,116,115,46,10,32,32,32,32,32,32,32,32,114, + 242,0,0,0,84,41,2,218,12,100,111,110,116,95,105,110, + 104,101,114,105,116,114,110,0,0,0,41,3,114,162,0,0, + 0,114,241,0,0,0,218,7,99,111,109,112,105,108,101,41, + 4,114,146,0,0,0,114,46,0,0,0,114,68,0,0,0, + 114,1,1,0,0,114,10,0,0,0,114,10,0,0,0,114, + 11,0,0,0,218,14,115,111,117,114,99,101,95,116,111,95, + 99,111,100,101,140,3,0,0,115,6,0,0,0,0,5,12, + 1,4,255,122,27,83,111,117,114,99,101,76,111,97,100,101, + 114,46,115,111,117,114,99,101,95,116,111,95,99,111,100,101, + 99,2,0,0,0,0,0,0,0,0,0,0,0,15,0,0, + 0,9,0,0,0,67,0,0,0,115,24,2,0,0,124,0, + 160,0,124,1,161,1,125,2,100,1,125,3,100,1,125,4, + 100,1,125,5,100,2,125,6,100,3,125,7,122,12,116,1, + 124,2,131,1,125,8,87,0,110,24,4,0,116,2,121,66, + 1,0,1,0,1,0,100,1,125,8,89,0,144,1,110,42, + 48,0,122,14,124,0,160,3,124,2,161,1,125,9,87,0, + 110,20,4,0,116,4,121,102,1,0,1,0,1,0,89,0, + 144,1,110,6,48,0,116,5,124,9,100,4,25,0,131,1, + 125,3,122,14,124,0,160,6,124,8,161,1,125,10,87,0, + 110,18,4,0,116,4,121,148,1,0,1,0,1,0,89,0, + 110,216,48,0,124,1,124,8,100,5,156,2,125,11,122,148, + 116,7,124,10,124,1,124,11,131,3,125,12,116,8,124,10, + 131,1,100,6,100,1,133,2,25,0,125,13,124,12,100,7, + 64,0,100,8,107,3,125,6,124,6,144,1,114,30,124,12, + 100,9,64,0,100,8,107,3,125,7,116,9,106,10,100,10, + 107,3,144,1,114,50,124,7,115,248,116,9,106,10,100,11, + 107,2,144,1,114,50,124,0,160,6,124,2,161,1,125,4, + 116,9,160,11,116,12,124,4,161,2,125,5,116,13,124,10, + 124,5,124,1,124,11,131,4,1,0,110,20,116,14,124,10, + 124,3,124,9,100,12,25,0,124,1,124,11,131,5,1,0, + 87,0,110,24,4,0,116,15,116,16,102,2,144,1,121,76, + 1,0,1,0,1,0,89,0,110,32,48,0,116,17,160,18, + 100,13,124,8,124,2,161,3,1,0,116,19,124,13,124,1, + 124,8,124,2,100,14,141,4,83,0,124,4,100,1,117,0, + 144,1,114,128,124,0,160,6,124,2,161,1,125,4,124,0, + 160,20,124,4,124,2,161,2,125,14,116,17,160,18,100,15, + 124,2,161,2,1,0,116,21,106,22,144,2,115,20,124,8, + 100,1,117,1,144,2,114,20,124,3,100,1,117,1,144,2, + 114,20,124,6,144,1,114,220,124,5,100,1,117,0,144,1, + 114,206,116,9,160,11,124,4,161,1,125,5,116,23,124,14, + 124,5,124,7,131,3,125,10,110,16,116,24,124,14,124,3, + 116,25,124,4,131,1,131,3,125,10,122,18,124,0,160,26, + 124,2,124,8,124,10,161,3,1,0,87,0,110,20,4,0, + 116,2,144,2,121,18,1,0,1,0,1,0,89,0,110,2, + 48,0,124,14,83,0,41,16,122,190,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,78,70,84,114,197,0,0,0, + 114,187,0,0,0,114,173,0,0,0,114,4,0,0,0,114, + 0,0,0,0,114,48,0,0,0,90,5,110,101,118,101,114, + 90,6,97,108,119,97,121,115,218,4,115,105,122,101,122,13, + 123,125,32,109,97,116,99,104,101,115,32,123,125,41,3,114, + 144,0,0,0,114,134,0,0,0,114,137,0,0,0,122,19, + 99,111,100,101,32,111,98,106,101,99,116,32,102,114,111,109, + 32,123,125,41,27,114,207,0,0,0,114,123,0,0,0,114, + 109,0,0,0,114,251,0,0,0,114,79,0,0,0,114,39, + 0,0,0,114,254,0,0,0,114,180,0,0,0,218,10,109, + 101,109,111,114,121,118,105,101,119,114,191,0,0,0,90,21, + 99,104,101,99,107,95,104,97,115,104,95,98,97,115,101,100, + 95,112,121,99,115,114,185,0,0,0,218,17,95,82,65,87, + 95,77,65,71,73,67,95,78,85,77,66,69,82,114,186,0, + 0,0,114,184,0,0,0,114,145,0,0,0,114,178,0,0, + 0,114,162,0,0,0,114,177,0,0,0,114,193,0,0,0, + 114,4,1,0,0,114,24,0,0,0,218,19,100,111,110,116, + 95,119,114,105,116,101,95,98,121,116,101,99,111,100,101,114, + 199,0,0,0,114,198,0,0,0,114,6,0,0,0,114,253, + 0,0,0,41,15,114,146,0,0,0,114,167,0,0,0,114, + 137,0,0,0,114,182,0,0,0,114,202,0,0,0,114,185, + 0,0,0,90,10,104,97,115,104,95,98,97,115,101,100,90, + 12,99,104,101,99,107,95,115,111,117,114,99,101,114,134,0, + 0,0,218,2,115,116,114,46,0,0,0,114,179,0,0,0, + 114,25,0,0,0,90,10,98,121,116,101,115,95,100,97,116, + 97,90,11,99,111,100,101,95,111,98,106,101,99,116,114,10, + 0,0,0,114,10,0,0,0,114,11,0,0,0,114,240,0, + 0,0,148,3,0,0,115,152,0,0,0,0,7,10,1,4, + 1,4,1,4,1,4,1,4,1,2,1,12,1,12,1,12, + 2,2,1,14,1,12,1,8,2,12,1,2,1,14,1,12, + 1,6,3,2,1,2,254,6,4,2,1,12,1,16,1,12, + 1,6,1,12,1,12,1,2,255,2,2,8,254,4,3,10, + 1,4,1,2,1,2,254,4,4,8,1,2,255,6,3,2, + 1,2,1,2,1,6,1,2,1,2,251,8,7,18,1,6, + 2,8,1,2,255,4,2,6,1,2,1,2,254,6,3,10, + 1,10,1,12,1,12,1,18,1,6,255,4,2,6,1,10, + 1,10,1,14,2,6,1,6,255,4,2,2,1,18,1,14, + 1,6,1,122,21,83,111,117,114,99,101,76,111,97,100,101, + 114,46,103,101,116,95,99,111,100,101,78,41,10,114,153,0, + 0,0,114,152,0,0,0,114,154,0,0,0,114,250,0,0, + 0,114,251,0,0,0,114,253,0,0,0,114,252,0,0,0, + 114,0,1,0,0,114,4,1,0,0,114,240,0,0,0,114, + 10,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, + 0,0,0,114,248,0,0,0,89,3,0,0,115,14,0,0, + 0,8,2,8,8,8,14,8,10,8,7,8,10,14,8,114, + 248,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,0,0,0,0,115,124,0, + 0,0,101,0,90,1,100,0,90,2,100,1,90,3,100,2, + 100,3,132,0,90,4,100,4,100,5,132,0,90,5,100,6, + 100,7,132,0,90,6,101,7,135,0,102,1,100,8,100,9, + 132,8,131,1,90,8,101,7,100,10,100,11,132,0,131,1, + 90,9,100,12,100,13,132,0,90,10,101,7,100,14,100,15, + 132,0,131,1,90,11,100,16,100,17,132,0,90,12,100,18, + 100,19,132,0,90,13,100,20,100,21,132,0,90,14,100,22, + 100,23,132,0,90,15,135,0,4,0,90,16,83,0,41,24, + 218,10,70,105,108,101,76,111,97,100,101,114,122,103,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,0,0, + 0,0,3,0,0,0,2,0,0,0,67,0,0,0,115,16, + 0,0,0,124,1,124,0,95,0,124,2,124,0,95,1,100, + 1,83,0,41,2,122,75,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,114,187,0,0,0,41,3,114,146,0,0,0,114, + 167,0,0,0,114,68,0,0,0,114,10,0,0,0,114,10, + 0,0,0,114,11,0,0,0,114,236,0,0,0,238,3,0, + 0,115,4,0,0,0,0,3,6,1,122,19,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,0,0,0,0,2,0,0,0, + 2,0,0,0,67,0,0,0,115,24,0,0,0,124,0,106, + 0,124,1,106,0,107,2,111,22,124,0,106,1,124,1,106, + 1,107,2,83,0,114,72,0,0,0,169,2,218,9,95,95, + 99,108,97,115,115,95,95,114,159,0,0,0,169,2,114,146, + 0,0,0,90,5,111,116,104,101,114,114,10,0,0,0,114, + 10,0,0,0,114,11,0,0,0,218,6,95,95,101,113,95, + 95,244,3,0,0,115,6,0,0,0,0,1,12,1,10,255, + 122,17,70,105,108,101,76,111,97,100,101,114,46,95,95,101, + 113,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,3,0,0,0,67,0,0,0,115,20,0,0, + 0,116,0,124,0,106,1,131,1,116,0,124,0,106,2,131, + 1,65,0,83,0,114,72,0,0,0,169,3,218,4,104,97, + 115,104,114,144,0,0,0,114,68,0,0,0,169,1,114,146, + 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, + 0,0,218,8,95,95,104,97,115,104,95,95,248,3,0,0, + 115,2,0,0,0,0,1,122,19,70,105,108,101,76,111,97, + 100,101,114,46,95,95,104,97,115,104,95,95,99,2,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0, + 0,3,0,0,0,115,16,0,0,0,116,0,116,1,124,0, + 131,2,160,2,124,1,161,1,83,0,41,1,122,100,76,111, + 97,100,32,97,32,109,111,100,117,108,101,32,102,114,111,109, + 32,97,32,102,105,108,101,46,10,10,32,32,32,32,32,32, 32,32,84,104,105,115,32,109,101,116,104,111,100,32,105,115, 32,100,101,112,114,101,99,97,116,101,100,46,32,32,85,115, 101,32,101,120,101,99,95,109,111,100,117,108,101,40,41,32, 105,110,115,116,101,97,100,46,10,10,32,32,32,32,32,32, - 32,32,78,169,2,114,226,0,0,0,114,164,0,0,0,169, - 4,114,216,0,0,0,114,163,0,0,0,114,65,0,0,0, - 114,210,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,218,11,102,105,110,100,95,109,111,100,117,108, - 101,46,3,0,0,115,8,0,0,0,0,7,12,1,8,1, - 6,2,122,33,87,105,110,100,111,119,115,82,101,103,105,115, - 116,114,121,70,105,110,100,101,114,46,102,105,110,100,95,109, - 111,100,117,108,101,41,2,78,78,41,1,78,41,12,114,149, - 0,0,0,114,148,0,0,0,114,150,0,0,0,114,151,0, - 0,0,114,220,0,0,0,114,219,0,0,0,114,218,0,0, - 0,218,11,99,108,97,115,115,109,101,116,104,111,100,114,217, - 0,0,0,114,223,0,0,0,114,226,0,0,0,114,229,0, - 0,0,114,10,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,114,214,0,0,0,252,2,0,0,115, - 28,0,0,0,8,2,4,3,2,255,2,4,2,255,2,3, - 4,2,2,1,10,6,2,1,10,14,2,1,12,15,2,1, - 114,214,0,0,0,99,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,2,0,0,0,64,0,0,0,115,48, + 32,32,41,3,218,5,115,117,112,101,114,114,10,1,0,0, + 114,247,0,0,0,114,246,0,0,0,169,1,114,12,1,0, + 0,114,10,0,0,0,114,11,0,0,0,114,247,0,0,0, + 251,3,0,0,115,2,0,0,0,0,10,122,22,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,0,0,0,0, + 2,0,0,0,1,0,0,0,67,0,0,0,115,6,0,0, + 0,124,0,106,0,83,0,169,1,122,58,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,114,74,0,0,0,114,246,0,0,0,114, + 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,207, + 0,0,0,7,4,0,0,115,2,0,0,0,0,3,122,23, + 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, + 0,0,0,0,3,0,0,0,8,0,0,0,67,0,0,0, + 115,126,0,0,0,116,0,124,0,116,1,116,2,102,2,131, + 2,114,70,116,3,160,4,116,5,124,1,131,1,161,1,143, + 24,125,2,124,2,160,6,161,0,87,0,2,0,100,1,4, + 0,4,0,131,3,1,0,83,0,49,0,115,58,48,0,1, + 0,1,0,1,0,89,0,1,0,110,52,116,3,160,7,124, + 1,100,2,161,2,143,24,125,2,124,2,160,6,161,0,87, + 0,2,0,100,1,4,0,4,0,131,3,1,0,83,0,49, + 0,115,112,48,0,1,0,1,0,1,0,89,0,1,0,100, + 1,83,0,41,3,122,39,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,78,218, + 1,114,41,8,114,189,0,0,0,114,248,0,0,0,218,19, + 69,120,116,101,110,115,105,111,110,70,105,108,101,76,111,97, + 100,101,114,114,93,0,0,0,90,9,111,112,101,110,95,99, + 111,100,101,114,111,0,0,0,90,4,114,101,97,100,114,94, + 0,0,0,41,3,114,146,0,0,0,114,68,0,0,0,114, + 96,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, + 0,0,0,114,254,0,0,0,12,4,0,0,115,10,0,0, + 0,0,2,14,1,16,1,40,2,14,1,122,19,70,105,108, + 101,76,111,97,100,101,114,46,103,101,116,95,100,97,116,97, + 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,3,0,0,0,67,0,0,0,115,18,0,0,0,124,0, + 160,0,124,1,161,1,114,14,124,0,83,0,100,0,83,0, + 114,72,0,0,0,41,1,114,210,0,0,0,169,2,114,146, + 0,0,0,114,243,0,0,0,114,10,0,0,0,114,10,0, + 0,0,114,11,0,0,0,218,19,103,101,116,95,114,101,115, + 111,117,114,99,101,95,114,101,97,100,101,114,23,4,0,0, + 115,6,0,0,0,0,2,10,1,4,1,122,30,70,105,108, + 101,76,111,97,100,101,114,46,103,101,116,95,114,101,115,111, + 117,114,99,101,95,114,101,97,100,101,114,99,2,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,4,0,0,0, + 67,0,0,0,115,32,0,0,0,116,0,116,1,124,0,106, + 2,131,1,100,1,25,0,124,1,131,2,125,2,116,3,160, + 4,124,2,100,2,161,2,83,0,41,3,78,114,0,0,0, + 0,114,22,1,0,0,41,5,114,70,0,0,0,114,77,0, + 0,0,114,68,0,0,0,114,93,0,0,0,114,94,0,0, + 0,169,3,114,146,0,0,0,90,8,114,101,115,111,117,114, + 99,101,114,68,0,0,0,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,218,13,111,112,101,110,95,114,101,115, + 111,117,114,99,101,29,4,0,0,115,4,0,0,0,0,1, + 20,1,122,24,70,105,108,101,76,111,97,100,101,114,46,111, + 112,101,110,95,114,101,115,111,117,114,99,101,99,2,0,0, + 0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,0, + 0,67,0,0,0,115,38,0,0,0,124,0,160,0,124,1, + 161,1,115,14,116,1,130,1,116,2,116,3,124,0,106,4, + 131,1,100,1,25,0,124,1,131,2,125,2,124,2,83,0, + 169,2,78,114,0,0,0,0,41,5,218,11,105,115,95,114, + 101,115,111,117,114,99,101,218,17,70,105,108,101,78,111,116, + 70,111,117,110,100,69,114,114,111,114,114,70,0,0,0,114, + 77,0,0,0,114,68,0,0,0,114,26,1,0,0,114,10, + 0,0,0,114,10,0,0,0,114,11,0,0,0,218,13,114, + 101,115,111,117,114,99,101,95,112,97,116,104,33,4,0,0, + 115,8,0,0,0,0,1,10,1,4,1,20,1,122,24,70, + 105,108,101,76,111,97,100,101,114,46,114,101,115,111,117,114, + 99,101,95,112,97,116,104,99,2,0,0,0,0,0,0,0, + 0,0,0,0,3,0,0,0,3,0,0,0,67,0,0,0, + 115,40,0,0,0,116,0,124,1,118,0,114,12,100,1,83, + 0,116,1,116,2,124,0,106,3,131,1,100,2,25,0,124, + 1,131,2,125,2,116,4,124,2,131,1,83,0,41,3,78, + 70,114,0,0,0,0,41,5,114,62,0,0,0,114,70,0, + 0,0,114,77,0,0,0,114,68,0,0,0,114,83,0,0, + 0,169,3,114,146,0,0,0,114,144,0,0,0,114,68,0, + 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, + 0,114,29,1,0,0,39,4,0,0,115,8,0,0,0,0, + 1,8,1,4,1,20,1,122,22,70,105,108,101,76,111,97, + 100,101,114,46,105,115,95,114,101,115,111,117,114,99,101,99, + 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, + 5,0,0,0,67,0,0,0,115,24,0,0,0,116,0,116, + 1,160,2,116,3,124,0,106,4,131,1,100,1,25,0,161, + 1,131,1,83,0,114,28,1,0,0,41,5,218,4,105,116, + 101,114,114,27,0,0,0,218,7,108,105,115,116,100,105,114, + 114,77,0,0,0,114,68,0,0,0,114,17,1,0,0,114, + 10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,8, + 99,111,110,116,101,110,116,115,45,4,0,0,115,2,0,0, + 0,0,1,122,19,70,105,108,101,76,111,97,100,101,114,46, + 99,111,110,116,101,110,116,115,41,17,114,153,0,0,0,114, + 152,0,0,0,114,154,0,0,0,114,155,0,0,0,114,236, + 0,0,0,114,14,1,0,0,114,18,1,0,0,114,164,0, + 0,0,114,247,0,0,0,114,207,0,0,0,114,254,0,0, + 0,114,25,1,0,0,114,27,1,0,0,114,31,1,0,0, + 114,29,1,0,0,114,35,1,0,0,218,13,95,95,99,108, + 97,115,115,99,101,108,108,95,95,114,10,0,0,0,114,10, + 0,0,0,114,20,1,0,0,114,11,0,0,0,114,10,1, + 0,0,233,3,0,0,115,30,0,0,0,8,2,4,3,8, + 6,8,4,8,3,2,1,14,11,2,1,10,4,8,11,2, + 1,10,5,8,4,8,6,8,6,114,10,1,0,0,99,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,64,0,0,0,115,46,0,0,0,101,0,90,1, + 100,0,90,2,100,1,90,3,100,2,100,3,132,0,90,4, + 100,4,100,5,132,0,90,5,100,6,100,7,156,1,100,8, + 100,9,132,2,90,6,100,10,83,0,41,11,218,16,83,111, + 117,114,99,101,70,105,108,101,76,111,97,100,101,114,122,62, + 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,0,0,0,0,3,0,0,0,3, + 0,0,0,67,0,0,0,115,22,0,0,0,116,0,124,1, + 131,1,125,2,124,2,106,1,124,2,106,2,100,1,156,2, + 83,0,41,2,122,33,82,101,116,117,114,110,32,116,104,101, + 32,109,101,116,97,100,97,116,97,32,102,111,114,32,116,104, + 101,32,112,97,116,104,46,41,2,114,197,0,0,0,114,5, + 1,0,0,41,3,114,78,0,0,0,218,8,115,116,95,109, + 116,105,109,101,90,7,115,116,95,115,105,122,101,41,3,114, + 146,0,0,0,114,68,0,0,0,114,9,1,0,0,114,10, + 0,0,0,114,10,0,0,0,114,11,0,0,0,114,251,0, + 0,0,53,4,0,0,115,4,0,0,0,0,2,8,1,122, + 27,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,4,0,0, + 0,0,0,0,0,0,0,0,0,5,0,0,0,5,0,0, + 0,67,0,0,0,115,24,0,0,0,116,0,124,1,131,1, + 125,4,124,0,106,1,124,2,124,3,124,4,100,1,141,3, + 83,0,41,2,78,169,1,218,5,95,109,111,100,101,41,2, + 114,142,0,0,0,114,252,0,0,0,41,5,114,146,0,0, + 0,114,137,0,0,0,114,134,0,0,0,114,46,0,0,0, + 114,81,0,0,0,114,10,0,0,0,114,10,0,0,0,114, + 11,0,0,0,114,253,0,0,0,58,4,0,0,115,4,0, + 0,0,0,2,8,1,122,32,83,111,117,114,99,101,70,105, + 108,101,76,111,97,100,101,114,46,95,99,97,99,104,101,95, + 98,121,116,101,99,111,100,101,114,89,0,0,0,114,39,1, + 0,0,99,3,0,0,0,0,0,0,0,1,0,0,0,9, + 0,0,0,11,0,0,0,67,0,0,0,115,252,0,0,0, + 116,0,124,1,131,1,92,2,125,4,125,5,103,0,125,6, + 124,4,114,52,116,1,124,4,131,1,115,52,116,0,124,4, + 131,1,92,2,125,4,125,7,124,6,160,2,124,7,161,1, + 1,0,113,16,116,3,124,6,131,1,68,0,93,104,125,7, + 116,4,124,4,124,7,131,2,125,4,122,14,116,5,160,6, + 124,4,161,1,1,0,87,0,113,60,4,0,116,7,121,110, + 1,0,1,0,1,0,89,0,113,60,89,0,113,60,4,0, + 116,8,121,162,1,0,125,8,1,0,122,30,116,9,160,10, + 100,1,124,4,124,8,161,3,1,0,87,0,89,0,100,2, + 125,8,126,8,1,0,100,2,83,0,100,2,125,8,126,8, + 48,0,48,0,113,60,122,28,116,11,124,1,124,2,124,3, + 131,3,1,0,116,9,160,10,100,3,124,1,161,2,1,0, + 87,0,110,52,4,0,116,8,144,0,121,246,1,0,125,8, + 1,0,122,26,116,9,160,10,100,1,124,1,124,8,161,3, + 1,0,87,0,89,0,100,2,125,8,126,8,110,10,100,2, + 125,8,126,8,48,0,48,0,100,2,83,0,41,4,122,27, + 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,122,27,99,111,117, + 108,100,32,110,111,116,32,99,114,101,97,116,101,32,123,33, + 114,125,58,32,123,33,114,125,78,122,12,99,114,101,97,116, + 101,100,32,123,33,114,125,41,12,114,77,0,0,0,114,85, + 0,0,0,114,64,0,0,0,218,8,114,101,118,101,114,115, + 101,100,114,70,0,0,0,114,27,0,0,0,90,5,109,107, + 100,105,114,218,15,70,105,108,101,69,120,105,115,116,115,69, + 114,114,111,114,114,79,0,0,0,114,162,0,0,0,114,177, + 0,0,0,114,97,0,0,0,41,9,114,146,0,0,0,114, + 68,0,0,0,114,46,0,0,0,114,40,1,0,0,218,6, + 112,97,114,101,110,116,114,122,0,0,0,114,66,0,0,0, + 114,71,0,0,0,114,255,0,0,0,114,10,0,0,0,114, + 10,0,0,0,114,11,0,0,0,114,252,0,0,0,63,4, + 0,0,115,46,0,0,0,0,2,12,1,4,2,12,1,12, + 1,12,2,12,1,10,1,2,1,14,1,12,2,8,1,14, + 3,6,1,4,255,4,2,28,1,2,1,12,1,16,1,16, + 2,8,1,2,255,122,25,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,41,7,114,153,0,0,0,114,152,0,0,0,114,154,0, + 0,0,114,155,0,0,0,114,251,0,0,0,114,253,0,0, + 0,114,252,0,0,0,114,10,0,0,0,114,10,0,0,0, + 114,10,0,0,0,114,11,0,0,0,114,37,1,0,0,49, + 4,0,0,115,8,0,0,0,8,2,4,2,8,5,8,5, + 114,37,1,0,0,99,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,2,0,0,0,64,0,0,0,115,32, 0,0,0,101,0,90,1,100,0,90,2,100,1,90,3,100, 2,100,3,132,0,90,4,100,4,100,5,132,0,90,5,100, - 6,100,7,132,0,90,6,100,8,100,9,132,0,90,7,100, - 10,83,0,41,11,218,13,95,76,111,97,100,101,114,66,97, - 115,105,99,115,122,83,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,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,0,0,0,0,5,0,0,0,4,0,0,0,67,0, - 0,0,115,64,0,0,0,116,0,124,0,160,1,124,1,161, - 1,131,1,100,1,25,0,125,2,124,2,160,2,100,2,100, - 1,161,2,100,3,25,0,125,3,124,1,160,3,100,2,161, - 1,100,4,25,0,125,4,124,3,100,5,107,2,111,62,124, - 4,100,5,107,3,83,0,41,6,122,141,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,114,4,0,0,0,114,96,0, - 0,0,114,0,0,0,0,114,45,0,0,0,218,8,95,95, - 105,110,105,116,95,95,41,4,114,74,0,0,0,114,203,0, - 0,0,114,124,0,0,0,114,103,0,0,0,41,5,114,142, - 0,0,0,114,163,0,0,0,114,119,0,0,0,90,13,102, - 105,108,101,110,97,109,101,95,98,97,115,101,90,9,116,97, - 105,108,95,110,97,109,101,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,114,206,0,0,0,65,3,0,0,115, - 8,0,0,0,0,3,18,1,16,1,14,1,122,24,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,2,0,0,0,0,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,83,0,169,2,122,42,85,115,101,32, - 100,101,102,97,117,108,116,32,115,101,109,97,110,116,105,99, - 115,32,102,111,114,32,109,111,100,117,108,101,32,99,114,101, - 97,116,105,111,110,46,78,114,10,0,0,0,169,2,114,142, - 0,0,0,114,210,0,0,0,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,218,13,99,114,101,97,116,101,95, - 109,111,100,117,108,101,73,3,0,0,115,2,0,0,0,0, - 1,122,27,95,76,111,97,100,101,114,66,97,115,105,99,115, - 46,99,114,101,97,116,101,95,109,111,100,117,108,101,99,2, - 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,5, - 0,0,0,67,0,0,0,115,56,0,0,0,124,0,160,0, - 124,1,106,1,161,1,125,2,124,2,100,1,117,0,114,36, - 116,2,100,2,160,3,124,1,106,1,161,1,131,1,130,1, - 116,4,160,5,116,6,124,2,124,1,106,7,161,3,1,0, - 100,1,83,0,41,3,122,19,69,120,101,99,117,116,101,32, - 116,104,101,32,109,111,100,117,108,101,46,78,122,52,99,97, - 110,110,111,116,32,108,111,97,100,32,109,111,100,117,108,101, - 32,123,33,114,125,32,119,104,101,110,32,103,101,116,95,99, - 111,100,101,40,41,32,114,101,116,117,114,110,115,32,78,111, - 110,101,41,8,218,8,103,101,116,95,99,111,100,101,114,149, - 0,0,0,114,141,0,0,0,114,88,0,0,0,114,158,0, - 0,0,218,25,95,99,97,108,108,95,119,105,116,104,95,102, - 114,97,109,101,115,95,114,101,109,111,118,101,100,218,4,101, - 120,101,99,114,155,0,0,0,41,3,114,142,0,0,0,218, - 6,109,111,100,117,108,101,114,188,0,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,218,11,101,120,101, - 99,95,109,111,100,117,108,101,76,3,0,0,115,12,0,0, - 0,0,2,12,1,8,1,6,1,4,255,6,2,122,25,95, - 76,111,97,100,101,114,66,97,115,105,99,115,46,101,120,101, - 99,95,109,111,100,117,108,101,99,2,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,4,0,0,0,67,0,0, - 0,115,12,0,0,0,116,0,160,1,124,0,124,1,161,2, - 83,0,41,1,122,26,84,104,105,115,32,109,111,100,117,108, - 101,32,105,115,32,100,101,112,114,101,99,97,116,101,100,46, - 41,2,114,158,0,0,0,218,17,95,108,111,97,100,95,109, - 111,100,117,108,101,95,115,104,105,109,169,2,114,142,0,0, - 0,114,163,0,0,0,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,218,11,108,111,97,100,95,109,111,100,117, - 108,101,84,3,0,0,115,2,0,0,0,0,2,122,25,95, - 76,111,97,100,101,114,66,97,115,105,99,115,46,108,111,97, - 100,95,109,111,100,117,108,101,78,41,8,114,149,0,0,0, - 114,148,0,0,0,114,150,0,0,0,114,151,0,0,0,114, - 206,0,0,0,114,235,0,0,0,114,240,0,0,0,114,243, - 0,0,0,114,10,0,0,0,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,114,231,0,0,0,60,3,0,0, - 115,10,0,0,0,8,2,4,3,8,8,8,3,8,8,114, - 231,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,64,0,0,0,115,74,0, - 0,0,101,0,90,1,100,0,90,2,100,1,100,2,132,0, - 90,3,100,3,100,4,132,0,90,4,100,5,100,6,132,0, - 90,5,100,7,100,8,132,0,90,6,100,9,100,10,132,0, - 90,7,100,11,100,12,156,1,100,13,100,14,132,2,90,8, - 100,15,100,16,132,0,90,9,100,17,83,0,41,18,218,12, - 83,111,117,114,99,101,76,111,97,100,101,114,99,2,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0, - 0,67,0,0,0,115,8,0,0,0,116,0,130,1,100,1, - 83,0,41,2,122,165,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, - 32,40,97,32,115,116,114,41,46,10,10,32,32,32,32,32, - 32,32,32,82,97,105,115,101,115,32,79,83,69,114,114,111, - 114,32,119,104,101,110,32,116,104,101,32,112,97,116,104,32, - 99,97,110,110,111,116,32,98,101,32,104,97,110,100,108,101, - 100,46,10,32,32,32,32,32,32,32,32,78,41,1,114,76, - 0,0,0,169,2,114,142,0,0,0,114,65,0,0,0,114, - 10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,10, - 112,97,116,104,95,109,116,105,109,101,91,3,0,0,115,2, - 0,0,0,0,6,122,23,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,0,0,0,0,2,0,0,0,4, - 0,0,0,67,0,0,0,115,14,0,0,0,100,1,124,0, - 160,0,124,1,161,1,105,1,83,0,41,2,97,158,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,10,32,32,32, - 32,32,32,32,32,112,97,116,104,32,40,97,32,115,116,114, - 41,46,10,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,82,97,105,115,101,115,32,79,83, - 69,114,114,111,114,32,119,104,101,110,32,116,104,101,32,112, - 97,116,104,32,99,97,110,110,111,116,32,98,101,32,104,97, - 110,100,108,101,100,46,10,32,32,32,32,32,32,32,32,114, - 193,0,0,0,41,1,114,246,0,0,0,114,245,0,0,0, - 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,218, - 10,112,97,116,104,95,115,116,97,116,115,99,3,0,0,115, - 2,0,0,0,0,12,122,23,83,111,117,114,99,101,76,111, - 97,100,101,114,46,112,97,116,104,95,115,116,97,116,115,99, - 4,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 4,0,0,0,67,0,0,0,115,12,0,0,0,124,0,160, - 0,124,2,124,3,161,2,83,0,41,1,122,228,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,84,104,101,32,115,111,117,114,99,101,32,112, - 97,116,104,32,105,115,32,110,101,101,100,101,100,32,105,110, - 32,111,114,100,101,114,32,116,111,32,99,111,114,114,101,99, - 116,108,121,32,116,114,97,110,115,102,101,114,32,112,101,114, - 109,105,115,115,105,111,110,115,10,32,32,32,32,32,32,32, - 32,41,1,218,8,115,101,116,95,100,97,116,97,41,4,114, - 142,0,0,0,114,133,0,0,0,90,10,99,97,99,104,101, - 95,112,97,116,104,114,43,0,0,0,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,218,15,95,99,97,99,104, - 101,95,98,121,116,101,99,111,100,101,113,3,0,0,115,2, - 0,0,0,0,8,122,28,83,111,117,114,99,101,76,111,97, - 100,101,114,46,95,99,97,99,104,101,95,98,121,116,101,99, - 111,100,101,99,3,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,1,0,0,0,67,0,0,0,115,4,0,0, - 0,100,1,83,0,41,2,122,150,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,32,32,32,32,32,32,32,32,78, - 114,10,0,0,0,41,3,114,142,0,0,0,114,65,0,0, - 0,114,43,0,0,0,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,114,248,0,0,0,123,3,0,0,115,2, - 0,0,0,0,1,122,21,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,0,0,0,0,5,0,0,0,10,0,0, - 0,67,0,0,0,115,84,0,0,0,124,0,160,0,124,1, - 161,1,125,2,122,14,124,0,160,1,124,2,161,1,125,3, - 87,0,110,50,4,0,116,2,121,74,1,0,125,4,1,0, - 122,26,116,3,100,1,124,1,100,2,141,2,124,4,130,2, - 87,0,89,0,100,3,125,4,126,4,110,10,100,3,125,4, - 126,4,48,0,48,0,116,4,124,3,131,1,83,0,41,4, - 122,52,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,122,39,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,114, - 139,0,0,0,78,41,5,114,203,0,0,0,218,8,103,101, - 116,95,100,97,116,97,114,76,0,0,0,114,141,0,0,0, - 114,200,0,0,0,41,5,114,142,0,0,0,114,163,0,0, - 0,114,65,0,0,0,114,198,0,0,0,218,3,101,120,99, - 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,218, - 10,103,101,116,95,115,111,117,114,99,101,130,3,0,0,115, - 20,0,0,0,0,2,10,1,2,1,14,1,14,1,4,1, - 2,255,4,1,2,255,24,2,122,23,83,111,117,114,99,101, - 76,111,97,100,101,114,46,103,101,116,95,115,111,117,114,99, - 101,114,129,0,0,0,41,1,218,9,95,111,112,116,105,109, - 105,122,101,99,3,0,0,0,0,0,0,0,1,0,0,0, - 4,0,0,0,8,0,0,0,67,0,0,0,115,22,0,0, - 0,116,0,106,1,116,2,124,1,124,2,100,1,100,2,124, - 3,100,3,141,6,83,0,41,4,122,130,82,101,116,117,114, - 110,32,116,104,101,32,99,111,100,101,32,111,98,106,101,99, - 116,32,99,111,109,112,105,108,101,100,32,102,114,111,109,32, - 115,111,117,114,99,101,46,10,10,32,32,32,32,32,32,32, - 32,84,104,101,32,39,100,97,116,97,39,32,97,114,103,117, - 109,101,110,116,32,99,97,110,32,98,101,32,97,110,121,32, - 111,98,106,101,99,116,32,116,121,112,101,32,116,104,97,116, - 32,99,111,109,112,105,108,101,40,41,32,115,117,112,112,111, - 114,116,115,46,10,32,32,32,32,32,32,32,32,114,238,0, - 0,0,84,41,2,218,12,100,111,110,116,95,105,110,104,101, - 114,105,116,114,107,0,0,0,41,3,114,158,0,0,0,114, - 237,0,0,0,218,7,99,111,109,112,105,108,101,41,4,114, - 142,0,0,0,114,43,0,0,0,114,65,0,0,0,114,253, - 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, - 0,0,218,14,115,111,117,114,99,101,95,116,111,95,99,111, - 100,101,140,3,0,0,115,6,0,0,0,0,5,12,1,4, - 255,122,27,83,111,117,114,99,101,76,111,97,100,101,114,46, - 115,111,117,114,99,101,95,116,111,95,99,111,100,101,99,2, - 0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,9, - 0,0,0,67,0,0,0,115,24,2,0,0,124,0,160,0, - 124,1,161,1,125,2,100,1,125,3,100,1,125,4,100,1, - 125,5,100,2,125,6,100,3,125,7,122,12,116,1,124,2, - 131,1,125,8,87,0,110,24,4,0,116,2,121,66,1,0, - 1,0,1,0,100,1,125,8,89,0,144,1,110,42,48,0, - 122,14,124,0,160,3,124,2,161,1,125,9,87,0,110,20, - 4,0,116,4,121,102,1,0,1,0,1,0,89,0,144,1, - 110,6,48,0,116,5,124,9,100,4,25,0,131,1,125,3, - 122,14,124,0,160,6,124,8,161,1,125,10,87,0,110,18, - 4,0,116,4,121,148,1,0,1,0,1,0,89,0,110,216, - 48,0,124,1,124,8,100,5,156,2,125,11,122,148,116,7, - 124,10,124,1,124,11,131,3,125,12,116,8,124,10,131,1, - 100,6,100,1,133,2,25,0,125,13,124,12,100,7,64,0, - 100,8,107,3,125,6,124,6,144,1,114,30,124,12,100,9, - 64,0,100,8,107,3,125,7,116,9,106,10,100,10,107,3, - 144,1,114,50,124,7,115,248,116,9,106,10,100,11,107,2, - 144,1,114,50,124,0,160,6,124,2,161,1,125,4,116,9, - 160,11,116,12,124,4,161,2,125,5,116,13,124,10,124,5, - 124,1,124,11,131,4,1,0,110,20,116,14,124,10,124,3, - 124,9,100,12,25,0,124,1,124,11,131,5,1,0,87,0, - 110,24,4,0,116,15,116,16,102,2,144,1,121,76,1,0, - 1,0,1,0,89,0,110,32,48,0,116,17,160,18,100,13, - 124,8,124,2,161,3,1,0,116,19,124,13,124,1,124,8, - 124,2,100,14,141,4,83,0,124,4,100,1,117,0,144,1, - 114,128,124,0,160,6,124,2,161,1,125,4,124,0,160,20, - 124,4,124,2,161,2,125,14,116,17,160,18,100,15,124,2, - 161,2,1,0,116,21,106,22,144,2,115,20,124,8,100,1, - 117,1,144,2,114,20,124,3,100,1,117,1,144,2,114,20, - 124,6,144,1,114,220,124,5,100,1,117,0,144,1,114,206, - 116,9,160,11,124,4,161,1,125,5,116,23,124,14,124,5, - 124,7,131,3,125,10,110,16,116,24,124,14,124,3,116,25, - 124,4,131,1,131,3,125,10,122,18,124,0,160,26,124,2, - 124,8,124,10,161,3,1,0,87,0,110,20,4,0,116,2, - 144,2,121,18,1,0,1,0,1,0,89,0,110,2,48,0, - 124,14,83,0,41,16,122,190,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,78,70,84,114,193,0,0,0,114,183, - 0,0,0,114,169,0,0,0,114,4,0,0,0,114,0,0, - 0,0,114,45,0,0,0,90,5,110,101,118,101,114,90,6, - 97,108,119,97,121,115,218,4,115,105,122,101,122,13,123,125, - 32,109,97,116,99,104,101,115,32,123,125,41,3,114,140,0, - 0,0,114,131,0,0,0,114,133,0,0,0,122,19,99,111, - 100,101,32,111,98,106,101,99,116,32,102,114,111,109,32,123, - 125,41,27,114,203,0,0,0,114,120,0,0,0,114,106,0, - 0,0,114,247,0,0,0,114,76,0,0,0,114,36,0,0, - 0,114,250,0,0,0,114,176,0,0,0,218,10,109,101,109, - 111,114,121,118,105,101,119,114,187,0,0,0,90,21,99,104, - 101,99,107,95,104,97,115,104,95,98,97,115,101,100,95,112, - 121,99,115,114,181,0,0,0,218,17,95,82,65,87,95,77, - 65,71,73,67,95,78,85,77,66,69,82,114,182,0,0,0, - 114,180,0,0,0,114,141,0,0,0,114,174,0,0,0,114, - 158,0,0,0,114,173,0,0,0,114,189,0,0,0,114,0, - 1,0,0,114,21,0,0,0,218,19,100,111,110,116,95,119, - 114,105,116,101,95,98,121,116,101,99,111,100,101,114,195,0, - 0,0,114,194,0,0,0,114,6,0,0,0,114,249,0,0, - 0,41,15,114,142,0,0,0,114,163,0,0,0,114,133,0, - 0,0,114,178,0,0,0,114,198,0,0,0,114,181,0,0, - 0,90,10,104,97,115,104,95,98,97,115,101,100,90,12,99, - 104,101,99,107,95,115,111,117,114,99,101,114,131,0,0,0, - 218,2,115,116,114,43,0,0,0,114,175,0,0,0,114,22, - 0,0,0,90,10,98,121,116,101,115,95,100,97,116,97,90, - 11,99,111,100,101,95,111,98,106,101,99,116,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,114,236,0,0,0, - 148,3,0,0,115,152,0,0,0,0,7,10,1,4,1,4, - 1,4,1,4,1,4,1,2,1,12,1,12,1,12,2,2, - 1,14,1,12,1,8,2,12,1,2,1,14,1,12,1,6, - 3,2,1,2,254,6,4,2,1,12,1,16,1,12,1,6, - 1,12,1,12,1,2,255,2,2,8,254,4,3,10,1,4, - 1,2,1,2,254,4,4,8,1,2,255,6,3,2,1,2, - 1,2,1,6,1,2,1,2,251,8,7,18,1,6,2,8, - 1,2,255,4,2,6,1,2,1,2,254,6,3,10,1,10, - 1,12,1,12,1,18,1,6,255,4,2,6,1,10,1,10, - 1,14,2,6,1,6,255,4,2,2,1,18,1,14,1,6, - 1,122,21,83,111,117,114,99,101,76,111,97,100,101,114,46, - 103,101,116,95,99,111,100,101,78,41,10,114,149,0,0,0, - 114,148,0,0,0,114,150,0,0,0,114,246,0,0,0,114, - 247,0,0,0,114,249,0,0,0,114,248,0,0,0,114,252, - 0,0,0,114,0,1,0,0,114,236,0,0,0,114,10,0, - 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,114,244,0,0,0,89,3,0,0,115,14,0,0,0,8, - 2,8,8,8,14,8,10,8,7,8,10,14,8,114,244,0, - 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,4,0,0,0,0,0,0,0,115,124,0,0,0, - 101,0,90,1,100,0,90,2,100,1,90,3,100,2,100,3, - 132,0,90,4,100,4,100,5,132,0,90,5,100,6,100,7, - 132,0,90,6,101,7,135,0,102,1,100,8,100,9,132,8, - 131,1,90,8,101,7,100,10,100,11,132,0,131,1,90,9, - 100,12,100,13,132,0,90,10,101,7,100,14,100,15,132,0, - 131,1,90,11,100,16,100,17,132,0,90,12,100,18,100,19, - 132,0,90,13,100,20,100,21,132,0,90,14,100,22,100,23, - 132,0,90,15,135,0,4,0,90,16,83,0,41,24,218,10, - 70,105,108,101,76,111,97,100,101,114,122,103,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,0,0,0,0, - 3,0,0,0,2,0,0,0,67,0,0,0,115,16,0,0, - 0,124,1,124,0,95,0,124,2,124,0,95,1,100,1,83, - 0,41,2,122,75,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,114,183,0,0,0,41,3,114,142,0,0,0,114,163,0, - 0,0,114,65,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,114,232,0,0,0,238,3,0,0,115, - 4,0,0,0,0,3,6,1,122,19,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,0,0,0,0,2,0,0,0,2,0, - 0,0,67,0,0,0,115,24,0,0,0,124,0,106,0,124, - 1,106,0,107,2,111,22,124,0,106,1,124,1,106,1,107, - 2,83,0,114,69,0,0,0,169,2,218,9,95,95,99,108, - 97,115,115,95,95,114,155,0,0,0,169,2,114,142,0,0, - 0,90,5,111,116,104,101,114,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,218,6,95,95,101,113,95,95,244, - 3,0,0,115,6,0,0,0,0,1,12,1,10,255,122,17, - 70,105,108,101,76,111,97,100,101,114,46,95,95,101,113,95, - 95,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, - 0,0,3,0,0,0,67,0,0,0,115,20,0,0,0,116, - 0,124,0,106,1,131,1,116,0,124,0,106,2,131,1,65, - 0,83,0,114,69,0,0,0,169,3,218,4,104,97,115,104, - 114,140,0,0,0,114,65,0,0,0,169,1,114,142,0,0, - 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 218,8,95,95,104,97,115,104,95,95,248,3,0,0,115,2, - 0,0,0,0,1,122,19,70,105,108,101,76,111,97,100,101, - 114,46,95,95,104,97,115,104,95,95,99,2,0,0,0,0, - 0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,3, - 0,0,0,115,16,0,0,0,116,0,116,1,124,0,131,2, - 160,2,124,1,161,1,83,0,41,1,122,100,76,111,97,100, - 32,97,32,109,111,100,117,108,101,32,102,114,111,109,32,97, - 32,102,105,108,101,46,10,10,32,32,32,32,32,32,32,32, - 84,104,105,115,32,109,101,116,104,111,100,32,105,115,32,100, - 101,112,114,101,99,97,116,101,100,46,32,32,85,115,101,32, - 101,120,101,99,95,109,111,100,117,108,101,40,41,32,105,110, - 115,116,101,97,100,46,10,10,32,32,32,32,32,32,32,32, - 41,3,218,5,115,117,112,101,114,114,6,1,0,0,114,243, - 0,0,0,114,242,0,0,0,169,1,114,8,1,0,0,114, - 10,0,0,0,114,11,0,0,0,114,243,0,0,0,251,3, - 0,0,115,2,0,0,0,0,10,122,22,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,0,0,0,0,2,0, - 0,0,1,0,0,0,67,0,0,0,115,6,0,0,0,124, - 0,106,0,83,0,169,1,122,58,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,114,71,0,0,0,114,242,0,0,0,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,114,203,0,0, - 0,7,4,0,0,115,2,0,0,0,0,3,122,23,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,0,0, - 0,0,3,0,0,0,8,0,0,0,67,0,0,0,115,126, - 0,0,0,116,0,124,0,116,1,116,2,102,2,131,2,114, - 70,116,3,160,4,116,5,124,1,131,1,161,1,143,24,125, - 2,124,2,160,6,161,0,87,0,2,0,100,1,4,0,4, - 0,131,3,1,0,83,0,49,0,115,58,48,0,1,0,1, - 0,1,0,89,0,1,0,110,52,116,3,160,7,124,1,100, - 2,161,2,143,24,125,2,124,2,160,6,161,0,87,0,2, - 0,100,1,4,0,4,0,131,3,1,0,83,0,49,0,115, - 112,48,0,1,0,1,0,1,0,89,0,1,0,100,1,83, - 0,41,3,122,39,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,78,218,1,114, - 41,8,114,185,0,0,0,114,244,0,0,0,218,19,69,120, - 116,101,110,115,105,111,110,70,105,108,101,76,111,97,100,101, - 114,114,90,0,0,0,90,9,111,112,101,110,95,99,111,100, - 101,114,108,0,0,0,90,4,114,101,97,100,114,91,0,0, - 0,41,3,114,142,0,0,0,114,65,0,0,0,114,93,0, - 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,114,250,0,0,0,12,4,0,0,115,10,0,0,0,0, - 2,14,1,16,1,40,2,14,1,122,19,70,105,108,101,76, - 111,97,100,101,114,46,103,101,116,95,100,97,116,97,99,2, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3, - 0,0,0,67,0,0,0,115,18,0,0,0,124,0,160,0, - 124,1,161,1,114,14,124,0,83,0,100,0,83,0,114,69, - 0,0,0,41,1,114,206,0,0,0,169,2,114,142,0,0, - 0,114,239,0,0,0,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,218,19,103,101,116,95,114,101,115,111,117, - 114,99,101,95,114,101,97,100,101,114,23,4,0,0,115,6, - 0,0,0,0,2,10,1,4,1,122,30,70,105,108,101,76, - 111,97,100,101,114,46,103,101,116,95,114,101,115,111,117,114, - 99,101,95,114,101,97,100,101,114,99,2,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,4,0,0,0,67,0, - 0,0,115,32,0,0,0,116,0,116,1,124,0,106,2,131, - 1,100,1,25,0,124,1,131,2,125,2,116,3,160,4,124, - 2,100,2,161,2,83,0,41,3,78,114,0,0,0,0,114, - 18,1,0,0,41,5,114,67,0,0,0,114,74,0,0,0, - 114,65,0,0,0,114,90,0,0,0,114,91,0,0,0,169, - 3,114,142,0,0,0,90,8,114,101,115,111,117,114,99,101, - 114,65,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,218,13,111,112,101,110,95,114,101,115,111,117, - 114,99,101,29,4,0,0,115,4,0,0,0,0,1,20,1, - 122,24,70,105,108,101,76,111,97,100,101,114,46,111,112,101, - 110,95,114,101,115,111,117,114,99,101,99,2,0,0,0,0, - 0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,67, - 0,0,0,115,38,0,0,0,124,0,160,0,124,1,161,1, - 115,14,116,1,130,1,116,2,116,3,124,0,106,4,131,1, - 100,1,25,0,124,1,131,2,125,2,124,2,83,0,169,2, - 78,114,0,0,0,0,41,5,218,11,105,115,95,114,101,115, - 111,117,114,99,101,218,17,70,105,108,101,78,111,116,70,111, - 117,110,100,69,114,114,111,114,114,67,0,0,0,114,74,0, - 0,0,114,65,0,0,0,114,22,1,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,218,13,114,101,115, - 111,117,114,99,101,95,112,97,116,104,33,4,0,0,115,8, - 0,0,0,0,1,10,1,4,1,20,1,122,24,70,105,108, - 101,76,111,97,100,101,114,46,114,101,115,111,117,114,99,101, - 95,112,97,116,104,99,2,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,3,0,0,0,67,0,0,0,115,40, - 0,0,0,116,0,124,1,118,0,114,12,100,1,83,0,116, - 1,116,2,124,0,106,3,131,1,100,2,25,0,124,1,131, - 2,125,2,116,4,124,2,131,1,83,0,41,3,78,70,114, - 0,0,0,0,41,5,114,59,0,0,0,114,67,0,0,0, - 114,74,0,0,0,114,65,0,0,0,114,80,0,0,0,169, - 3,114,142,0,0,0,114,140,0,0,0,114,65,0,0,0, - 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,114, - 25,1,0,0,39,4,0,0,115,8,0,0,0,0,1,8, - 1,4,1,20,1,122,22,70,105,108,101,76,111,97,100,101, - 114,46,105,115,95,114,101,115,111,117,114,99,101,99,1,0, - 0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0, - 0,0,67,0,0,0,115,24,0,0,0,116,0,116,1,160, - 2,116,3,124,0,106,4,131,1,100,1,25,0,161,1,131, - 1,83,0,114,24,1,0,0,41,5,218,4,105,116,101,114, - 114,24,0,0,0,218,7,108,105,115,116,100,105,114,114,74, - 0,0,0,114,65,0,0,0,114,13,1,0,0,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,218,8,99,111, - 110,116,101,110,116,115,45,4,0,0,115,2,0,0,0,0, - 1,122,19,70,105,108,101,76,111,97,100,101,114,46,99,111, - 110,116,101,110,116,115,41,17,114,149,0,0,0,114,148,0, - 0,0,114,150,0,0,0,114,151,0,0,0,114,232,0,0, - 0,114,10,1,0,0,114,14,1,0,0,114,160,0,0,0, - 114,243,0,0,0,114,203,0,0,0,114,250,0,0,0,114, - 21,1,0,0,114,23,1,0,0,114,27,1,0,0,114,25, - 1,0,0,114,31,1,0,0,90,13,95,95,99,108,97,115, - 115,99,101,108,108,95,95,114,10,0,0,0,114,10,0,0, - 0,114,16,1,0,0,114,11,0,0,0,114,6,1,0,0, - 233,3,0,0,115,30,0,0,0,8,2,4,3,8,6,8, - 4,8,3,2,1,14,11,2,1,10,4,8,11,2,1,10, - 5,8,4,8,6,8,6,114,6,1,0,0,99,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0, - 0,64,0,0,0,115,46,0,0,0,101,0,90,1,100,0, - 90,2,100,1,90,3,100,2,100,3,132,0,90,4,100,4, - 100,5,132,0,90,5,100,6,100,7,156,1,100,8,100,9, - 132,2,90,6,100,10,83,0,41,11,218,16,83,111,117,114, - 99,101,70,105,108,101,76,111,97,100,101,114,122,62,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,0,0,0,0,3,0,0,0,3,0,0, - 0,67,0,0,0,115,22,0,0,0,116,0,124,1,131,1, - 125,2,124,2,106,1,124,2,106,2,100,1,156,2,83,0, - 41,2,122,33,82,101,116,117,114,110,32,116,104,101,32,109, - 101,116,97,100,97,116,97,32,102,111,114,32,116,104,101,32, - 112,97,116,104,46,41,2,114,193,0,0,0,114,1,1,0, - 0,41,3,114,75,0,0,0,218,8,115,116,95,109,116,105, - 109,101,90,7,115,116,95,115,105,122,101,41,3,114,142,0, - 0,0,114,65,0,0,0,114,5,1,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,114,247,0,0,0, - 53,4,0,0,115,4,0,0,0,0,2,8,1,122,27,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,4,0,0,0,0, + 6,83,0,41,7,218,20,83,111,117,114,99,101,108,101,115, + 115,70,105,108,101,76,111,97,100,101,114,122,45,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,0,0,0,0,5,0,0,0,5,0,0,0,67, - 0,0,0,115,24,0,0,0,116,0,124,1,131,1,125,4, - 124,0,106,1,124,2,124,3,124,4,100,1,141,3,83,0, - 41,2,78,169,1,218,5,95,109,111,100,101,41,2,114,138, - 0,0,0,114,248,0,0,0,41,5,114,142,0,0,0,114, - 133,0,0,0,114,131,0,0,0,114,43,0,0,0,114,78, - 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, - 0,0,114,249,0,0,0,58,4,0,0,115,4,0,0,0, - 0,2,8,1,122,32,83,111,117,114,99,101,70,105,108,101, - 76,111,97,100,101,114,46,95,99,97,99,104,101,95,98,121, - 116,101,99,111,100,101,114,86,0,0,0,114,34,1,0,0, - 99,3,0,0,0,0,0,0,0,1,0,0,0,9,0,0, - 0,11,0,0,0,67,0,0,0,115,252,0,0,0,116,0, - 124,1,131,1,92,2,125,4,125,5,103,0,125,6,124,4, - 114,52,116,1,124,4,131,1,115,52,116,0,124,4,131,1, - 92,2,125,4,125,7,124,6,160,2,124,7,161,1,1,0, - 113,16,116,3,124,6,131,1,68,0,93,104,125,7,116,4, - 124,4,124,7,131,2,125,4,122,14,116,5,160,6,124,4, - 161,1,1,0,87,0,113,60,4,0,116,7,121,110,1,0, - 1,0,1,0,89,0,113,60,89,0,113,60,4,0,116,8, - 121,162,1,0,125,8,1,0,122,30,116,9,160,10,100,1, - 124,4,124,8,161,3,1,0,87,0,89,0,100,2,125,8, - 126,8,1,0,100,2,83,0,100,2,125,8,126,8,48,0, - 48,0,113,60,122,28,116,11,124,1,124,2,124,3,131,3, - 1,0,116,9,160,10,100,3,124,1,161,2,1,0,87,0, - 110,52,4,0,116,8,144,0,121,246,1,0,125,8,1,0, - 122,26,116,9,160,10,100,1,124,1,124,8,161,3,1,0, - 87,0,89,0,100,2,125,8,126,8,110,10,100,2,125,8, - 126,8,48,0,48,0,100,2,83,0,41,4,122,27,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,122,27,99,111,117,108,100, - 32,110,111,116,32,99,114,101,97,116,101,32,123,33,114,125, - 58,32,123,33,114,125,78,122,12,99,114,101,97,116,101,100, - 32,123,33,114,125,41,12,114,74,0,0,0,114,82,0,0, - 0,114,61,0,0,0,218,8,114,101,118,101,114,115,101,100, - 114,67,0,0,0,114,24,0,0,0,90,5,109,107,100,105, - 114,218,15,70,105,108,101,69,120,105,115,116,115,69,114,114, - 111,114,114,76,0,0,0,114,158,0,0,0,114,173,0,0, - 0,114,94,0,0,0,41,9,114,142,0,0,0,114,65,0, - 0,0,114,43,0,0,0,114,35,1,0,0,218,6,112,97, - 114,101,110,116,114,119,0,0,0,114,63,0,0,0,114,68, - 0,0,0,114,251,0,0,0,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,114,248,0,0,0,63,4,0,0, - 115,46,0,0,0,0,2,12,1,4,2,12,1,12,1,12, - 2,12,1,10,1,2,1,14,1,12,2,8,1,14,3,6, - 1,4,255,4,2,28,1,2,1,12,1,16,1,16,2,8, - 1,2,255,122,25,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,41, - 7,114,149,0,0,0,114,148,0,0,0,114,150,0,0,0, - 114,151,0,0,0,114,247,0,0,0,114,249,0,0,0,114, - 248,0,0,0,114,10,0,0,0,114,10,0,0,0,114,10, - 0,0,0,114,11,0,0,0,114,32,1,0,0,49,4,0, - 0,115,8,0,0,0,8,2,4,2,8,5,8,5,114,32, + 0,0,0,115,68,0,0,0,124,0,160,0,124,1,161,1, + 125,2,124,0,160,1,124,2,161,1,125,3,124,1,124,2, + 100,1,156,2,125,4,116,2,124,3,124,1,124,4,131,3, + 1,0,116,3,116,4,124,3,131,1,100,2,100,0,133,2, + 25,0,124,1,124,2,100,3,141,3,83,0,41,4,78,114, + 187,0,0,0,114,173,0,0,0,41,2,114,144,0,0,0, + 114,134,0,0,0,41,5,114,207,0,0,0,114,254,0,0, + 0,114,180,0,0,0,114,193,0,0,0,114,6,1,0,0, + 41,5,114,146,0,0,0,114,167,0,0,0,114,68,0,0, + 0,114,46,0,0,0,114,179,0,0,0,114,10,0,0,0, + 114,10,0,0,0,114,11,0,0,0,114,240,0,0,0,98, + 4,0,0,115,22,0,0,0,0,1,10,1,10,4,2,1, + 2,254,6,4,12,1,2,1,14,1,2,1,2,253,122,29, + 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,0,0,0,0,2,0,0,0,1,0, + 0,0,67,0,0,0,115,4,0,0,0,100,1,83,0,41, + 2,122,39,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,114,10,0,0,0, + 114,246,0,0,0,114,10,0,0,0,114,10,0,0,0,114, + 11,0,0,0,114,0,1,0,0,114,4,0,0,115,2,0, + 0,0,0,2,122,31,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,41,6,114,153,0,0,0,114,152,0, + 0,0,114,154,0,0,0,114,155,0,0,0,114,240,0,0, + 0,114,0,1,0,0,114,10,0,0,0,114,10,0,0,0, + 114,10,0,0,0,114,11,0,0,0,114,44,1,0,0,94, + 4,0,0,115,6,0,0,0,8,2,4,2,8,16,114,44, 1,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,2,0,0,0,64,0,0,0,115,32,0,0, + 0,0,0,0,3,0,0,0,64,0,0,0,115,92,0,0, 0,101,0,90,1,100,0,90,2,100,1,90,3,100,2,100, - 3,132,0,90,4,100,4,100,5,132,0,90,5,100,6,83, - 0,41,7,218,20,83,111,117,114,99,101,108,101,115,115,70, - 105,108,101,76,111,97,100,101,114,122,45,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,0,0,0,0,5,0,0,0,5,0,0,0,67,0,0, - 0,115,68,0,0,0,124,0,160,0,124,1,161,1,125,2, - 124,0,160,1,124,2,161,1,125,3,124,1,124,2,100,1, - 156,2,125,4,116,2,124,3,124,1,124,4,131,3,1,0, - 116,3,116,4,124,3,131,1,100,2,100,0,133,2,25,0, - 124,1,124,2,100,3,141,3,83,0,41,4,78,114,183,0, - 0,0,114,169,0,0,0,41,2,114,140,0,0,0,114,131, - 0,0,0,41,5,114,203,0,0,0,114,250,0,0,0,114, - 176,0,0,0,114,189,0,0,0,114,2,1,0,0,41,5, - 114,142,0,0,0,114,163,0,0,0,114,65,0,0,0,114, - 43,0,0,0,114,175,0,0,0,114,10,0,0,0,114,10, - 0,0,0,114,11,0,0,0,114,236,0,0,0,98,4,0, - 0,115,22,0,0,0,0,1,10,1,10,4,2,1,2,254, - 6,4,12,1,2,1,14,1,2,1,2,253,122,29,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,0,0,0,0,2,0,0,0,1,0,0,0, - 67,0,0,0,115,4,0,0,0,100,1,83,0,41,2,122, - 39,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,114,10,0,0,0,114,242, - 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, - 0,0,114,252,0,0,0,114,4,0,0,115,2,0,0,0, - 0,2,122,31,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,41,6,114,149,0,0,0,114,148,0,0,0, - 114,150,0,0,0,114,151,0,0,0,114,236,0,0,0,114, - 252,0,0,0,114,10,0,0,0,114,10,0,0,0,114,10, - 0,0,0,114,11,0,0,0,114,39,1,0,0,94,4,0, - 0,115,6,0,0,0,8,2,4,2,8,16,114,39,1,0, - 0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,64,0,0,0,115,92,0,0,0,101, - 0,90,1,100,0,90,2,100,1,90,3,100,2,100,3,132, - 0,90,4,100,4,100,5,132,0,90,5,100,6,100,7,132, - 0,90,6,100,8,100,9,132,0,90,7,100,10,100,11,132, - 0,90,8,100,12,100,13,132,0,90,9,100,14,100,15,132, - 0,90,10,100,16,100,17,132,0,90,11,101,12,100,18,100, - 19,132,0,131,1,90,13,100,20,83,0,41,21,114,19,1, - 0,0,122,93,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,0,0,0,0,3,0, - 0,0,8,0,0,0,67,0,0,0,115,62,0,0,0,124, - 1,124,0,95,0,116,1,124,2,131,1,115,52,122,18,116, - 2,116,3,160,4,161,0,124,2,131,2,125,2,87,0,110, - 18,4,0,116,5,121,50,1,0,1,0,1,0,89,0,110, - 2,48,0,124,2,124,0,95,6,100,0,83,0,114,69,0, - 0,0,41,7,114,140,0,0,0,114,85,0,0,0,114,67, - 0,0,0,114,24,0,0,0,114,81,0,0,0,114,76,0, - 0,0,114,65,0,0,0,114,28,1,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,114,232,0,0,0, - 131,4,0,0,115,14,0,0,0,0,1,6,1,8,1,2, - 1,18,1,12,1,6,1,122,28,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,0,0, - 0,0,2,0,0,0,2,0,0,0,67,0,0,0,115,24, - 0,0,0,124,0,106,0,124,1,106,0,107,2,111,22,124, - 0,106,1,124,1,106,1,107,2,83,0,114,69,0,0,0, - 114,7,1,0,0,114,9,1,0,0,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,114,10,1,0,0,140,4, - 0,0,115,6,0,0,0,0,1,12,1,10,255,122,26,69, - 120,116,101,110,115,105,111,110,70,105,108,101,76,111,97,100, - 101,114,46,95,95,101,113,95,95,99,1,0,0,0,0,0, - 0,0,0,0,0,0,1,0,0,0,3,0,0,0,67,0, - 0,0,115,20,0,0,0,116,0,124,0,106,1,131,1,116, - 0,124,0,106,2,131,1,65,0,83,0,114,69,0,0,0, - 114,11,1,0,0,114,13,1,0,0,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,114,14,1,0,0,144,4, - 0,0,115,2,0,0,0,0,1,122,28,69,120,116,101,110, + 3,132,0,90,4,100,4,100,5,132,0,90,5,100,6,100, + 7,132,0,90,6,100,8,100,9,132,0,90,7,100,10,100, + 11,132,0,90,8,100,12,100,13,132,0,90,9,100,14,100, + 15,132,0,90,10,100,16,100,17,132,0,90,11,101,12,100, + 18,100,19,132,0,131,1,90,13,100,20,83,0,41,21,114, + 23,1,0,0,122,93,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,0,0,0,0, + 3,0,0,0,8,0,0,0,67,0,0,0,115,62,0,0, + 0,124,1,124,0,95,0,116,1,124,2,131,1,115,52,122, + 18,116,2,116,3,160,4,161,0,124,2,131,2,125,2,87, + 0,110,18,4,0,116,5,121,50,1,0,1,0,1,0,89, + 0,110,2,48,0,124,2,124,0,95,6,100,0,83,0,114, + 72,0,0,0,41,7,114,144,0,0,0,114,88,0,0,0, + 114,70,0,0,0,114,27,0,0,0,114,84,0,0,0,114, + 79,0,0,0,114,68,0,0,0,114,32,1,0,0,114,10, + 0,0,0,114,10,0,0,0,114,11,0,0,0,114,236,0, + 0,0,131,4,0,0,115,14,0,0,0,0,1,6,1,8, + 1,2,1,18,1,12,1,6,1,122,28,69,120,116,101,110, 115,105,111,110,70,105,108,101,76,111,97,100,101,114,46,95, - 95,104,97,115,104,95,95,99,2,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,5,0,0,0,67,0,0,0, - 115,36,0,0,0,116,0,160,1,116,2,106,3,124,1,161, - 2,125,2,116,0,160,4,100,1,124,1,106,5,124,0,106, - 6,161,3,1,0,124,2,83,0,41,2,122,38,67,114,101, - 97,116,101,32,97,110,32,117,110,105,116,105,97,108,105,122, - 101,100,32,101,120,116,101,110,115,105,111,110,32,109,111,100, - 117,108,101,122,38,101,120,116,101,110,115,105,111,110,32,109, - 111,100,117,108,101,32,123,33,114,125,32,108,111,97,100,101, - 100,32,102,114,111,109,32,123,33,114,125,41,7,114,158,0, - 0,0,114,237,0,0,0,114,187,0,0,0,90,14,99,114, - 101,97,116,101,95,100,121,110,97,109,105,99,114,173,0,0, - 0,114,140,0,0,0,114,65,0,0,0,41,3,114,142,0, - 0,0,114,210,0,0,0,114,239,0,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,114,235,0,0,0, - 147,4,0,0,115,14,0,0,0,0,2,4,1,6,255,4, - 2,6,1,8,255,4,2,122,33,69,120,116,101,110,115,105, - 111,110,70,105,108,101,76,111,97,100,101,114,46,99,114,101, - 97,116,101,95,109,111,100,117,108,101,99,2,0,0,0,0, - 0,0,0,0,0,0,0,2,0,0,0,5,0,0,0,67, - 0,0,0,115,36,0,0,0,116,0,160,1,116,2,106,3, - 124,1,161,2,1,0,116,0,160,4,100,1,124,0,106,5, - 124,0,106,6,161,3,1,0,100,2,83,0,41,3,122,30, - 73,110,105,116,105,97,108,105,122,101,32,97,110,32,101,120, - 116,101,110,115,105,111,110,32,109,111,100,117,108,101,122,40, - 101,120,116,101,110,115,105,111,110,32,109,111,100,117,108,101, - 32,123,33,114,125,32,101,120,101,99,117,116,101,100,32,102, - 114,111,109,32,123,33,114,125,78,41,7,114,158,0,0,0, - 114,237,0,0,0,114,187,0,0,0,90,12,101,120,101,99, - 95,100,121,110,97,109,105,99,114,173,0,0,0,114,140,0, - 0,0,114,65,0,0,0,114,20,1,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,114,240,0,0,0, - 155,4,0,0,115,8,0,0,0,0,2,14,1,6,1,8, - 255,122,31,69,120,116,101,110,115,105,111,110,70,105,108,101, - 76,111,97,100,101,114,46,101,120,101,99,95,109,111,100,117, - 108,101,99,2,0,0,0,0,0,0,0,0,0,0,0,2, - 0,0,0,4,0,0,0,3,0,0,0,115,36,0,0,0, - 116,0,124,0,106,1,131,1,100,1,25,0,137,0,116,2, - 135,0,102,1,100,2,100,3,132,8,116,3,68,0,131,1, - 131,1,83,0,41,4,122,49,82,101,116,117,114,110,32,84, - 114,117,101,32,105,102,32,116,104,101,32,101,120,116,101,110, - 115,105,111,110,32,109,111,100,117,108,101,32,105,115,32,97, - 32,112,97,99,107,97,103,101,46,114,4,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4, - 0,0,0,51,0,0,0,115,26,0,0,0,124,0,93,18, - 125,1,136,0,100,0,124,1,23,0,107,2,86,0,1,0, - 113,2,100,1,83,0,41,2,114,232,0,0,0,78,114,10, - 0,0,0,169,2,114,8,0,0,0,218,6,115,117,102,102, - 105,120,169,1,90,9,102,105,108,101,95,110,97,109,101,114, - 10,0,0,0,114,11,0,0,0,114,12,0,0,0,164,4, - 0,0,115,4,0,0,0,4,1,2,255,122,49,69,120,116, + 95,105,110,105,116,95,95,99,2,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,2,0,0,0,67,0,0,0, + 115,24,0,0,0,124,0,106,0,124,1,106,0,107,2,111, + 22,124,0,106,1,124,1,106,1,107,2,83,0,114,72,0, + 0,0,114,11,1,0,0,114,13,1,0,0,114,10,0,0, + 0,114,10,0,0,0,114,11,0,0,0,114,14,1,0,0, + 140,4,0,0,115,6,0,0,0,0,1,12,1,10,255,122, + 26,69,120,116,101,110,115,105,111,110,70,105,108,101,76,111, + 97,100,101,114,46,95,95,101,113,95,95,99,1,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0, + 67,0,0,0,115,20,0,0,0,116,0,124,0,106,1,131, + 1,116,0,124,0,106,2,131,1,65,0,83,0,114,72,0, + 0,0,114,15,1,0,0,114,17,1,0,0,114,10,0,0, + 0,114,10,0,0,0,114,11,0,0,0,114,18,1,0,0, + 144,4,0,0,115,2,0,0,0,0,1,122,28,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,46,60,108,111,99, - 97,108,115,62,46,60,103,101,110,101,120,112,114,62,41,4, - 114,74,0,0,0,114,65,0,0,0,218,3,97,110,121,218, - 18,69,88,84,69,78,83,73,79,78,95,83,85,70,70,73, - 88,69,83,114,242,0,0,0,114,10,0,0,0,114,42,1, - 0,0,114,11,0,0,0,114,206,0,0,0,161,4,0,0, - 115,8,0,0,0,0,2,14,1,12,1,2,255,122,30,69, + 46,95,95,104,97,115,104,95,95,99,2,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,5,0,0,0,67,0, + 0,0,115,36,0,0,0,116,0,160,1,116,2,106,3,124, + 1,161,2,125,2,116,0,160,4,100,1,124,1,106,5,124, + 0,106,6,161,3,1,0,124,2,83,0,41,2,122,38,67, + 114,101,97,116,101,32,97,110,32,117,110,105,116,105,97,108, + 105,122,101,100,32,101,120,116,101,110,115,105,111,110,32,109, + 111,100,117,108,101,122,38,101,120,116,101,110,115,105,111,110, + 32,109,111,100,117,108,101,32,123,33,114,125,32,108,111,97, + 100,101,100,32,102,114,111,109,32,123,33,114,125,41,7,114, + 162,0,0,0,114,241,0,0,0,114,191,0,0,0,90,14, + 99,114,101,97,116,101,95,100,121,110,97,109,105,99,114,177, + 0,0,0,114,144,0,0,0,114,68,0,0,0,41,3,114, + 146,0,0,0,114,214,0,0,0,114,243,0,0,0,114,10, + 0,0,0,114,10,0,0,0,114,11,0,0,0,114,239,0, + 0,0,147,4,0,0,115,14,0,0,0,0,2,4,1,6, + 255,4,2,6,1,8,255,4,2,122,33,69,120,116,101,110, + 115,105,111,110,70,105,108,101,76,111,97,100,101,114,46,99, + 114,101,97,116,101,95,109,111,100,117,108,101,99,2,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,5,0,0, + 0,67,0,0,0,115,36,0,0,0,116,0,160,1,116,2, + 106,3,124,1,161,2,1,0,116,0,160,4,100,1,124,0, + 106,5,124,0,106,6,161,3,1,0,100,2,83,0,41,3, + 122,30,73,110,105,116,105,97,108,105,122,101,32,97,110,32, + 101,120,116,101,110,115,105,111,110,32,109,111,100,117,108,101, + 122,40,101,120,116,101,110,115,105,111,110,32,109,111,100,117, + 108,101,32,123,33,114,125,32,101,120,101,99,117,116,101,100, + 32,102,114,111,109,32,123,33,114,125,78,41,7,114,162,0, + 0,0,114,241,0,0,0,114,191,0,0,0,90,12,101,120, + 101,99,95,100,121,110,97,109,105,99,114,177,0,0,0,114, + 144,0,0,0,114,68,0,0,0,114,24,1,0,0,114,10, + 0,0,0,114,10,0,0,0,114,11,0,0,0,114,244,0, + 0,0,155,4,0,0,115,8,0,0,0,0,2,14,1,6, + 1,8,255,122,31,69,120,116,101,110,115,105,111,110,70,105, + 108,101,76,111,97,100,101,114,46,101,120,101,99,95,109,111, + 100,117,108,101,99,2,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,4,0,0,0,3,0,0,0,115,36,0, + 0,0,116,0,124,0,106,1,131,1,100,1,25,0,137,0, + 116,2,135,0,102,1,100,2,100,3,132,8,116,3,68,0, + 131,1,131,1,83,0,41,4,122,49,82,101,116,117,114,110, + 32,84,114,117,101,32,105,102,32,116,104,101,32,101,120,116, + 101,110,115,105,111,110,32,109,111,100,117,108,101,32,105,115, + 32,97,32,112,97,99,107,97,103,101,46,114,4,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,4,0,0,0,51,0,0,0,115,26,0,0,0,124,0, + 93,18,125,1,136,0,100,0,124,1,23,0,107,2,86,0, + 1,0,113,2,100,1,83,0,41,2,114,236,0,0,0,78, + 114,10,0,0,0,169,2,114,8,0,0,0,218,6,115,117, + 102,102,105,120,169,1,90,9,102,105,108,101,95,110,97,109, + 101,114,10,0,0,0,114,11,0,0,0,114,12,0,0,0, + 164,4,0,0,115,4,0,0,0,4,1,2,255,122,49,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,0,0,0,0,2,0,0,0,1,0, - 0,0,67,0,0,0,115,4,0,0,0,100,1,83,0,41, - 2,122,63,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,114,10,0,0,0,114,242,0,0,0,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,114,236,0,0, - 0,167,4,0,0,115,2,0,0,0,0,2,122,28,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,0,0,0,0,2,0,0,0,1,0,0,0,67, - 0,0,0,115,4,0,0,0,100,1,83,0,41,2,122,53, - 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,114,10,0,0,0,114,242,0,0,0, - 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,114, - 252,0,0,0,171,4,0,0,115,2,0,0,0,0,2,122, + 101,114,46,105,115,95,112,97,99,107,97,103,101,46,60,108, + 111,99,97,108,115,62,46,60,103,101,110,101,120,112,114,62, + 41,4,114,77,0,0,0,114,68,0,0,0,218,3,97,110, + 121,218,18,69,88,84,69,78,83,73,79,78,95,83,85,70, + 70,73,88,69,83,114,246,0,0,0,114,10,0,0,0,114, + 47,1,0,0,114,11,0,0,0,114,210,0,0,0,161,4, + 0,0,115,8,0,0,0,0,2,14,1,12,1,2,255,122, 30,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,99, + 97,100,101,114,46,105,115,95,112,97,99,107,97,103,101,99, 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 1,0,0,0,67,0,0,0,115,6,0,0,0,124,0,106, - 0,83,0,114,17,1,0,0,114,71,0,0,0,114,242,0, + 1,0,0,0,67,0,0,0,115,4,0,0,0,100,1,83, + 0,41,2,122,63,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,114,10,0,0,0,114,246,0,0,0,114, + 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,240, + 0,0,0,167,4,0,0,115,2,0,0,0,0,2,122,28, + 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,0,0,0,0,2,0,0,0,1,0,0, + 0,67,0,0,0,115,4,0,0,0,100,1,83,0,41,2, + 122,53,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,114,10,0,0,0,114,246,0, 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,114,203,0,0,0,175,4,0,0,115,2,0,0,0,0, - 3,122,32,69,120,116,101,110,115,105,111,110,70,105,108,101, - 76,111,97,100,101,114,46,103,101,116,95,102,105,108,101,110, - 97,109,101,78,41,14,114,149,0,0,0,114,148,0,0,0, - 114,150,0,0,0,114,151,0,0,0,114,232,0,0,0,114, - 10,1,0,0,114,14,1,0,0,114,235,0,0,0,114,240, - 0,0,0,114,206,0,0,0,114,236,0,0,0,114,252,0, - 0,0,114,160,0,0,0,114,203,0,0,0,114,10,0,0, - 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 114,19,1,0,0,123,4,0,0,115,22,0,0,0,8,2, - 4,6,8,9,8,4,8,3,8,8,8,6,8,6,8,4, - 8,4,2,1,114,19,1,0,0,99,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,2,0,0,0,64,0, - 0,0,115,108,0,0,0,101,0,90,1,100,0,90,2,100, - 1,90,3,100,2,90,4,100,3,100,4,132,0,90,5,100, - 5,100,6,132,0,90,6,100,7,100,8,132,0,90,7,100, - 9,100,10,132,0,90,8,100,11,100,12,132,0,90,9,100, - 13,100,14,132,0,90,10,100,15,100,16,132,0,90,11,100, - 17,100,18,132,0,90,12,100,19,100,20,132,0,90,13,100, - 21,100,22,132,0,90,14,100,23,100,24,132,0,90,15,100, - 25,83,0,41,26,218,14,95,78,97,109,101,115,112,97,99, - 101,80,97,116,104,97,38,1,0,0,82,101,112,114,101,115, - 101,110,116,115,32,97,32,110,97,109,101,115,112,97,99,101, - 32,112,97,99,107,97,103,101,39,115,32,112,97,116,104,46, - 32,32,73,116,32,117,115,101,115,32,116,104,101,32,109,111, - 100,117,108,101,32,110,97,109,101,10,32,32,32,32,116,111, - 32,102,105,110,100,32,105,116,115,32,112,97,114,101,110,116, - 32,109,111,100,117,108,101,44,32,97,110,100,32,102,114,111, - 109,32,116,104,101,114,101,32,105,116,32,108,111,111,107,115, - 32,117,112,32,116,104,101,32,112,97,114,101,110,116,39,115, - 10,32,32,32,32,95,95,112,97,116,104,95,95,46,32,32, - 87,104,101,110,32,116,104,105,115,32,99,104,97,110,103,101, - 115,44,32,116,104,101,32,109,111,100,117,108,101,39,115,32, - 111,119,110,32,112,97,116,104,32,105,115,32,114,101,99,111, - 109,112,117,116,101,100,44,10,32,32,32,32,117,115,105,110, - 103,32,112,97,116,104,95,102,105,110,100,101,114,46,32,32, - 70,111,114,32,116,111,112,45,108,101,118,101,108,32,109,111, - 100,117,108,101,115,44,32,116,104,101,32,112,97,114,101,110, - 116,32,109,111,100,117,108,101,39,115,32,112,97,116,104,10, - 32,32,32,32,105,115,32,115,121,115,46,112,97,116,104,46, - 114,0,0,0,0,99,4,0,0,0,0,0,0,0,0,0, - 0,0,4,0,0,0,3,0,0,0,67,0,0,0,115,44, - 0,0,0,124,1,124,0,95,0,124,2,124,0,95,1,116, - 2,124,0,160,3,161,0,131,1,124,0,95,4,124,0,106, - 5,124,0,95,6,124,3,124,0,95,7,100,0,83,0,114, - 69,0,0,0,41,8,218,5,95,110,97,109,101,218,5,95, - 112,97,116,104,114,135,0,0,0,218,16,95,103,101,116,95, - 112,97,114,101,110,116,95,112,97,116,104,218,17,95,108,97, - 115,116,95,112,97,114,101,110,116,95,112,97,116,104,218,6, - 95,101,112,111,99,104,218,11,95,108,97,115,116,95,101,112, - 111,99,104,218,12,95,112,97,116,104,95,102,105,110,100,101, - 114,169,4,114,142,0,0,0,114,140,0,0,0,114,65,0, - 0,0,90,11,112,97,116,104,95,102,105,110,100,101,114,114, - 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,232, - 0,0,0,192,4,0,0,115,10,0,0,0,0,1,6,1, - 6,1,14,1,8,1,122,23,95,78,97,109,101,115,112,97, - 99,101,80,97,116,104,46,95,95,105,110,105,116,95,95,99, - 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 3,0,0,0,67,0,0,0,115,38,0,0,0,124,0,106, - 0,160,1,100,1,161,1,92,3,125,1,125,2,125,3,124, - 2,100,2,107,2,114,30,100,3,83,0,124,1,100,4,102, - 2,83,0,41,5,122,62,82,101,116,117,114,110,115,32,97, - 32,116,117,112,108,101,32,111,102,32,40,112,97,114,101,110, - 116,45,109,111,100,117,108,101,45,110,97,109,101,44,32,112, - 97,114,101,110,116,45,112,97,116,104,45,97,116,116,114,45, - 110,97,109,101,41,114,96,0,0,0,114,14,0,0,0,41, - 2,114,21,0,0,0,114,65,0,0,0,90,8,95,95,112, - 97,116,104,95,95,41,2,114,46,1,0,0,114,103,0,0, - 0,41,4,114,142,0,0,0,114,38,1,0,0,218,3,100, - 111,116,90,2,109,101,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,218,23,95,102,105,110,100,95,112,97,114, - 101,110,116,95,112,97,116,104,95,110,97,109,101,115,199,4, - 0,0,115,8,0,0,0,0,2,18,1,8,2,4,3,122, - 38,95,78,97,109,101,115,112,97,99,101,80,97,116,104,46, - 95,102,105,110,100,95,112,97,114,101,110,116,95,112,97,116, - 104,95,110,97,109,101,115,99,1,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,3,0,0,0,67,0,0,0, - 115,28,0,0,0,124,0,160,0,161,0,92,2,125,1,125, - 2,116,1,116,2,106,3,124,1,25,0,124,2,131,2,83, - 0,114,69,0,0,0,41,4,114,55,1,0,0,114,154,0, - 0,0,114,21,0,0,0,218,7,109,111,100,117,108,101,115, - 41,3,114,142,0,0,0,90,18,112,97,114,101,110,116,95, - 109,111,100,117,108,101,95,110,97,109,101,90,14,112,97,116, - 104,95,97,116,116,114,95,110,97,109,101,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,114,48,1,0,0,209, - 4,0,0,115,4,0,0,0,0,1,12,1,122,31,95,78, - 97,109,101,115,112,97,99,101,80,97,116,104,46,95,103,101, - 116,95,112,97,114,101,110,116,95,112,97,116,104,99,1,0, - 0,0,0,0,0,0,0,0,0,0,3,0,0,0,4,0, - 0,0,67,0,0,0,115,100,0,0,0,116,0,124,0,160, - 1,161,0,131,1,125,1,124,1,124,0,106,2,107,3,115, - 34,124,0,106,3,124,0,106,4,107,3,114,94,124,0,160, - 5,124,0,106,6,124,1,161,2,125,2,124,2,100,0,117, - 1,114,80,124,2,106,7,100,0,117,0,114,80,124,2,106, - 8,114,80,124,2,106,8,124,0,95,9,124,1,124,0,95, - 2,124,0,106,3,124,0,95,4,124,0,106,9,83,0,114, - 69,0,0,0,41,10,114,135,0,0,0,114,48,1,0,0, - 114,49,1,0,0,114,50,1,0,0,114,51,1,0,0,114, - 52,1,0,0,114,46,1,0,0,114,164,0,0,0,114,202, - 0,0,0,114,47,1,0,0,41,3,114,142,0,0,0,90, - 11,112,97,114,101,110,116,95,112,97,116,104,114,210,0,0, - 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 218,12,95,114,101,99,97,108,99,117,108,97,116,101,213,4, - 0,0,115,18,0,0,0,0,2,12,1,22,1,14,3,18, - 1,6,1,8,1,6,1,8,1,122,27,95,78,97,109,101, - 115,112,97,99,101,80,97,116,104,46,95,114,101,99,97,108, - 99,117,108,97,116,101,99,1,0,0,0,0,0,0,0,0, - 0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,115, - 12,0,0,0,116,0,124,0,160,1,161,0,131,1,83,0, - 114,69,0,0,0,41,2,114,29,1,0,0,114,57,1,0, - 0,114,13,1,0,0,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,218,8,95,95,105,116,101,114,95,95,227, - 4,0,0,115,2,0,0,0,0,1,122,23,95,78,97,109, - 101,115,112,97,99,101,80,97,116,104,46,95,95,105,116,101, - 114,95,95,99,2,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,2,0,0,0,67,0,0,0,115,12,0,0, - 0,124,0,160,0,161,0,124,1,25,0,83,0,114,69,0, - 0,0,169,1,114,57,1,0,0,41,2,114,142,0,0,0, - 218,5,105,110,100,101,120,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,218,11,95,95,103,101,116,105,116,101, - 109,95,95,230,4,0,0,115,2,0,0,0,0,1,122,26, + 0,114,0,1,0,0,171,4,0,0,115,2,0,0,0,0, + 2,122,30,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,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,1,0,0,0,67,0,0,0,115,6,0,0,0,124, + 0,106,0,83,0,114,21,1,0,0,114,74,0,0,0,114, + 246,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, + 0,0,0,114,207,0,0,0,175,4,0,0,115,2,0,0, + 0,0,3,122,32,69,120,116,101,110,115,105,111,110,70,105, + 108,101,76,111,97,100,101,114,46,103,101,116,95,102,105,108, + 101,110,97,109,101,78,41,14,114,153,0,0,0,114,152,0, + 0,0,114,154,0,0,0,114,155,0,0,0,114,236,0,0, + 0,114,14,1,0,0,114,18,1,0,0,114,239,0,0,0, + 114,244,0,0,0,114,210,0,0,0,114,240,0,0,0,114, + 0,1,0,0,114,164,0,0,0,114,207,0,0,0,114,10, + 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, + 0,0,114,23,1,0,0,123,4,0,0,115,22,0,0,0, + 8,2,4,6,8,9,8,4,8,3,8,8,8,6,8,6, + 8,4,8,4,2,1,114,23,1,0,0,99,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 64,0,0,0,115,108,0,0,0,101,0,90,1,100,0,90, + 2,100,1,90,3,100,2,90,4,100,3,100,4,132,0,90, + 5,100,5,100,6,132,0,90,6,100,7,100,8,132,0,90, + 7,100,9,100,10,132,0,90,8,100,11,100,12,132,0,90, + 9,100,13,100,14,132,0,90,10,100,15,100,16,132,0,90, + 11,100,17,100,18,132,0,90,12,100,19,100,20,132,0,90, + 13,100,21,100,22,132,0,90,14,100,23,100,24,132,0,90, + 15,100,25,83,0,41,26,218,14,95,78,97,109,101,115,112, + 97,99,101,80,97,116,104,97,38,1,0,0,82,101,112,114, + 101,115,101,110,116,115,32,97,32,110,97,109,101,115,112,97, + 99,101,32,112,97,99,107,97,103,101,39,115,32,112,97,116, + 104,46,32,32,73,116,32,117,115,101,115,32,116,104,101,32, + 109,111,100,117,108,101,32,110,97,109,101,10,32,32,32,32, + 116,111,32,102,105,110,100,32,105,116,115,32,112,97,114,101, + 110,116,32,109,111,100,117,108,101,44,32,97,110,100,32,102, + 114,111,109,32,116,104,101,114,101,32,105,116,32,108,111,111, + 107,115,32,117,112,32,116,104,101,32,112,97,114,101,110,116, + 39,115,10,32,32,32,32,95,95,112,97,116,104,95,95,46, + 32,32,87,104,101,110,32,116,104,105,115,32,99,104,97,110, + 103,101,115,44,32,116,104,101,32,109,111,100,117,108,101,39, + 115,32,111,119,110,32,112,97,116,104,32,105,115,32,114,101, + 99,111,109,112,117,116,101,100,44,10,32,32,32,32,117,115, + 105,110,103,32,112,97,116,104,95,102,105,110,100,101,114,46, + 32,32,70,111,114,32,116,111,112,45,108,101,118,101,108,32, + 109,111,100,117,108,101,115,44,32,116,104,101,32,112,97,114, + 101,110,116,32,109,111,100,117,108,101,39,115,32,112,97,116, + 104,10,32,32,32,32,105,115,32,115,121,115,46,112,97,116, + 104,46,114,0,0,0,0,99,4,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,3,0,0,0,67,0,0,0, + 115,44,0,0,0,124,1,124,0,95,0,124,2,124,0,95, + 1,116,2,124,0,160,3,161,0,131,1,124,0,95,4,124, + 0,106,5,124,0,95,6,124,3,124,0,95,7,100,0,83, + 0,114,72,0,0,0,41,8,218,5,95,110,97,109,101,218, + 5,95,112,97,116,104,114,139,0,0,0,218,16,95,103,101, + 116,95,112,97,114,101,110,116,95,112,97,116,104,218,17,95, + 108,97,115,116,95,112,97,114,101,110,116,95,112,97,116,104, + 218,6,95,101,112,111,99,104,218,11,95,108,97,115,116,95, + 101,112,111,99,104,218,12,95,112,97,116,104,95,102,105,110, + 100,101,114,169,4,114,146,0,0,0,114,144,0,0,0,114, + 68,0,0,0,90,11,112,97,116,104,95,102,105,110,100,101, + 114,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, + 114,236,0,0,0,192,4,0,0,115,10,0,0,0,0,1, + 6,1,6,1,14,1,8,1,122,23,95,78,97,109,101,115, + 112,97,99,101,80,97,116,104,46,95,95,105,110,105,116,95, + 95,99,1,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,3,0,0,0,67,0,0,0,115,38,0,0,0,124, + 0,106,0,160,1,100,1,161,1,92,3,125,1,125,2,125, + 3,124,2,100,2,107,2,114,30,100,3,83,0,124,1,100, + 4,102,2,83,0,41,5,122,62,82,101,116,117,114,110,115, + 32,97,32,116,117,112,108,101,32,111,102,32,40,112,97,114, + 101,110,116,45,109,111,100,117,108,101,45,110,97,109,101,44, + 32,112,97,114,101,110,116,45,112,97,116,104,45,97,116,116, + 114,45,110,97,109,101,41,114,99,0,0,0,114,14,0,0, + 0,41,2,114,24,0,0,0,114,68,0,0,0,90,8,95, + 95,112,97,116,104,95,95,41,2,114,51,1,0,0,114,106, + 0,0,0,41,4,114,146,0,0,0,114,43,1,0,0,218, + 3,100,111,116,90,2,109,101,114,10,0,0,0,114,10,0, + 0,0,114,11,0,0,0,218,23,95,102,105,110,100,95,112, + 97,114,101,110,116,95,112,97,116,104,95,110,97,109,101,115, + 199,4,0,0,115,8,0,0,0,0,2,18,1,8,2,4, + 3,122,38,95,78,97,109,101,115,112,97,99,101,80,97,116, + 104,46,95,102,105,110,100,95,112,97,114,101,110,116,95,112, + 97,116,104,95,110,97,109,101,115,99,1,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,3,0,0,0,67,0, + 0,0,115,28,0,0,0,124,0,160,0,161,0,92,2,125, + 1,125,2,116,1,116,2,106,3,124,1,25,0,124,2,131, + 2,83,0,114,72,0,0,0,41,4,114,60,1,0,0,114, + 158,0,0,0,114,24,0,0,0,218,7,109,111,100,117,108, + 101,115,41,3,114,146,0,0,0,90,18,112,97,114,101,110, + 116,95,109,111,100,117,108,101,95,110,97,109,101,90,14,112, + 97,116,104,95,97,116,116,114,95,110,97,109,101,114,10,0, + 0,0,114,10,0,0,0,114,11,0,0,0,114,53,1,0, + 0,209,4,0,0,115,4,0,0,0,0,1,12,1,122,31, 95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,95, - 95,103,101,116,105,116,101,109,95,95,99,3,0,0,0,0, - 0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,67, - 0,0,0,115,14,0,0,0,124,2,124,0,106,0,124,1, - 60,0,100,0,83,0,114,69,0,0,0,41,1,114,47,1, - 0,0,41,3,114,142,0,0,0,114,60,1,0,0,114,65, + 103,101,116,95,112,97,114,101,110,116,95,112,97,116,104,99, + 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, + 4,0,0,0,67,0,0,0,115,100,0,0,0,116,0,124, + 0,160,1,161,0,131,1,125,1,124,1,124,0,106,2,107, + 3,115,34,124,0,106,3,124,0,106,4,107,3,114,94,124, + 0,160,5,124,0,106,6,124,1,161,2,125,2,124,2,100, + 0,117,1,114,80,124,2,106,7,100,0,117,0,114,80,124, + 2,106,8,114,80,124,2,106,8,124,0,95,9,124,1,124, + 0,95,2,124,0,106,3,124,0,95,4,124,0,106,9,83, + 0,114,72,0,0,0,41,10,114,139,0,0,0,114,53,1, + 0,0,114,54,1,0,0,114,55,1,0,0,114,56,1,0, + 0,114,57,1,0,0,114,51,1,0,0,114,168,0,0,0, + 114,206,0,0,0,114,52,1,0,0,41,3,114,146,0,0, + 0,218,11,112,97,114,101,110,116,95,112,97,116,104,114,214, 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, - 0,0,218,11,95,95,115,101,116,105,116,101,109,95,95,233, - 4,0,0,115,2,0,0,0,0,1,122,26,95,78,97,109, - 101,115,112,97,99,101,80,97,116,104,46,95,95,115,101,116, - 105,116,101,109,95,95,99,1,0,0,0,0,0,0,0,0, - 0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,115, - 12,0,0,0,116,0,124,0,160,1,161,0,131,1,83,0, - 114,69,0,0,0,41,2,114,6,0,0,0,114,57,1,0, - 0,114,13,1,0,0,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,218,7,95,95,108,101,110,95,95,236,4, - 0,0,115,2,0,0,0,0,1,122,22,95,78,97,109,101, - 115,112,97,99,101,80,97,116,104,46,95,95,108,101,110,95, - 95,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, - 0,0,3,0,0,0,67,0,0,0,115,12,0,0,0,100, - 1,160,0,124,0,106,1,161,1,83,0,41,2,78,122,20, - 95,78,97,109,101,115,112,97,99,101,80,97,116,104,40,123, - 33,114,125,41,41,2,114,88,0,0,0,114,47,1,0,0, - 114,13,1,0,0,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,218,8,95,95,114,101,112,114,95,95,239,4, - 0,0,115,2,0,0,0,0,1,122,23,95,78,97,109,101, - 115,112,97,99,101,80,97,116,104,46,95,95,114,101,112,114, - 95,95,99,2,0,0,0,0,0,0,0,0,0,0,0,2, - 0,0,0,3,0,0,0,67,0,0,0,115,12,0,0,0, - 124,1,124,0,160,0,161,0,118,0,83,0,114,69,0,0, - 0,114,59,1,0,0,169,2,114,142,0,0,0,218,4,105, - 116,101,109,114,10,0,0,0,114,10,0,0,0,114,11,0, - 0,0,218,12,95,95,99,111,110,116,97,105,110,115,95,95, - 242,4,0,0,115,2,0,0,0,0,1,122,27,95,78,97, - 109,101,115,112,97,99,101,80,97,116,104,46,95,95,99,111, - 110,116,97,105,110,115,95,95,99,2,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,3,0,0,0,67,0,0, - 0,115,16,0,0,0,124,0,106,0,160,1,124,1,161,1, - 1,0,100,0,83,0,114,69,0,0,0,41,2,114,47,1, - 0,0,114,61,0,0,0,114,65,1,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,114,61,0,0,0, - 245,4,0,0,115,2,0,0,0,0,1,122,21,95,78,97, - 109,101,115,112,97,99,101,80,97,116,104,46,97,112,112,101, - 110,100,78,41,16,114,149,0,0,0,114,148,0,0,0,114, - 150,0,0,0,114,151,0,0,0,114,50,1,0,0,114,232, - 0,0,0,114,55,1,0,0,114,48,1,0,0,114,57,1, - 0,0,114,58,1,0,0,114,61,1,0,0,114,62,1,0, - 0,114,63,1,0,0,114,64,1,0,0,114,67,1,0,0, - 114,61,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,114,45,1,0,0,181,4, - 0,0,115,26,0,0,0,8,1,4,8,4,2,8,7,8, - 10,8,4,8,14,8,3,8,3,8,3,8,3,8,3,8, - 3,114,45,1,0,0,99,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,3,0,0,0,64,0,0,0,115, - 80,0,0,0,101,0,90,1,100,0,90,2,100,1,100,2, - 132,0,90,3,101,4,100,3,100,4,132,0,131,1,90,5, - 100,5,100,6,132,0,90,6,100,7,100,8,132,0,90,7, - 100,9,100,10,132,0,90,8,100,11,100,12,132,0,90,9, - 100,13,100,14,132,0,90,10,100,15,100,16,132,0,90,11, - 100,17,83,0,41,18,218,16,95,78,97,109,101,115,112,97, - 99,101,76,111,97,100,101,114,99,4,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,4,0,0,0,67,0,0, - 0,115,18,0,0,0,116,0,124,1,124,2,124,3,131,3, - 124,0,95,1,100,0,83,0,114,69,0,0,0,41,2,114, - 45,1,0,0,114,47,1,0,0,114,53,1,0,0,114,10, - 0,0,0,114,10,0,0,0,114,11,0,0,0,114,232,0, - 0,0,251,4,0,0,115,2,0,0,0,0,1,122,25,95, - 78,97,109,101,115,112,97,99,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,0,0,0,0,2,0,0,0,3,0,0,0,67,0,0, - 0,115,12,0,0,0,100,1,160,0,124,1,106,1,161,1, - 83,0,41,2,122,115,82,101,116,117,114,110,32,114,101,112, - 114,32,102,111,114,32,116,104,101,32,109,111,100,117,108,101, - 46,10,10,32,32,32,32,32,32,32,32,84,104,101,32,109, - 101,116,104,111,100,32,105,115,32,100,101,112,114,101,99,97, - 116,101,100,46,32,32,84,104,101,32,105,109,112,111,114,116, - 32,109,97,99,104,105,110,101,114,121,32,100,111,101,115,32, - 116,104,101,32,106,111,98,32,105,116,115,101,108,102,46,10, - 10,32,32,32,32,32,32,32,32,122,25,60,109,111,100,117, - 108,101,32,123,33,114,125,32,40,110,97,109,101,115,112,97, - 99,101,41,62,41,2,114,88,0,0,0,114,149,0,0,0, - 41,2,114,216,0,0,0,114,239,0,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,218,11,109,111,100, - 117,108,101,95,114,101,112,114,254,4,0,0,115,2,0,0, - 0,0,7,122,28,95,78,97,109,101,115,112,97,99,101,76, - 111,97,100,101,114,46,109,111,100,117,108,101,95,114,101,112, - 114,99,2,0,0,0,0,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,83,0,41,2,78,84,114,10,0,0,0,114,242,0,0, - 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 114,206,0,0,0,7,5,0,0,115,2,0,0,0,0,1, - 122,27,95,78,97,109,101,115,112,97,99,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,0,0,0,0,2,0,0,0,1,0, - 0,0,67,0,0,0,115,4,0,0,0,100,1,83,0,41, - 2,78,114,14,0,0,0,114,10,0,0,0,114,242,0,0, - 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 114,252,0,0,0,10,5,0,0,115,2,0,0,0,0,1, - 122,27,95,78,97,109,101,115,112,97,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,0,0,0,0,2,0,0,0,6,0, - 0,0,67,0,0,0,115,16,0,0,0,116,0,100,1,100, - 2,100,3,100,4,100,5,141,4,83,0,41,6,78,114,14, - 0,0,0,122,8,60,115,116,114,105,110,103,62,114,238,0, - 0,0,84,41,1,114,254,0,0,0,41,1,114,255,0,0, - 0,114,242,0,0,0,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,114,236,0,0,0,13,5,0,0,115,2, - 0,0,0,0,1,122,25,95,78,97,109,101,115,112,97,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,0,0,0,0,2,0,0, - 0,1,0,0,0,67,0,0,0,115,4,0,0,0,100,1, - 83,0,114,233,0,0,0,114,10,0,0,0,114,234,0,0, - 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 114,235,0,0,0,16,5,0,0,115,2,0,0,0,0,1, - 122,30,95,78,97,109,101,115,112,97,99,101,76,111,97,100, - 101,114,46,99,114,101,97,116,101,95,109,111,100,117,108,101, + 0,0,218,12,95,114,101,99,97,108,99,117,108,97,116,101, + 213,4,0,0,115,18,0,0,0,0,2,12,1,22,1,14, + 3,18,1,6,1,8,1,6,1,8,1,122,27,95,78,97, + 109,101,115,112,97,99,101,80,97,116,104,46,95,114,101,99, + 97,108,99,117,108,97,116,101,99,1,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,3,0,0,0,67,0,0, + 0,115,12,0,0,0,116,0,124,0,160,1,161,0,131,1, + 83,0,114,72,0,0,0,41,2,114,33,1,0,0,114,63, + 1,0,0,114,17,1,0,0,114,10,0,0,0,114,10,0, + 0,0,114,11,0,0,0,218,8,95,95,105,116,101,114,95, + 95,227,4,0,0,115,2,0,0,0,0,1,122,23,95,78, + 97,109,101,115,112,97,99,101,80,97,116,104,46,95,95,105, + 116,101,114,95,95,99,2,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,2,0,0,0,67,0,0,0,115,12, + 0,0,0,124,0,160,0,161,0,124,1,25,0,83,0,114, + 72,0,0,0,169,1,114,63,1,0,0,41,2,114,146,0, + 0,0,218,5,105,110,100,101,120,114,10,0,0,0,114,10, + 0,0,0,114,11,0,0,0,218,11,95,95,103,101,116,105, + 116,101,109,95,95,230,4,0,0,115,2,0,0,0,0,1, + 122,26,95,78,97,109,101,115,112,97,99,101,80,97,116,104, + 46,95,95,103,101,116,105,116,101,109,95,95,99,3,0,0, + 0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,0, + 0,67,0,0,0,115,14,0,0,0,124,2,124,0,106,0, + 124,1,60,0,100,0,83,0,114,72,0,0,0,41,1,114, + 52,1,0,0,41,3,114,146,0,0,0,114,66,1,0,0, + 114,68,0,0,0,114,10,0,0,0,114,10,0,0,0,114, + 11,0,0,0,218,11,95,95,115,101,116,105,116,101,109,95, + 95,233,4,0,0,115,2,0,0,0,0,1,122,26,95,78, + 97,109,101,115,112,97,99,101,80,97,116,104,46,95,95,115, + 101,116,105,116,101,109,95,95,99,1,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,3,0,0,0,67,0,0, + 0,115,12,0,0,0,116,0,124,0,160,1,161,0,131,1, + 83,0,114,72,0,0,0,41,2,114,6,0,0,0,114,63, + 1,0,0,114,17,1,0,0,114,10,0,0,0,114,10,0, + 0,0,114,11,0,0,0,218,7,95,95,108,101,110,95,95, + 236,4,0,0,115,2,0,0,0,0,1,122,22,95,78,97, + 109,101,115,112,97,99,101,80,97,116,104,46,95,95,108,101, + 110,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,3,0,0,0,67,0,0,0,115,12,0,0, + 0,100,1,160,0,124,0,106,1,161,1,83,0,41,2,78, + 122,20,95,78,97,109,101,115,112,97,99,101,80,97,116,104, + 40,123,33,114,125,41,41,2,114,91,0,0,0,114,52,1, + 0,0,114,17,1,0,0,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,218,8,95,95,114,101,112,114,95,95, + 239,4,0,0,115,2,0,0,0,0,1,122,23,95,78,97, + 109,101,115,112,97,99,101,80,97,116,104,46,95,95,114,101, + 112,114,95,95,99,2,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,3,0,0,0,67,0,0,0,115,12,0, + 0,0,124,1,124,0,160,0,161,0,118,0,83,0,114,72, + 0,0,0,114,65,1,0,0,169,2,114,146,0,0,0,218, + 4,105,116,101,109,114,10,0,0,0,114,10,0,0,0,114, + 11,0,0,0,218,12,95,95,99,111,110,116,97,105,110,115, + 95,95,242,4,0,0,115,2,0,0,0,0,1,122,27,95, + 78,97,109,101,115,112,97,99,101,80,97,116,104,46,95,95, + 99,111,110,116,97,105,110,115,95,95,99,2,0,0,0,0, + 0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,67, + 0,0,0,115,16,0,0,0,124,0,106,0,160,1,124,1, + 161,1,1,0,100,0,83,0,114,72,0,0,0,41,2,114, + 52,1,0,0,114,64,0,0,0,114,71,1,0,0,114,10, + 0,0,0,114,10,0,0,0,114,11,0,0,0,114,64,0, + 0,0,245,4,0,0,115,2,0,0,0,0,1,122,21,95, + 78,97,109,101,115,112,97,99,101,80,97,116,104,46,97,112, + 112,101,110,100,78,41,16,114,153,0,0,0,114,152,0,0, + 0,114,154,0,0,0,114,155,0,0,0,114,55,1,0,0, + 114,236,0,0,0,114,60,1,0,0,114,53,1,0,0,114, + 63,1,0,0,114,64,1,0,0,114,67,1,0,0,114,68, + 1,0,0,114,69,1,0,0,114,70,1,0,0,114,73,1, + 0,0,114,64,0,0,0,114,10,0,0,0,114,10,0,0, + 0,114,10,0,0,0,114,11,0,0,0,114,50,1,0,0, + 181,4,0,0,115,26,0,0,0,8,1,4,8,4,2,8, + 7,8,10,8,4,8,14,8,3,8,3,8,3,8,3,8, + 3,8,3,114,50,1,0,0,99,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,3,0,0,0,64,0,0, + 0,115,80,0,0,0,101,0,90,1,100,0,90,2,100,1, + 100,2,132,0,90,3,101,4,100,3,100,4,132,0,131,1, + 90,5,100,5,100,6,132,0,90,6,100,7,100,8,132,0, + 90,7,100,9,100,10,132,0,90,8,100,11,100,12,132,0, + 90,9,100,13,100,14,132,0,90,10,100,15,100,16,132,0, + 90,11,100,17,83,0,41,18,218,16,95,78,97,109,101,115, + 112,97,99,101,76,111,97,100,101,114,99,4,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,67, + 0,0,0,115,18,0,0,0,116,0,124,1,124,2,124,3, + 131,3,124,0,95,1,100,0,83,0,114,72,0,0,0,41, + 2,114,50,1,0,0,114,52,1,0,0,114,58,1,0,0, + 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,114, + 236,0,0,0,251,4,0,0,115,2,0,0,0,0,1,122, + 25,95,78,97,109,101,115,112,97,99,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,0,0,0,0,2,0,0,0,3,0,0,0,67, + 0,0,0,115,12,0,0,0,100,1,160,0,124,1,106,1, + 161,1,83,0,41,2,122,115,82,101,116,117,114,110,32,114, + 101,112,114,32,102,111,114,32,116,104,101,32,109,111,100,117, + 108,101,46,10,10,32,32,32,32,32,32,32,32,84,104,101, + 32,109,101,116,104,111,100,32,105,115,32,100,101,112,114,101, + 99,97,116,101,100,46,32,32,84,104,101,32,105,109,112,111, + 114,116,32,109,97,99,104,105,110,101,114,121,32,100,111,101, + 115,32,116,104,101,32,106,111,98,32,105,116,115,101,108,102, + 46,10,10,32,32,32,32,32,32,32,32,122,25,60,109,111, + 100,117,108,101,32,123,33,114,125,32,40,110,97,109,101,115, + 112,97,99,101,41,62,41,2,114,91,0,0,0,114,153,0, + 0,0,41,2,114,220,0,0,0,114,243,0,0,0,114,10, + 0,0,0,114,10,0,0,0,114,11,0,0,0,218,11,109, + 111,100,117,108,101,95,114,101,112,114,254,4,0,0,115,2, + 0,0,0,0,7,122,28,95,78,97,109,101,115,112,97,99, + 101,76,111,97,100,101,114,46,109,111,100,117,108,101,95,114, + 101,112,114,99,2,0,0,0,0,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,83,0,41,2,78,84,114,10,0,0,0,114,246, + 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, + 0,0,114,210,0,0,0,7,5,0,0,115,2,0,0,0, + 0,1,122,27,95,78,97,109,101,115,112,97,99,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,0,0,0,0,2,0,0,0, + 1,0,0,0,67,0,0,0,115,4,0,0,0,100,1,83, + 0,41,2,78,114,14,0,0,0,114,10,0,0,0,114,246, + 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, + 0,0,114,0,1,0,0,10,5,0,0,115,2,0,0,0, + 0,1,122,27,95,78,97,109,101,115,112,97,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,0,0,0,0,2,0,0,0, + 6,0,0,0,67,0,0,0,115,16,0,0,0,116,0,100, + 1,100,2,100,3,100,4,100,5,141,4,83,0,41,6,78, + 114,14,0,0,0,122,8,60,115,116,114,105,110,103,62,114, + 242,0,0,0,84,41,1,114,2,1,0,0,41,1,114,3, + 1,0,0,114,246,0,0,0,114,10,0,0,0,114,10,0, + 0,0,114,11,0,0,0,114,240,0,0,0,13,5,0,0, + 115,2,0,0,0,0,1,122,25,95,78,97,109,101,115,112, + 97,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,0,0,0,0,2, + 0,0,0,1,0,0,0,67,0,0,0,115,4,0,0,0, + 100,1,83,0,114,237,0,0,0,114,10,0,0,0,114,238, + 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, + 0,0,114,239,0,0,0,16,5,0,0,115,2,0,0,0, + 0,1,122,30,95,78,97,109,101,115,112,97,99,101,76,111, + 97,100,101,114,46,99,114,101,97,116,101,95,109,111,100,117, + 108,101,99,2,0,0,0,0,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,0,83,0,114,72,0,0,0,114,10,0,0,0,114,24, + 1,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, + 0,0,114,244,0,0,0,19,5,0,0,115,2,0,0,0, + 0,1,122,28,95,78,97,109,101,115,112,97,99,101,76,111, + 97,100,101,114,46,101,120,101,99,95,109,111,100,117,108,101, 99,2,0,0,0,0,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,0, - 83,0,114,69,0,0,0,114,10,0,0,0,114,20,1,0, + 0,4,0,0,0,67,0,0,0,115,26,0,0,0,116,0, + 160,1,100,1,124,0,106,2,161,2,1,0,116,0,160,3, + 124,0,124,1,161,2,83,0,41,2,122,98,76,111,97,100, + 32,97,32,110,97,109,101,115,112,97,99,101,32,109,111,100, + 117,108,101,46,10,10,32,32,32,32,32,32,32,32,84,104, + 105,115,32,109,101,116,104,111,100,32,105,115,32,100,101,112, + 114,101,99,97,116,101,100,46,32,32,85,115,101,32,101,120, + 101,99,95,109,111,100,117,108,101,40,41,32,105,110,115,116, + 101,97,100,46,10,10,32,32,32,32,32,32,32,32,122,38, + 110,97,109,101,115,112,97,99,101,32,109,111,100,117,108,101, + 32,108,111,97,100,101,100,32,119,105,116,104,32,112,97,116, + 104,32,123,33,114,125,41,4,114,162,0,0,0,114,177,0, + 0,0,114,52,1,0,0,114,245,0,0,0,114,246,0,0, 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 114,240,0,0,0,19,5,0,0,115,2,0,0,0,0,1, - 122,28,95,78,97,109,101,115,112,97,99,101,76,111,97,100, - 101,114,46,101,120,101,99,95,109,111,100,117,108,101,99,2, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4, - 0,0,0,67,0,0,0,115,26,0,0,0,116,0,160,1, - 100,1,124,0,106,2,161,2,1,0,116,0,160,3,124,0, - 124,1,161,2,83,0,41,2,122,98,76,111,97,100,32,97, - 32,110,97,109,101,115,112,97,99,101,32,109,111,100,117,108, - 101,46,10,10,32,32,32,32,32,32,32,32,84,104,105,115, - 32,109,101,116,104,111,100,32,105,115,32,100,101,112,114,101, - 99,97,116,101,100,46,32,32,85,115,101,32,101,120,101,99, - 95,109,111,100,117,108,101,40,41,32,105,110,115,116,101,97, - 100,46,10,10,32,32,32,32,32,32,32,32,122,38,110,97, - 109,101,115,112,97,99,101,32,109,111,100,117,108,101,32,108, - 111,97,100,101,100,32,119,105,116,104,32,112,97,116,104,32, - 123,33,114,125,41,4,114,158,0,0,0,114,173,0,0,0, - 114,47,1,0,0,114,241,0,0,0,114,242,0,0,0,114, - 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,243, - 0,0,0,22,5,0,0,115,8,0,0,0,0,7,6,1, - 4,255,4,2,122,28,95,78,97,109,101,115,112,97,99,101, - 76,111,97,100,101,114,46,108,111,97,100,95,109,111,100,117, - 108,101,78,41,12,114,149,0,0,0,114,148,0,0,0,114, - 150,0,0,0,114,232,0,0,0,114,230,0,0,0,114,69, - 1,0,0,114,206,0,0,0,114,252,0,0,0,114,236,0, - 0,0,114,235,0,0,0,114,240,0,0,0,114,243,0,0, - 0,114,10,0,0,0,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,114,68,1,0,0,250,4,0,0,115,18, - 0,0,0,8,1,8,3,2,1,10,8,8,3,8,3,8, - 3,8,3,8,3,114,68,1,0,0,99,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,64, - 0,0,0,115,118,0,0,0,101,0,90,1,100,0,90,2, - 100,1,90,3,101,4,100,2,100,3,132,0,131,1,90,5, - 101,4,100,4,100,5,132,0,131,1,90,6,101,4,100,6, - 100,7,132,0,131,1,90,7,101,4,100,8,100,9,132,0, - 131,1,90,8,101,4,100,19,100,11,100,12,132,1,131,1, - 90,9,101,4,100,20,100,13,100,14,132,1,131,1,90,10, - 101,4,100,21,100,15,100,16,132,1,131,1,90,11,101,4, - 100,17,100,18,132,0,131,1,90,12,100,10,83,0,41,22, - 218,10,80,97,116,104,70,105,110,100,101,114,122,62,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,112,97,116,104,32,97,110,100,32, - 112,97,99,107,97,103,101,32,95,95,112,97,116,104,95,95, - 32,97,116,116,114,105,98,117,116,101,115,46,99,1,0,0, - 0,0,0,0,0,0,0,0,0,3,0,0,0,4,0,0, - 0,67,0,0,0,115,78,0,0,0,116,0,116,1,106,2, - 160,3,161,0,131,1,68,0,93,44,92,2,125,1,125,2, - 124,2,100,1,117,0,114,40,116,1,106,2,124,1,61,0, - 113,14,116,4,124,2,100,2,131,2,114,14,124,2,160,5, - 161,0,1,0,113,14,116,6,4,0,106,7,100,3,55,0, - 2,0,95,7,100,1,83,0,41,4,122,125,67,97,108,108, - 32,116,104,101,32,105,110,118,97,108,105,100,97,116,101,95, - 99,97,99,104,101,115,40,41,32,109,101,116,104,111,100,32, - 111,110,32,97,108,108,32,112,97,116,104,32,101,110,116,114, - 121,32,102,105,110,100,101,114,115,10,32,32,32,32,32,32, - 32,32,115,116,111,114,101,100,32,105,110,32,115,121,115,46, - 112,97,116,104,95,105,109,112,111,114,116,101,114,95,99,97, - 99,104,101,115,32,40,119,104,101,114,101,32,105,109,112,108, - 101,109,101,110,116,101,100,41,46,78,218,17,105,110,118,97, - 108,105,100,97,116,101,95,99,97,99,104,101,115,114,4,0, - 0,0,41,8,218,4,108,105,115,116,114,21,0,0,0,218, - 19,112,97,116,104,95,105,109,112,111,114,116,101,114,95,99, - 97,99,104,101,218,5,105,116,101,109,115,114,152,0,0,0, - 114,71,1,0,0,114,45,1,0,0,114,50,1,0,0,41, - 3,114,216,0,0,0,114,140,0,0,0,218,6,102,105,110, - 100,101,114,114,10,0,0,0,114,10,0,0,0,114,11,0, - 0,0,114,71,1,0,0,40,5,0,0,115,12,0,0,0, - 0,4,22,1,8,1,10,1,10,1,10,3,122,28,80,97, - 116,104,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,0,0,0,0,3,0,0,0,9,0,0,0,67, - 0,0,0,115,82,0,0,0,116,0,106,1,100,1,117,1, - 114,28,116,0,106,1,115,28,116,2,160,3,100,2,116,4, - 161,2,1,0,116,0,106,1,68,0,93,42,125,2,122,14, - 124,2,124,1,131,1,87,0,2,0,1,0,83,0,4,0, - 116,5,121,74,1,0,1,0,1,0,89,0,113,34,89,0, - 113,34,48,0,113,34,100,1,83,0,41,3,122,46,83,101, - 97,114,99,104,32,115,121,115,46,112,97,116,104,95,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,78,122,23,115, - 121,115,46,112,97,116,104,95,104,111,111,107,115,32,105,115, - 32,101,109,112,116,121,41,6,114,21,0,0,0,218,10,112, - 97,116,104,95,104,111,111,107,115,114,98,0,0,0,114,99, - 0,0,0,114,162,0,0,0,114,141,0,0,0,41,3,114, - 216,0,0,0,114,65,0,0,0,90,4,104,111,111,107,114, - 10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,11, - 95,112,97,116,104,95,104,111,111,107,115,53,5,0,0,115, - 16,0,0,0,0,3,16,1,12,1,10,1,2,1,14,1, - 12,1,12,2,122,22,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,0,0,0,0,3,0,0,0,8,0,0, - 0,67,0,0,0,115,100,0,0,0,124,1,100,1,107,2, - 114,42,122,12,116,0,160,1,161,0,125,1,87,0,110,20, - 4,0,116,2,121,40,1,0,1,0,1,0,89,0,100,2, - 83,0,48,0,122,14,116,3,106,4,124,1,25,0,125,2, - 87,0,110,38,4,0,116,5,121,94,1,0,1,0,1,0, - 124,0,160,6,124,1,161,1,125,2,124,2,116,3,106,4, - 124,1,60,0,89,0,110,2,48,0,124,2,83,0,41,3, - 122,210,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,101,110, - 116,114,121,32,102,114,111,109,32,115,121,115,46,112,97,116, + 114,247,0,0,0,22,5,0,0,115,8,0,0,0,0,7, + 6,1,4,255,4,2,122,28,95,78,97,109,101,115,112,97, + 99,101,76,111,97,100,101,114,46,108,111,97,100,95,109,111, + 100,117,108,101,78,41,12,114,153,0,0,0,114,152,0,0, + 0,114,154,0,0,0,114,236,0,0,0,114,234,0,0,0, + 114,75,1,0,0,114,210,0,0,0,114,0,1,0,0,114, + 240,0,0,0,114,239,0,0,0,114,244,0,0,0,114,247, + 0,0,0,114,10,0,0,0,114,10,0,0,0,114,10,0, + 0,0,114,11,0,0,0,114,74,1,0,0,250,4,0,0, + 115,18,0,0,0,8,1,8,3,2,1,10,8,8,3,8, + 3,8,3,8,3,8,3,114,74,1,0,0,99,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,64,0,0,0,115,118,0,0,0,101,0,90,1,100,0, + 90,2,100,1,90,3,101,4,100,2,100,3,132,0,131,1, + 90,5,101,4,100,4,100,5,132,0,131,1,90,6,101,4, + 100,6,100,7,132,0,131,1,90,7,101,4,100,8,100,9, + 132,0,131,1,90,8,101,4,100,19,100,11,100,12,132,1, + 131,1,90,9,101,4,100,20,100,13,100,14,132,1,131,1, + 90,10,101,4,100,21,100,15,100,16,132,1,131,1,90,11, + 101,4,100,17,100,18,132,0,131,1,90,12,100,10,83,0, + 41,22,218,10,80,97,116,104,70,105,110,100,101,114,122,62, + 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,112,97,116,104,32,97,110, + 100,32,112,97,99,107,97,103,101,32,95,95,112,97,116,104, + 95,95,32,97,116,116,114,105,98,117,116,101,115,46,99,1, + 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,4, + 0,0,0,67,0,0,0,115,78,0,0,0,116,0,116,1, + 106,2,160,3,161,0,131,1,68,0,93,44,92,2,125,1, + 125,2,124,2,100,1,117,0,114,40,116,1,106,2,124,1, + 61,0,113,14,116,4,124,2,100,2,131,2,114,14,124,2, + 160,5,161,0,1,0,113,14,116,6,4,0,106,7,100,3, + 55,0,2,0,95,7,100,1,83,0,41,4,122,125,67,97, + 108,108,32,116,104,101,32,105,110,118,97,108,105,100,97,116, + 101,95,99,97,99,104,101,115,40,41,32,109,101,116,104,111, + 100,32,111,110,32,97,108,108,32,112,97,116,104,32,101,110, + 116,114,121,32,102,105,110,100,101,114,115,10,32,32,32,32, + 32,32,32,32,115,116,111,114,101,100,32,105,110,32,115,121, + 115,46,112,97,116,104,95,105,109,112,111,114,116,101,114,95, + 99,97,99,104,101,115,32,40,119,104,101,114,101,32,105,109, + 112,108,101,109,101,110,116,101,100,41,46,78,218,17,105,110, + 118,97,108,105,100,97,116,101,95,99,97,99,104,101,115,114, + 4,0,0,0,41,8,218,4,108,105,115,116,114,24,0,0, + 0,218,19,112,97,116,104,95,105,109,112,111,114,116,101,114, + 95,99,97,99,104,101,218,5,105,116,101,109,115,114,156,0, + 0,0,114,77,1,0,0,114,50,1,0,0,114,55,1,0, + 0,41,3,114,220,0,0,0,114,144,0,0,0,218,6,102, + 105,110,100,101,114,114,10,0,0,0,114,10,0,0,0,114, + 11,0,0,0,114,77,1,0,0,40,5,0,0,115,12,0, + 0,0,0,4,22,1,8,1,10,1,10,1,10,3,122,28, + 80,97,116,104,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,0,0,0,0,3,0,0,0,9,0,0, + 0,67,0,0,0,115,82,0,0,0,116,0,106,1,100,1, + 117,1,114,28,116,0,106,1,115,28,116,2,160,3,100,2, + 116,4,161,2,1,0,116,0,106,1,68,0,93,42,125,2, + 122,14,124,2,124,1,131,1,87,0,2,0,1,0,83,0, + 4,0,116,5,121,74,1,0,1,0,1,0,89,0,113,34, + 89,0,113,34,48,0,113,34,100,1,83,0,41,3,122,46, + 83,101,97,114,99,104,32,115,121,115,46,112,97,116,104,95, + 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,78,122, + 23,115,121,115,46,112,97,116,104,95,104,111,111,107,115,32, + 105,115,32,101,109,112,116,121,41,6,114,24,0,0,0,218, + 10,112,97,116,104,95,104,111,111,107,115,114,101,0,0,0, + 114,102,0,0,0,114,166,0,0,0,114,145,0,0,0,41, + 3,114,220,0,0,0,114,68,0,0,0,90,4,104,111,111, + 107,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, + 218,11,95,112,97,116,104,95,104,111,111,107,115,53,5,0, + 0,115,16,0,0,0,0,3,16,1,12,1,10,1,2,1, + 14,1,12,1,12,2,122,22,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,0,0,0,0,3,0,0,0,8, + 0,0,0,67,0,0,0,115,100,0,0,0,124,1,100,1, + 107,2,114,42,122,12,116,0,160,1,161,0,125,1,87,0, + 110,20,4,0,116,2,121,40,1,0,1,0,1,0,89,0, + 100,2,83,0,48,0,122,14,116,3,106,4,124,1,25,0, + 125,2,87,0,110,38,4,0,116,5,121,94,1,0,1,0, + 1,0,124,0,160,6,124,1,161,1,125,2,124,2,116,3, + 106,4,124,1,60,0,89,0,110,2,48,0,124,2,83,0, + 41,3,122,210,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, + 101,110,116,114,121,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,101,110,116,114,121,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,10, + 32,32,32,32,32,32,32,32,97,110,100,32,99,97,99,104, + 101,32,105,116,46,32,73,102,32,110,111,32,102,105,110,100, + 101,114,32,105,115,32,97,118,97,105,108,97,98,108,101,44, + 32,115,116,111,114,101,32,78,111,110,101,46,10,10,32,32, + 32,32,32,32,32,32,114,14,0,0,0,78,41,7,114,27, + 0,0,0,114,84,0,0,0,114,30,1,0,0,114,24,0, + 0,0,114,79,1,0,0,218,8,75,101,121,69,114,114,111, + 114,114,83,1,0,0,41,3,114,220,0,0,0,114,68,0, + 0,0,114,81,1,0,0,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,218,20,95,112,97,116,104,95,105,109, + 112,111,114,116,101,114,95,99,97,99,104,101,66,5,0,0, + 115,22,0,0,0,0,8,8,1,2,1,12,1,12,3,8, + 1,2,1,14,1,12,1,10,1,16,1,122,31,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,0,0,0,0,6,0,0,0,4,0,0, + 0,67,0,0,0,115,82,0,0,0,116,0,124,2,100,1, + 131,2,114,26,124,2,160,1,124,1,161,1,92,2,125,3, + 125,4,110,14,124,2,160,2,124,1,161,1,125,3,103,0, + 125,4,124,3,100,0,117,1,114,60,116,3,160,4,124,1, + 124,3,161,2,83,0,116,3,160,5,124,1,100,0,161,2, + 125,5,124,4,124,5,95,6,124,5,83,0,41,2,78,114, + 165,0,0,0,41,7,114,156,0,0,0,114,165,0,0,0, + 114,233,0,0,0,114,162,0,0,0,114,228,0,0,0,114, + 211,0,0,0,114,206,0,0,0,41,6,114,220,0,0,0, + 114,167,0,0,0,114,81,1,0,0,114,168,0,0,0,114, + 169,0,0,0,114,214,0,0,0,114,10,0,0,0,114,10, + 0,0,0,114,11,0,0,0,218,16,95,108,101,103,97,99, + 121,95,103,101,116,95,115,112,101,99,88,5,0,0,115,18, + 0,0,0,0,4,10,1,16,2,10,1,4,1,8,1,12, + 1,12,1,6,1,122,27,80,97,116,104,70,105,110,100,101, + 114,46,95,108,101,103,97,99,121,95,103,101,116,95,115,112, + 101,99,78,99,4,0,0,0,0,0,0,0,0,0,0,0, + 9,0,0,0,5,0,0,0,67,0,0,0,115,166,0,0, + 0,103,0,125,4,124,2,68,0,93,134,125,5,116,0,124, + 5,116,1,116,2,102,2,131,2,115,28,113,8,124,0,160, + 3,124,5,161,1,125,6,124,6,100,1,117,1,114,8,116, + 4,124,6,100,2,131,2,114,70,124,6,160,5,124,1,124, + 3,161,2,125,7,110,12,124,0,160,6,124,1,124,6,161, + 2,125,7,124,7,100,1,117,0,114,92,113,8,124,7,106, + 7,100,1,117,1,114,110,124,7,2,0,1,0,83,0,124, + 7,106,8,125,8,124,8,100,1,117,0,114,132,116,9,100, + 3,131,1,130,1,124,4,160,10,124,8,161,1,1,0,113, + 8,116,11,160,12,124,1,100,1,161,2,125,7,124,4,124, + 7,95,8,124,7,83,0,41,4,122,63,70,105,110,100,32, + 116,104,101,32,108,111,97,100,101,114,32,111,114,32,110,97, + 109,101,115,112,97,99,101,95,112,97,116,104,32,102,111,114, + 32,116,104,105,115,32,109,111,100,117,108,101,47,112,97,99, + 107,97,103,101,32,110,97,109,101,46,78,114,230,0,0,0, + 122,19,115,112,101,99,32,109,105,115,115,105,110,103,32,108, + 111,97,100,101,114,41,13,114,189,0,0,0,114,111,0,0, + 0,218,5,98,121,116,101,115,114,85,1,0,0,114,156,0, + 0,0,114,230,0,0,0,114,86,1,0,0,114,168,0,0, + 0,114,206,0,0,0,114,145,0,0,0,114,195,0,0,0, + 114,162,0,0,0,114,211,0,0,0,41,9,114,220,0,0, + 0,114,167,0,0,0,114,68,0,0,0,114,229,0,0,0, + 218,14,110,97,109,101,115,112,97,99,101,95,112,97,116,104, + 90,5,101,110,116,114,121,114,81,1,0,0,114,214,0,0, + 0,114,169,0,0,0,114,10,0,0,0,114,10,0,0,0, + 114,11,0,0,0,218,9,95,103,101,116,95,115,112,101,99, + 103,5,0,0,115,40,0,0,0,0,5,4,1,8,1,14, + 1,2,1,10,1,8,1,10,1,14,2,12,1,8,1,2, + 1,10,1,8,1,6,1,8,1,8,5,12,2,12,1,6, + 1,122,20,80,97,116,104,70,105,110,100,101,114,46,95,103, + 101,116,95,115,112,101,99,99,4,0,0,0,0,0,0,0, + 0,0,0,0,6,0,0,0,5,0,0,0,67,0,0,0, + 115,100,0,0,0,124,2,100,1,117,0,114,14,116,0,106, + 1,125,2,124,0,160,2,124,1,124,2,124,3,161,3,125, + 4,124,4,100,1,117,0,114,40,100,1,83,0,124,4,106, + 3,100,1,117,0,114,92,124,4,106,4,125,5,124,5,114, + 86,100,1,124,4,95,5,116,6,124,1,124,5,124,0,106, + 2,131,3,124,4,95,4,124,4,83,0,100,1,83,0,110, + 4,124,4,83,0,100,1,83,0,41,2,122,141,84,114,121, + 32,116,111,32,102,105,110,100,32,97,32,115,112,101,99,32, + 102,111,114,32,39,102,117,108,108,110,97,109,101,39,32,111, + 110,32,115,121,115,46,112,97,116,104,32,111,114,32,39,112, + 97,116,104,39,46,10,10,32,32,32,32,32,32,32,32,84, + 104,101,32,115,101,97,114,99,104,32,105,115,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,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,101,110,116,114,121,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,10,32,32, - 32,32,32,32,32,32,97,110,100,32,99,97,99,104,101,32, - 105,116,46,32,73,102,32,110,111,32,102,105,110,100,101,114, - 32,105,115,32,97,118,97,105,108,97,98,108,101,44,32,115, - 116,111,114,101,32,78,111,110,101,46,10,10,32,32,32,32, - 32,32,32,32,114,14,0,0,0,78,41,7,114,24,0,0, - 0,114,81,0,0,0,114,26,1,0,0,114,21,0,0,0, - 114,73,1,0,0,218,8,75,101,121,69,114,114,111,114,114, - 77,1,0,0,41,3,114,216,0,0,0,114,65,0,0,0, - 114,75,1,0,0,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,218,20,95,112,97,116,104,95,105,109,112,111, - 114,116,101,114,95,99,97,99,104,101,66,5,0,0,115,22, - 0,0,0,0,8,8,1,2,1,12,1,12,3,8,1,2, - 1,14,1,12,1,10,1,16,1,122,31,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,0,0,0,0,6,0,0,0,4,0,0,0,67, - 0,0,0,115,82,0,0,0,116,0,124,2,100,1,131,2, - 114,26,124,2,160,1,124,1,161,1,92,2,125,3,125,4, - 110,14,124,2,160,2,124,1,161,1,125,3,103,0,125,4, - 124,3,100,0,117,1,114,60,116,3,160,4,124,1,124,3, - 161,2,83,0,116,3,160,5,124,1,100,0,161,2,125,5, - 124,4,124,5,95,6,124,5,83,0,41,2,78,114,161,0, - 0,0,41,7,114,152,0,0,0,114,161,0,0,0,114,229, - 0,0,0,114,158,0,0,0,114,224,0,0,0,114,207,0, - 0,0,114,202,0,0,0,41,6,114,216,0,0,0,114,163, - 0,0,0,114,75,1,0,0,114,164,0,0,0,114,165,0, - 0,0,114,210,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,218,16,95,108,101,103,97,99,121,95, - 103,101,116,95,115,112,101,99,88,5,0,0,115,18,0,0, - 0,0,4,10,1,16,2,10,1,4,1,8,1,12,1,12, - 1,6,1,122,27,80,97,116,104,70,105,110,100,101,114,46, - 95,108,101,103,97,99,121,95,103,101,116,95,115,112,101,99, - 78,99,4,0,0,0,0,0,0,0,0,0,0,0,9,0, - 0,0,5,0,0,0,67,0,0,0,115,166,0,0,0,103, - 0,125,4,124,2,68,0,93,134,125,5,116,0,124,5,116, - 1,116,2,102,2,131,2,115,28,113,8,124,0,160,3,124, - 5,161,1,125,6,124,6,100,1,117,1,114,8,116,4,124, - 6,100,2,131,2,114,70,124,6,160,5,124,1,124,3,161, - 2,125,7,110,12,124,0,160,6,124,1,124,6,161,2,125, - 7,124,7,100,1,117,0,114,92,113,8,124,7,106,7,100, - 1,117,1,114,110,124,7,2,0,1,0,83,0,124,7,106, - 8,125,8,124,8,100,1,117,0,114,132,116,9,100,3,131, - 1,130,1,124,4,160,10,124,8,161,1,1,0,113,8,116, - 11,160,12,124,1,100,1,161,2,125,7,124,4,124,7,95, - 8,124,7,83,0,41,4,122,63,70,105,110,100,32,116,104, - 101,32,108,111,97,100,101,114,32,111,114,32,110,97,109,101, - 115,112,97,99,101,95,112,97,116,104,32,102,111,114,32,116, - 104,105,115,32,109,111,100,117,108,101,47,112,97,99,107,97, - 103,101,32,110,97,109,101,46,78,114,226,0,0,0,122,19, - 115,112,101,99,32,109,105,115,115,105,110,103,32,108,111,97, - 100,101,114,41,13,114,185,0,0,0,114,108,0,0,0,218, - 5,98,121,116,101,115,114,79,1,0,0,114,152,0,0,0, - 114,226,0,0,0,114,80,1,0,0,114,164,0,0,0,114, - 202,0,0,0,114,141,0,0,0,114,191,0,0,0,114,158, - 0,0,0,114,207,0,0,0,41,9,114,216,0,0,0,114, - 163,0,0,0,114,65,0,0,0,114,225,0,0,0,218,14, - 110,97,109,101,115,112,97,99,101,95,112,97,116,104,90,5, - 101,110,116,114,121,114,75,1,0,0,114,210,0,0,0,114, - 165,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, - 0,0,0,218,9,95,103,101,116,95,115,112,101,99,103,5, - 0,0,115,40,0,0,0,0,5,4,1,8,1,14,1,2, - 1,10,1,8,1,10,1,14,2,12,1,8,1,2,1,10, - 1,8,1,6,1,8,1,8,5,12,2,12,1,6,1,122, - 20,80,97,116,104,70,105,110,100,101,114,46,95,103,101,116, - 95,115,112,101,99,99,4,0,0,0,0,0,0,0,0,0, - 0,0,6,0,0,0,5,0,0,0,67,0,0,0,115,100, - 0,0,0,124,2,100,1,117,0,114,14,116,0,106,1,125, - 2,124,0,160,2,124,1,124,2,124,3,161,3,125,4,124, - 4,100,1,117,0,114,40,100,1,83,0,124,4,106,3,100, - 1,117,0,114,92,124,4,106,4,125,5,124,5,114,86,100, - 1,124,4,95,5,116,6,124,1,124,5,124,0,106,2,131, - 3,124,4,95,4,124,4,83,0,100,1,83,0,110,4,124, - 4,83,0,100,1,83,0,41,2,122,141,84,114,121,32,116, - 111,32,102,105,110,100,32,97,32,115,112,101,99,32,102,111, - 114,32,39,102,117,108,108,110,97,109,101,39,32,111,110,32, - 115,121,115,46,112,97,116,104,32,111,114,32,39,112,97,116, - 104,39,46,10,10,32,32,32,32,32,32,32,32,84,104,101, - 32,115,101,97,114,99,104,32,105,115,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,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, - 32,32,32,32,32,32,32,32,78,41,7,114,21,0,0,0, - 114,65,0,0,0,114,83,1,0,0,114,164,0,0,0,114, - 202,0,0,0,114,205,0,0,0,114,45,1,0,0,41,6, - 114,216,0,0,0,114,163,0,0,0,114,65,0,0,0,114, - 225,0,0,0,114,210,0,0,0,114,82,1,0,0,114,10, - 0,0,0,114,10,0,0,0,114,11,0,0,0,114,226,0, - 0,0,135,5,0,0,115,26,0,0,0,0,6,8,1,6, - 1,14,1,8,1,4,1,10,1,6,1,4,3,6,1,16, - 1,4,2,6,2,122,20,80,97,116,104,70,105,110,100,101, - 114,46,102,105,110,100,95,115,112,101,99,99,3,0,0,0, - 0,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0, - 67,0,0,0,115,30,0,0,0,124,0,160,0,124,1,124, - 2,161,2,125,3,124,3,100,1,117,0,114,24,100,1,83, - 0,124,3,106,1,83,0,41,2,122,170,102,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,10,10,32, - 32,32,32,32,32,32,32,84,104,105,115,32,109,101,116,104, - 111,100,32,105,115,32,100,101,112,114,101,99,97,116,101,100, - 46,32,32,85,115,101,32,102,105,110,100,95,115,112,101,99, - 40,41,32,105,110,115,116,101,97,100,46,10,10,32,32,32, - 32,32,32,32,32,78,114,227,0,0,0,114,228,0,0,0, + 46,10,32,32,32,32,32,32,32,32,78,41,7,114,24,0, + 0,0,114,68,0,0,0,114,89,1,0,0,114,168,0,0, + 0,114,206,0,0,0,114,209,0,0,0,114,50,1,0,0, + 41,6,114,220,0,0,0,114,167,0,0,0,114,68,0,0, + 0,114,229,0,0,0,114,214,0,0,0,114,88,1,0,0, 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,114, - 229,0,0,0,159,5,0,0,115,8,0,0,0,0,8,12, - 1,8,1,4,1,122,22,80,97,116,104,70,105,110,100,101, - 114,46,102,105,110,100,95,109,111,100,117,108,101,99,1,0, + 230,0,0,0,135,5,0,0,115,26,0,0,0,0,6,8, + 1,6,1,14,1,8,1,4,1,10,1,6,1,4,3,6, + 1,16,1,4,2,6,2,122,20,80,97,116,104,70,105,110, + 100,101,114,46,102,105,110,100,95,115,112,101,99,99,3,0, 0,0,0,0,0,0,0,0,0,0,4,0,0,0,4,0, - 0,0,79,0,0,0,115,28,0,0,0,100,1,100,2,108, - 0,109,1,125,3,1,0,124,3,106,2,124,1,105,0,124, - 2,164,1,142,1,83,0,41,3,97,32,1,0,0,10,32, - 32,32,32,32,32,32,32,70,105,110,100,32,100,105,115,116, - 114,105,98,117,116,105,111,110,115,46,10,10,32,32,32,32, - 32,32,32,32,82,101,116,117,114,110,32,97,110,32,105,116, - 101,114,97,98,108,101,32,111,102,32,97,108,108,32,68,105, - 115,116,114,105,98,117,116,105,111,110,32,105,110,115,116,97, - 110,99,101,115,32,99,97,112,97,98,108,101,32,111,102,10, - 32,32,32,32,32,32,32,32,108,111,97,100,105,110,103,32, - 116,104,101,32,109,101,116,97,100,97,116,97,32,102,111,114, - 32,112,97,99,107,97,103,101,115,32,109,97,116,99,104,105, - 110,103,32,96,96,99,111,110,116,101,120,116,46,110,97,109, - 101,96,96,10,32,32,32,32,32,32,32,32,40,111,114,32, - 97,108,108,32,110,97,109,101,115,32,105,102,32,96,96,78, - 111,110,101,96,96,32,105,110,100,105,99,97,116,101,100,41, - 32,97,108,111,110,103,32,116,104,101,32,112,97,116,104,115, - 32,105,110,32,116,104,101,32,108,105,115,116,10,32,32,32, - 32,32,32,32,32,111,102,32,100,105,114,101,99,116,111,114, - 105,101,115,32,96,96,99,111,110,116,101,120,116,46,112,97, - 116,104,96,96,46,10,32,32,32,32,32,32,32,32,114,0, - 0,0,0,41,1,218,18,77,101,116,97,100,97,116,97,80, - 97,116,104,70,105,110,100,101,114,41,3,90,18,105,109,112, - 111,114,116,108,105,98,46,109,101,116,97,100,97,116,97,114, - 84,1,0,0,218,18,102,105,110,100,95,100,105,115,116,114, - 105,98,117,116,105,111,110,115,41,4,114,216,0,0,0,114, - 143,0,0,0,114,144,0,0,0,114,84,1,0,0,114,10, - 0,0,0,114,10,0,0,0,114,11,0,0,0,114,85,1, - 0,0,172,5,0,0,115,4,0,0,0,0,10,12,1,122, - 29,80,97,116,104,70,105,110,100,101,114,46,102,105,110,100, - 95,100,105,115,116,114,105,98,117,116,105,111,110,115,41,1, - 78,41,2,78,78,41,1,78,41,13,114,149,0,0,0,114, - 148,0,0,0,114,150,0,0,0,114,151,0,0,0,114,230, - 0,0,0,114,71,1,0,0,114,77,1,0,0,114,79,1, - 0,0,114,80,1,0,0,114,83,1,0,0,114,226,0,0, - 0,114,229,0,0,0,114,85,1,0,0,114,10,0,0,0, + 0,0,67,0,0,0,115,30,0,0,0,124,0,160,0,124, + 1,124,2,161,2,125,3,124,3,100,1,117,0,114,24,100, + 1,83,0,124,3,106,1,83,0,41,2,122,170,102,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,10, + 10,32,32,32,32,32,32,32,32,84,104,105,115,32,109,101, + 116,104,111,100,32,105,115,32,100,101,112,114,101,99,97,116, + 101,100,46,32,32,85,115,101,32,102,105,110,100,95,115,112, + 101,99,40,41,32,105,110,115,116,101,97,100,46,10,10,32, + 32,32,32,32,32,32,32,78,114,231,0,0,0,114,232,0, + 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, + 0,114,233,0,0,0,159,5,0,0,115,8,0,0,0,0, + 8,12,1,8,1,4,1,122,22,80,97,116,104,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,0,0,0,0,4,0,0,0, + 4,0,0,0,79,0,0,0,115,28,0,0,0,100,1,100, + 2,108,0,109,1,125,3,1,0,124,3,106,2,124,1,105, + 0,124,2,164,1,142,1,83,0,41,3,97,32,1,0,0, + 10,32,32,32,32,32,32,32,32,70,105,110,100,32,100,105, + 115,116,114,105,98,117,116,105,111,110,115,46,10,10,32,32, + 32,32,32,32,32,32,82,101,116,117,114,110,32,97,110,32, + 105,116,101,114,97,98,108,101,32,111,102,32,97,108,108,32, + 68,105,115,116,114,105,98,117,116,105,111,110,32,105,110,115, + 116,97,110,99,101,115,32,99,97,112,97,98,108,101,32,111, + 102,10,32,32,32,32,32,32,32,32,108,111,97,100,105,110, + 103,32,116,104,101,32,109,101,116,97,100,97,116,97,32,102, + 111,114,32,112,97,99,107,97,103,101,115,32,109,97,116,99, + 104,105,110,103,32,96,96,99,111,110,116,101,120,116,46,110, + 97,109,101,96,96,10,32,32,32,32,32,32,32,32,40,111, + 114,32,97,108,108,32,110,97,109,101,115,32,105,102,32,96, + 96,78,111,110,101,96,96,32,105,110,100,105,99,97,116,101, + 100,41,32,97,108,111,110,103,32,116,104,101,32,112,97,116, + 104,115,32,105,110,32,116,104,101,32,108,105,115,116,10,32, + 32,32,32,32,32,32,32,111,102,32,100,105,114,101,99,116, + 111,114,105,101,115,32,96,96,99,111,110,116,101,120,116,46, + 112,97,116,104,96,96,46,10,32,32,32,32,32,32,32,32, + 114,0,0,0,0,41,1,218,18,77,101,116,97,100,97,116, + 97,80,97,116,104,70,105,110,100,101,114,41,3,90,18,105, + 109,112,111,114,116,108,105,98,46,109,101,116,97,100,97,116, + 97,114,90,1,0,0,218,18,102,105,110,100,95,100,105,115, + 116,114,105,98,117,116,105,111,110,115,41,4,114,220,0,0, + 0,114,147,0,0,0,114,148,0,0,0,114,90,1,0,0, 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,114, - 70,1,0,0,36,5,0,0,115,34,0,0,0,8,2,4, - 2,2,1,10,12,2,1,10,12,2,1,10,21,2,1,10, - 14,2,1,12,31,2,1,12,23,2,1,12,12,2,1,114, - 70,1,0,0,99,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,64,0,0,0,115,90,0, + 91,1,0,0,172,5,0,0,115,4,0,0,0,0,10,12, + 1,122,29,80,97,116,104,70,105,110,100,101,114,46,102,105, + 110,100,95,100,105,115,116,114,105,98,117,116,105,111,110,115, + 41,1,78,41,2,78,78,41,1,78,41,13,114,153,0,0, + 0,114,152,0,0,0,114,154,0,0,0,114,155,0,0,0, + 114,234,0,0,0,114,77,1,0,0,114,83,1,0,0,114, + 85,1,0,0,114,86,1,0,0,114,89,1,0,0,114,230, + 0,0,0,114,233,0,0,0,114,91,1,0,0,114,10,0, + 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, + 0,114,76,1,0,0,36,5,0,0,115,34,0,0,0,8, + 2,4,2,2,1,10,12,2,1,10,12,2,1,10,21,2, + 1,10,14,2,1,12,31,2,1,12,23,2,1,12,12,2, + 1,114,76,1,0,0,99,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,3,0,0,0,64,0,0,0,115, + 90,0,0,0,101,0,90,1,100,0,90,2,100,1,90,3, + 100,2,100,3,132,0,90,4,100,4,100,5,132,0,90,5, + 101,6,90,7,100,6,100,7,132,0,90,8,100,8,100,9, + 132,0,90,9,100,19,100,11,100,12,132,1,90,10,100,13, + 100,14,132,0,90,11,101,12,100,15,100,16,132,0,131,1, + 90,13,100,17,100,18,132,0,90,14,100,10,83,0,41,20, + 218,10,70,105,108,101,70,105,110,100,101,114,122,172,70,105, + 108,101,45,98,97,115,101,100,32,102,105,110,100,101,114,46, + 10,10,32,32,32,32,73,110,116,101,114,97,99,116,105,111, + 110,115,32,119,105,116,104,32,116,104,101,32,102,105,108,101, + 32,115,121,115,116,101,109,32,97,114,101,32,99,97,99,104, + 101,100,32,102,111,114,32,112,101,114,102,111,114,109,97,110, + 99,101,44,32,98,101,105,110,103,10,32,32,32,32,114,101, + 102,114,101,115,104,101,100,32,119,104,101,110,32,116,104,101, + 32,100,105,114,101,99,116,111,114,121,32,116,104,101,32,102, + 105,110,100,101,114,32,105,115,32,104,97,110,100,108,105,110, + 103,32,104,97,115,32,98,101,101,110,32,109,111,100,105,102, + 105,101,100,46,10,10,32,32,32,32,99,2,0,0,0,0, + 0,0,0,0,0,0,0,5,0,0,0,6,0,0,0,7, + 0,0,0,115,112,0,0,0,103,0,125,3,124,2,68,0, + 93,32,92,2,137,0,125,4,124,3,160,0,135,0,102,1, + 100,1,100,2,132,8,124,4,68,0,131,1,161,1,1,0, + 113,8,124,3,124,0,95,1,124,1,112,54,100,3,124,0, + 95,2,116,3,124,0,106,2,131,1,115,86,116,4,116,5, + 160,6,161,0,124,0,106,2,131,2,124,0,95,2,100,4, + 124,0,95,7,116,8,131,0,124,0,95,9,116,8,131,0, + 124,0,95,10,100,5,83,0,41,6,122,154,73,110,105,116, + 105,97,108,105,122,101,32,119,105,116,104,32,116,104,101,32, + 112,97,116,104,32,116,111,32,115,101,97,114,99,104,32,111, + 110,32,97,110,100,32,97,32,118,97,114,105,97,98,108,101, + 32,110,117,109,98,101,114,32,111,102,10,32,32,32,32,32, + 32,32,32,50,45,116,117,112,108,101,115,32,99,111,110,116, + 97,105,110,105,110,103,32,116,104,101,32,108,111,97,100,101, + 114,32,97,110,100,32,116,104,101,32,102,105,108,101,32,115, + 117,102,102,105,120,101,115,32,116,104,101,32,108,111,97,100, + 101,114,10,32,32,32,32,32,32,32,32,114,101,99,111,103, + 110,105,122,101,115,46,99,1,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,3,0,0,0,51,0,0,0,115, + 22,0,0,0,124,0,93,14,125,1,124,1,136,0,102,2, + 86,0,1,0,113,2,100,0,83,0,114,72,0,0,0,114, + 10,0,0,0,114,45,1,0,0,169,1,114,168,0,0,0, + 114,10,0,0,0,114,11,0,0,0,114,12,0,0,0,201, + 5,0,0,114,13,0,0,0,122,38,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, + 114,99,0,0,0,114,132,0,0,0,78,41,11,114,195,0, + 0,0,218,8,95,108,111,97,100,101,114,115,114,68,0,0, + 0,114,88,0,0,0,114,70,0,0,0,114,27,0,0,0, + 114,84,0,0,0,218,11,95,112,97,116,104,95,109,116,105, + 109,101,218,3,115,101,116,218,11,95,112,97,116,104,95,99, + 97,99,104,101,218,19,95,114,101,108,97,120,101,100,95,112, + 97,116,104,95,99,97,99,104,101,41,5,114,146,0,0,0, + 114,68,0,0,0,218,14,108,111,97,100,101,114,95,100,101, + 116,97,105,108,115,90,7,108,111,97,100,101,114,115,114,216, + 0,0,0,114,10,0,0,0,114,93,1,0,0,114,11,0, + 0,0,114,236,0,0,0,195,5,0,0,115,20,0,0,0, + 0,4,4,1,12,1,26,1,6,2,10,1,10,1,18,1, + 6,1,8,1,122,19,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,0,0,0,0,1,0,0,0,2,0,0,0,67,0, + 0,0,115,10,0,0,0,100,1,124,0,95,0,100,2,83, + 0,41,3,122,31,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,114,132,0,0,0,78,41,1,114,95,1,0, + 0,114,17,1,0,0,114,10,0,0,0,114,10,0,0,0, + 114,11,0,0,0,114,77,1,0,0,211,5,0,0,115,2, + 0,0,0,0,2,122,28,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,0,0,0,0, + 3,0,0,0,3,0,0,0,67,0,0,0,115,42,0,0, + 0,124,0,160,0,124,1,161,1,125,2,124,2,100,1,117, + 0,114,26,100,1,103,0,102,2,83,0,124,2,106,1,124, + 2,106,2,112,38,103,0,102,2,83,0,41,2,122,197,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,44,32,111,114, + 32,116,104,101,32,110,97,109,101,115,112,97,99,101,10,32, + 32,32,32,32,32,32,32,112,97,99,107,97,103,101,32,112, + 111,114,116,105,111,110,115,46,32,82,101,116,117,114,110,115, + 32,40,108,111,97,100,101,114,44,32,108,105,115,116,45,111, + 102,45,112,111,114,116,105,111,110,115,41,46,10,10,32,32, + 32,32,32,32,32,32,84,104,105,115,32,109,101,116,104,111, + 100,32,105,115,32,100,101,112,114,101,99,97,116,101,100,46, + 32,32,85,115,101,32,102,105,110,100,95,115,112,101,99,40, + 41,32,105,110,115,116,101,97,100,46,10,10,32,32,32,32, + 32,32,32,32,78,41,3,114,230,0,0,0,114,168,0,0, + 0,114,206,0,0,0,41,3,114,146,0,0,0,114,167,0, + 0,0,114,214,0,0,0,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,114,165,0,0,0,217,5,0,0,115, + 8,0,0,0,0,7,10,1,8,1,8,1,122,22,70,105, + 108,101,70,105,110,100,101,114,46,102,105,110,100,95,108,111, + 97,100,101,114,99,6,0,0,0,0,0,0,0,0,0,0, + 0,7,0,0,0,6,0,0,0,67,0,0,0,115,26,0, + 0,0,124,1,124,2,124,3,131,2,125,6,116,0,124,2, + 124,3,124,6,124,4,100,1,141,4,83,0,41,2,78,114, + 205,0,0,0,41,1,114,217,0,0,0,41,7,114,146,0, + 0,0,114,215,0,0,0,114,167,0,0,0,114,68,0,0, + 0,90,4,115,109,115,108,114,229,0,0,0,114,168,0,0, + 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, + 114,89,1,0,0,229,5,0,0,115,8,0,0,0,0,1, + 10,1,8,1,2,255,122,20,70,105,108,101,70,105,110,100, + 101,114,46,95,103,101,116,95,115,112,101,99,78,99,3,0, + 0,0,0,0,0,0,0,0,0,0,14,0,0,0,9,0, + 0,0,67,0,0,0,115,126,1,0,0,100,1,125,3,124, + 1,160,0,100,2,161,1,100,3,25,0,125,4,122,24,116, + 1,124,0,106,2,112,34,116,3,160,4,161,0,131,1,106, + 5,125,5,87,0,110,22,4,0,116,6,121,64,1,0,1, + 0,1,0,100,4,125,5,89,0,110,2,48,0,124,5,124, + 0,106,7,107,3,114,90,124,0,160,8,161,0,1,0,124, + 5,124,0,95,7,116,9,131,0,114,112,124,0,106,10,125, + 6,124,4,160,11,161,0,125,7,110,10,124,0,106,12,125, + 6,124,4,125,7,124,7,124,6,118,0,114,216,116,13,124, + 0,106,2,124,4,131,2,125,8,124,0,106,14,68,0,93, + 58,92,2,125,9,125,10,100,5,124,9,23,0,125,11,116, + 13,124,8,124,11,131,2,125,12,116,15,124,12,131,1,114, + 148,124,0,160,16,124,10,124,1,124,12,124,8,103,1,124, + 2,161,5,2,0,1,0,83,0,113,148,116,17,124,8,131, + 1,125,3,124,0,106,14,68,0,93,112,92,2,125,9,125, + 10,122,20,116,13,124,0,106,2,124,4,124,9,23,0,131, + 2,125,12,87,0,110,24,4,0,116,18,144,1,121,18,1, + 0,1,0,1,0,89,0,1,0,100,6,83,0,48,0,116, + 19,106,20,100,7,124,12,100,3,100,8,141,3,1,0,124, + 7,124,9,23,0,124,6,118,0,114,222,116,15,124,12,131, + 1,114,222,124,0,160,16,124,10,124,1,124,12,100,6,124, + 2,161,5,2,0,1,0,83,0,113,222,124,3,144,1,114, + 122,116,19,160,20,100,9,124,8,161,2,1,0,116,19,160, + 21,124,1,100,6,161,2,125,13,124,8,103,1,124,13,95, + 22,124,13,83,0,100,6,83,0,41,10,122,111,84,114,121, + 32,116,111,32,102,105,110,100,32,97,32,115,112,101,99,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,10,10,32,32,32,32,32, + 32,32,32,82,101,116,117,114,110,115,32,116,104,101,32,109, + 97,116,99,104,105,110,103,32,115,112,101,99,44,32,111,114, + 32,78,111,110,101,32,105,102,32,110,111,116,32,102,111,117, + 110,100,46,10,32,32,32,32,32,32,32,32,70,114,99,0, + 0,0,114,48,0,0,0,114,132,0,0,0,114,236,0,0, + 0,78,122,9,116,114,121,105,110,103,32,123,125,41,1,90, + 9,118,101,114,98,111,115,105,116,121,122,25,112,111,115,115, + 105,98,108,101,32,110,97,109,101,115,112,97,99,101,32,102, + 111,114,32,123,125,41,23,114,106,0,0,0,114,78,0,0, + 0,114,68,0,0,0,114,27,0,0,0,114,84,0,0,0, + 114,38,1,0,0,114,79,0,0,0,114,95,1,0,0,218, + 11,95,102,105,108,108,95,99,97,99,104,101,114,30,0,0, + 0,114,98,1,0,0,114,133,0,0,0,114,97,1,0,0, + 114,70,0,0,0,114,94,1,0,0,114,83,0,0,0,114, + 89,1,0,0,114,85,0,0,0,114,113,0,0,0,114,162, + 0,0,0,114,177,0,0,0,114,211,0,0,0,114,206,0, + 0,0,41,14,114,146,0,0,0,114,167,0,0,0,114,229, + 0,0,0,90,12,105,115,95,110,97,109,101,115,112,97,99, + 101,90,11,116,97,105,108,95,109,111,100,117,108,101,114,197, + 0,0,0,90,5,99,97,99,104,101,90,12,99,97,99,104, + 101,95,109,111,100,117,108,101,90,9,98,97,115,101,95,112, + 97,116,104,114,46,1,0,0,114,215,0,0,0,90,13,105, + 110,105,116,95,102,105,108,101,110,97,109,101,90,9,102,117, + 108,108,95,112,97,116,104,114,214,0,0,0,114,10,0,0, + 0,114,10,0,0,0,114,11,0,0,0,114,230,0,0,0, + 234,5,0,0,115,78,0,0,0,0,5,4,1,14,1,2, + 1,24,1,12,1,10,1,10,1,8,1,6,2,6,1,6, + 1,10,2,6,1,4,2,8,1,12,1,14,1,8,1,10, + 1,8,1,26,4,8,2,14,1,2,1,20,1,14,1,10, + 1,16,1,12,1,8,1,10,1,4,255,10,2,6,1,12, + 1,12,1,8,1,4,1,122,20,70,105,108,101,70,105,110, + 100,101,114,46,102,105,110,100,95,115,112,101,99,99,1,0, + 0,0,0,0,0,0,0,0,0,0,9,0,0,0,10,0, + 0,0,67,0,0,0,115,188,0,0,0,124,0,106,0,125, + 1,122,22,116,1,160,2,124,1,112,22,116,1,160,3,161, + 0,161,1,125,2,87,0,110,28,4,0,116,4,116,5,116, + 6,102,3,121,56,1,0,1,0,1,0,103,0,125,2,89, + 0,110,2,48,0,116,7,106,8,160,9,100,1,161,1,115, + 82,116,10,124,2,131,1,124,0,95,11,110,74,116,10,131, + 0,125,3,124,2,68,0,93,56,125,4,124,4,160,12,100, + 2,161,1,92,3,125,5,125,6,125,7,124,6,114,134,100, + 3,160,13,124,5,124,7,160,14,161,0,161,2,125,8,110, + 4,124,5,125,8,124,3,160,15,124,8,161,1,1,0,113, + 92,124,3,124,0,95,11,116,7,106,8,160,9,116,16,161, + 1,114,184,100,4,100,5,132,0,124,2,68,0,131,1,124, + 0,95,17,100,6,83,0,41,7,122,68,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,114, + 20,0,0,0,114,99,0,0,0,114,90,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4, + 0,0,0,83,0,0,0,115,20,0,0,0,104,0,124,0, + 93,12,125,1,124,1,160,0,161,0,146,2,113,4,83,0, + 114,10,0,0,0,41,1,114,133,0,0,0,41,2,114,8, + 0,0,0,90,2,102,110,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,114,19,0,0,0,58,6,0,0,114, + 13,0,0,0,122,41,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,115,101,116,99,111,109,112,62,78, + 41,18,114,68,0,0,0,114,27,0,0,0,114,34,1,0, + 0,114,84,0,0,0,114,30,1,0,0,218,15,80,101,114, + 109,105,115,115,105,111,110,69,114,114,111,114,218,18,78,111, + 116,65,68,105,114,101,99,116,111,114,121,69,114,114,111,114, + 114,24,0,0,0,114,31,0,0,0,114,32,0,0,0,114, + 96,1,0,0,114,97,1,0,0,114,128,0,0,0,114,91, + 0,0,0,114,133,0,0,0,218,3,97,100,100,114,33,0, + 0,0,114,98,1,0,0,41,9,114,146,0,0,0,114,68, + 0,0,0,114,35,1,0,0,90,21,108,111,119,101,114,95, + 115,117,102,102,105,120,95,99,111,110,116,101,110,116,115,114, + 72,1,0,0,114,144,0,0,0,114,59,1,0,0,114,46, + 1,0,0,90,8,110,101,119,95,110,97,109,101,114,10,0, + 0,0,114,10,0,0,0,114,11,0,0,0,114,100,1,0, + 0,29,6,0,0,115,34,0,0,0,0,2,6,1,2,1, + 22,1,18,3,10,3,12,1,12,7,6,1,8,1,16,1, + 4,1,18,2,4,1,12,1,6,1,12,1,122,22,70,105, + 108,101,70,105,110,100,101,114,46,95,102,105,108,108,95,99, + 97,99,104,101,99,1,0,0,0,0,0,0,0,0,0,0, + 0,3,0,0,0,3,0,0,0,7,0,0,0,115,18,0, + 0,0,135,0,135,1,102,2,100,1,100,2,132,8,125,2, + 124,2,83,0,41,3,97,20,1,0,0,65,32,99,108,97, + 115,115,32,109,101,116,104,111,100,32,119,104,105,99,104,32, + 114,101,116,117,114,110,115,32,97,32,99,108,111,115,117,114, + 101,32,116,111,32,117,115,101,32,111,110,32,115,121,115,46, + 112,97,116,104,95,104,111,111,107,10,32,32,32,32,32,32, + 32,32,119,104,105,99,104,32,119,105,108,108,32,114,101,116, + 117,114,110,32,97,110,32,105,110,115,116,97,110,99,101,32, + 117,115,105,110,103,32,116,104,101,32,115,112,101,99,105,102, + 105,101,100,32,108,111,97,100,101,114,115,32,97,110,100,32, + 116,104,101,32,112,97,116,104,10,32,32,32,32,32,32,32, + 32,99,97,108,108,101,100,32,111,110,32,116,104,101,32,99, + 108,111,115,117,114,101,46,10,10,32,32,32,32,32,32,32, + 32,73,102,32,116,104,101,32,112,97,116,104,32,99,97,108, + 108,101,100,32,111,110,32,116,104,101,32,99,108,111,115,117, + 114,101,32,105,115,32,110,111,116,32,97,32,100,105,114,101, + 99,116,111,114,121,44,32,73,109,112,111,114,116,69,114,114, + 111,114,32,105,115,10,32,32,32,32,32,32,32,32,114,97, + 105,115,101,100,46,10,10,32,32,32,32,32,32,32,32,99, + 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, + 4,0,0,0,19,0,0,0,115,36,0,0,0,116,0,124, + 0,131,1,115,20,116,1,100,1,124,0,100,2,141,2,130, + 1,136,0,124,0,103,1,136,1,162,1,82,0,142,0,83, + 0,41,3,122,45,80,97,116,104,32,104,111,111,107,32,102, + 111,114,32,105,109,112,111,114,116,108,105,98,46,109,97,99, + 104,105,110,101,114,121,46,70,105,108,101,70,105,110,100,101, + 114,46,122,30,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,114,74,0,0,0,41,2,114,85,0,0,0,114,145, + 0,0,0,114,74,0,0,0,169,2,114,220,0,0,0,114, + 99,1,0,0,114,10,0,0,0,114,11,0,0,0,218,24, + 112,97,116,104,95,104,111,111,107,95,102,111,114,95,70,105, + 108,101,70,105,110,100,101,114,70,6,0,0,115,6,0,0, + 0,0,2,8,1,12,1,122,54,70,105,108,101,70,105,110, + 100,101,114,46,112,97,116,104,95,104,111,111,107,46,60,108, + 111,99,97,108,115,62,46,112,97,116,104,95,104,111,111,107, + 95,102,111,114,95,70,105,108,101,70,105,110,100,101,114,114, + 10,0,0,0,41,3,114,220,0,0,0,114,99,1,0,0, + 114,105,1,0,0,114,10,0,0,0,114,104,1,0,0,114, + 11,0,0,0,218,9,112,97,116,104,95,104,111,111,107,60, + 6,0,0,115,4,0,0,0,0,10,14,6,122,20,70,105, + 108,101,70,105,110,100,101,114,46,112,97,116,104,95,104,111, + 111,107,99,1,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,3,0,0,0,67,0,0,0,115,12,0,0,0, + 100,1,160,0,124,0,106,1,161,1,83,0,41,2,78,122, + 16,70,105,108,101,70,105,110,100,101,114,40,123,33,114,125, + 41,41,2,114,91,0,0,0,114,68,0,0,0,114,17,1, + 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, + 0,114,70,1,0,0,78,6,0,0,115,2,0,0,0,0, + 1,122,19,70,105,108,101,70,105,110,100,101,114,46,95,95, + 114,101,112,114,95,95,41,1,78,41,15,114,153,0,0,0, + 114,152,0,0,0,114,154,0,0,0,114,155,0,0,0,114, + 236,0,0,0,114,77,1,0,0,114,171,0,0,0,114,233, + 0,0,0,114,165,0,0,0,114,89,1,0,0,114,230,0, + 0,0,114,100,1,0,0,114,234,0,0,0,114,106,1,0, + 0,114,70,1,0,0,114,10,0,0,0,114,10,0,0,0, + 114,10,0,0,0,114,11,0,0,0,114,92,1,0,0,186, + 5,0,0,115,22,0,0,0,8,2,4,7,8,16,8,4, + 4,2,8,12,8,5,10,51,8,31,2,1,10,17,114,92, + 1,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,3,0,0,0,0,0,0,0,115,44,0,0, + 0,101,0,90,1,100,0,90,2,100,1,90,3,135,0,102, + 1,100,2,100,3,132,8,90,4,135,0,102,1,100,4,100, + 5,132,8,90,5,135,0,4,0,90,6,83,0,41,6,218, + 20,65,112,112,108,101,70,114,97,109,101,119,111,114,107,76, + 111,97,100,101,114,97,234,3,0,0,65,32,108,111,97,100, + 101,114,32,102,111,114,32,109,111,100,117,108,101,115,32,116, + 104,97,116,32,104,97,118,101,32,98,101,101,110,32,112,97, + 99,107,97,103,101,100,32,97,115,32,65,112,112,108,101,32, + 70,114,97,109,101,119,111,114,107,115,32,102,111,114,10,32, + 32,32,32,99,111,109,112,97,116,105,98,105,108,105,116,121, + 32,119,105,116,104,32,65,112,112,108,101,39,115,32,65,112, + 112,32,83,116,111,114,101,32,112,111,108,105,99,105,101,115, + 46,10,10,32,32,32,32,70,111,114,32,99,111,109,112,97, + 116,105,98,105,108,105,116,121,32,119,105,116,104,32,116,104, + 101,32,65,112,112,32,83,116,111,114,101,44,32,42,97,108, + 108,42,32,98,105,110,97,114,121,32,109,111,100,117,108,101, + 115,32,109,117,115,116,32,98,101,32,105,110,32,46,100,121, + 108,105,98,115,44,10,32,32,32,32,99,111,110,116,97,105, + 110,101,100,32,105,110,32,97,32,70,114,97,109,101,119,111, + 114,107,44,32,105,110,32,116,104,101,32,96,96,70,114,97, + 109,101,119,111,114,107,115,96,96,32,102,111,108,100,101,114, + 32,111,102,32,116,104,101,32,112,97,99,107,97,103,101,100, + 32,97,112,112,46,32,73,102,10,32,32,32,32,121,111,117, + 39,114,101,32,116,114,121,105,110,103,32,116,111,32,114,117, + 110,32,34,102,114,111,109,32,102,111,111,32,105,109,112,111, + 114,116,32,95,98,97,114,34,44,32,97,110,100,32,95,98, + 97,114,32,105,115,32,105,109,112,108,101,109,101,110,116,101, + 100,32,119,105,116,104,32,116,104,101,32,98,105,110,97,114, + 121,10,32,32,32,32,109,111,100,117,108,101,32,34,102,111, + 111,47,95,98,97,114,46,97,98,105,51,46,100,121,108,105, + 98,34,32,40,111,114,32,97,110,121,32,111,116,104,101,114, + 32,46,100,121,108,105,98,32,101,120,116,101,110,115,105,111, + 110,41,44,32,116,104,105,115,32,108,111,97,100,101,114,32, + 119,105,108,108,32,108,111,111,107,10,32,32,32,32,102,111, + 114,32,34,123,115,121,115,46,101,120,101,99,117,116,97,98, + 108,101,125,47,70,114,97,109,101,119,111,114,107,115,47,102, + 111,111,95,95,98,97,114,46,102,114,97,109,101,119,111,114, + 107,47,95,98,97,114,46,97,98,105,51,46,100,121,108,105, + 98,34,32,40,102,111,114,109,105,110,103,32,116,104,101,10, + 32,32,32,32,112,97,99,107,97,103,101,32,110,97,109,101, + 32,98,121,32,116,97,107,105,110,103,32,116,104,101,32,102, + 117,108,108,32,112,97,116,104,32,111,102,32,116,104,101,32, + 108,105,98,114,97,114,121,44,32,97,110,100,32,114,101,112, + 108,97,99,105,110,103,32,96,96,47,96,96,32,119,105,116, + 104,10,32,32,32,32,96,96,95,96,96,41,46,32,84,104, + 101,32,97,112,112,32,112,97,99,107,97,103,105,110,103,32, + 116,111,111,108,32,105,115,32,114,101,115,112,111,110,115,105, + 98,108,101,32,102,111,114,32,112,117,116,116,105,110,103,32, + 116,104,101,32,108,105,98,114,97,114,121,32,105,110,32,116, + 104,105,115,10,32,32,32,32,108,111,99,97,116,105,111,110, + 46,10,10,32,32,32,32,72,111,119,101,118,101,114,44,32, + 116,104,101,32,96,96,95,95,102,105,108,101,95,95,96,96, + 32,97,116,116,114,105,98,117,116,101,32,111,102,32,116,104, + 101,32,95,98,97,114,32,109,111,100,117,108,101,32,119,105, + 108,108,32,114,101,112,111,114,116,32,97,115,32,116,104,101, + 32,111,114,105,103,105,110,97,108,10,32,32,32,32,108,111, + 99,97,116,105,111,110,32,105,110,115,105,100,101,32,116,104, + 101,32,96,96,102,111,111,96,96,32,100,105,114,101,99,116, + 111,114,121,46,32,84,104,105,115,32,115,111,32,116,104,97, + 116,32,99,111,100,101,32,116,104,97,116,32,100,101,112,101, + 110,100,115,32,111,110,32,119,97,108,107,105,110,103,10,32, + 32,32,32,100,105,114,101,99,116,111,114,121,32,116,114,101, + 101,115,32,119,105,108,108,32,99,111,110,116,105,110,117,101, + 32,116,111,32,119,111,114,107,32,97,115,32,101,120,112,101, + 99,116,101,100,32,98,97,115,101,100,32,111,110,32,116,104, + 101,32,42,111,114,105,103,105,110,97,108,42,32,102,105,108, + 101,10,32,32,32,32,108,111,99,97,116,105,111,110,46,10, + 32,32,32,32,99,4,0,0,0,0,0,0,0,0,0,0, + 0,4,0,0,0,4,0,0,0,3,0,0,0,115,24,0, + 0,0,116,0,131,0,160,1,124,1,124,2,161,2,1,0, + 124,3,124,0,95,2,100,0,83,0,114,72,0,0,0,41, + 3,114,19,1,0,0,114,236,0,0,0,218,12,112,97,114, + 101,110,116,95,112,97,116,104,115,41,4,114,146,0,0,0, + 114,167,0,0,0,218,10,100,121,108,105,98,95,102,105,108, + 101,114,68,0,0,0,114,20,1,0,0,114,10,0,0,0, + 114,11,0,0,0,114,236,0,0,0,100,6,0,0,115,4, + 0,0,0,0,1,14,1,122,29,65,112,112,108,101,70,114, + 97,109,101,119,111,114,107,76,111,97,100,101,114,46,95,95, + 105,110,105,116,95,95,99,2,0,0,0,0,0,0,0,0, + 0,0,0,4,0,0,0,5,0,0,0,3,0,0,0,115, + 66,0,0,0,116,0,131,0,160,1,124,1,161,1,125,2, + 124,0,106,2,114,62,124,0,106,2,68,0,93,36,125,3, + 116,3,124,3,131,1,114,24,116,4,124,3,116,5,124,0, + 106,6,131,1,100,1,25,0,131,2,124,2,95,7,113,24, + 113,24,124,2,83,0,41,2,78,114,132,0,0,0,41,8, + 114,19,1,0,0,114,239,0,0,0,114,108,1,0,0,114, + 85,0,0,0,114,70,0,0,0,114,77,0,0,0,114,68, + 0,0,0,218,8,95,95,102,105,108,101,95,95,41,4,114, + 146,0,0,0,114,214,0,0,0,90,3,109,111,100,114,62, + 1,0,0,114,20,1,0,0,114,10,0,0,0,114,11,0, + 0,0,114,239,0,0,0,104,6,0,0,115,14,0,0,0, + 0,1,12,1,6,1,10,1,8,1,22,1,4,1,122,34, + 65,112,112,108,101,70,114,97,109,101,119,111,114,107,76,111, + 97,100,101,114,46,99,114,101,97,116,101,95,109,111,100,117, + 108,101,41,7,114,153,0,0,0,114,152,0,0,0,114,154, + 0,0,0,114,155,0,0,0,114,236,0,0,0,114,239,0, + 0,0,114,36,1,0,0,114,10,0,0,0,114,10,0,0, + 0,114,20,1,0,0,114,11,0,0,0,114,107,1,0,0, + 82,6,0,0,115,6,0,0,0,8,1,4,17,12,4,114, + 107,1,0,0,99,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,3,0,0,0,64,0,0,0,115,34,0, 0,0,101,0,90,1,100,0,90,2,100,1,90,3,100,2, - 100,3,132,0,90,4,100,4,100,5,132,0,90,5,101,6, - 90,7,100,6,100,7,132,0,90,8,100,8,100,9,132,0, - 90,9,100,19,100,11,100,12,132,1,90,10,100,13,100,14, - 132,0,90,11,101,12,100,15,100,16,132,0,131,1,90,13, - 100,17,100,18,132,0,90,14,100,10,83,0,41,20,218,10, - 70,105,108,101,70,105,110,100,101,114,122,172,70,105,108,101, - 45,98,97,115,101,100,32,102,105,110,100,101,114,46,10,10, - 32,32,32,32,73,110,116,101,114,97,99,116,105,111,110,115, - 32,119,105,116,104,32,116,104,101,32,102,105,108,101,32,115, - 121,115,116,101,109,32,97,114,101,32,99,97,99,104,101,100, - 32,102,111,114,32,112,101,114,102,111,114,109,97,110,99,101, - 44,32,98,101,105,110,103,10,32,32,32,32,114,101,102,114, - 101,115,104,101,100,32,119,104,101,110,32,116,104,101,32,100, - 105,114,101,99,116,111,114,121,32,116,104,101,32,102,105,110, - 100,101,114,32,105,115,32,104,97,110,100,108,105,110,103,32, - 104,97,115,32,98,101,101,110,32,109,111,100,105,102,105,101, - 100,46,10,10,32,32,32,32,99,2,0,0,0,0,0,0, - 0,0,0,0,0,5,0,0,0,6,0,0,0,7,0,0, - 0,115,112,0,0,0,103,0,125,3,124,2,68,0,93,32, - 92,2,137,0,125,4,124,3,160,0,135,0,102,1,100,1, - 100,2,132,8,124,4,68,0,131,1,161,1,1,0,113,8, - 124,3,124,0,95,1,124,1,112,54,100,3,124,0,95,2, - 116,3,124,0,106,2,131,1,115,86,116,4,116,5,160,6, - 161,0,124,0,106,2,131,2,124,0,95,2,100,4,124,0, - 95,7,116,8,131,0,124,0,95,9,116,8,131,0,124,0, - 95,10,100,5,83,0,41,6,122,154,73,110,105,116,105,97, - 108,105,122,101,32,119,105,116,104,32,116,104,101,32,112,97, - 116,104,32,116,111,32,115,101,97,114,99,104,32,111,110,32, - 97,110,100,32,97,32,118,97,114,105,97,98,108,101,32,110, - 117,109,98,101,114,32,111,102,10,32,32,32,32,32,32,32, - 32,50,45,116,117,112,108,101,115,32,99,111,110,116,97,105, - 110,105,110,103,32,116,104,101,32,108,111,97,100,101,114,32, - 97,110,100,32,116,104,101,32,102,105,108,101,32,115,117,102, - 102,105,120,101,115,32,116,104,101,32,108,111,97,100,101,114, - 10,32,32,32,32,32,32,32,32,114,101,99,111,103,110,105, - 122,101,115,46,99,1,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,3,0,0,0,51,0,0,0,115,22,0, - 0,0,124,0,93,14,125,1,124,1,136,0,102,2,86,0, - 1,0,113,2,100,0,83,0,114,69,0,0,0,114,10,0, - 0,0,114,40,1,0,0,169,1,114,164,0,0,0,114,10, - 0,0,0,114,11,0,0,0,114,12,0,0,0,201,5,0, - 0,114,13,0,0,0,122,38,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,114,96, - 0,0,0,114,129,0,0,0,78,41,11,114,191,0,0,0, - 218,8,95,108,111,97,100,101,114,115,114,65,0,0,0,114, - 85,0,0,0,114,67,0,0,0,114,24,0,0,0,114,81, - 0,0,0,218,11,95,112,97,116,104,95,109,116,105,109,101, - 218,3,115,101,116,218,11,95,112,97,116,104,95,99,97,99, - 104,101,218,19,95,114,101,108,97,120,101,100,95,112,97,116, - 104,95,99,97,99,104,101,41,5,114,142,0,0,0,114,65, - 0,0,0,218,14,108,111,97,100,101,114,95,100,101,116,97, - 105,108,115,90,7,108,111,97,100,101,114,115,114,212,0,0, - 0,114,10,0,0,0,114,87,1,0,0,114,11,0,0,0, - 114,232,0,0,0,195,5,0,0,115,20,0,0,0,0,4, - 4,1,12,1,26,1,6,2,10,1,10,1,18,1,6,1, - 8,1,122,19,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, - 0,0,0,0,1,0,0,0,2,0,0,0,67,0,0,0, - 115,10,0,0,0,100,1,124,0,95,0,100,2,83,0,41, - 3,122,31,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,114,129,0,0,0,78,41,1,114,89,1,0,0,114, - 13,1,0,0,114,10,0,0,0,114,10,0,0,0,114,11, - 0,0,0,114,71,1,0,0,211,5,0,0,115,2,0,0, - 0,0,2,122,28,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,0,0,0,0,3,0, - 0,0,3,0,0,0,67,0,0,0,115,42,0,0,0,124, - 0,160,0,124,1,161,1,125,2,124,2,100,1,117,0,114, - 26,100,1,103,0,102,2,83,0,124,2,106,1,124,2,106, - 2,112,38,103,0,102,2,83,0,41,2,122,197,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,44,32,111,114,32,116, - 104,101,32,110,97,109,101,115,112,97,99,101,10,32,32,32, - 32,32,32,32,32,112,97,99,107,97,103,101,32,112,111,114, - 116,105,111,110,115,46,32,82,101,116,117,114,110,115,32,40, - 108,111,97,100,101,114,44,32,108,105,115,116,45,111,102,45, - 112,111,114,116,105,111,110,115,41,46,10,10,32,32,32,32, - 32,32,32,32,84,104,105,115,32,109,101,116,104,111,100,32, - 105,115,32,100,101,112,114,101,99,97,116,101,100,46,32,32, - 85,115,101,32,102,105,110,100,95,115,112,101,99,40,41,32, - 105,110,115,116,101,97,100,46,10,10,32,32,32,32,32,32, - 32,32,78,41,3,114,226,0,0,0,114,164,0,0,0,114, - 202,0,0,0,41,3,114,142,0,0,0,114,163,0,0,0, - 114,210,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,114,161,0,0,0,217,5,0,0,115,8,0, - 0,0,0,7,10,1,8,1,8,1,122,22,70,105,108,101, - 70,105,110,100,101,114,46,102,105,110,100,95,108,111,97,100, - 101,114,99,6,0,0,0,0,0,0,0,0,0,0,0,7, - 0,0,0,6,0,0,0,67,0,0,0,115,26,0,0,0, - 124,1,124,2,124,3,131,2,125,6,116,0,124,2,124,3, - 124,6,124,4,100,1,141,4,83,0,41,2,78,114,201,0, - 0,0,41,1,114,213,0,0,0,41,7,114,142,0,0,0, - 114,211,0,0,0,114,163,0,0,0,114,65,0,0,0,90, - 4,115,109,115,108,114,225,0,0,0,114,164,0,0,0,114, - 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,83, - 1,0,0,229,5,0,0,115,8,0,0,0,0,1,10,1, - 8,1,2,255,122,20,70,105,108,101,70,105,110,100,101,114, - 46,95,103,101,116,95,115,112,101,99,78,99,3,0,0,0, - 0,0,0,0,0,0,0,0,14,0,0,0,9,0,0,0, - 67,0,0,0,115,126,1,0,0,100,1,125,3,124,1,160, - 0,100,2,161,1,100,3,25,0,125,4,122,24,116,1,124, - 0,106,2,112,34,116,3,160,4,161,0,131,1,106,5,125, - 5,87,0,110,22,4,0,116,6,121,64,1,0,1,0,1, - 0,100,4,125,5,89,0,110,2,48,0,124,5,124,0,106, - 7,107,3,114,90,124,0,160,8,161,0,1,0,124,5,124, - 0,95,7,116,9,131,0,114,112,124,0,106,10,125,6,124, - 4,160,11,161,0,125,7,110,10,124,0,106,12,125,6,124, - 4,125,7,124,7,124,6,118,0,114,216,116,13,124,0,106, - 2,124,4,131,2,125,8,124,0,106,14,68,0,93,58,92, - 2,125,9,125,10,100,5,124,9,23,0,125,11,116,13,124, - 8,124,11,131,2,125,12,116,15,124,12,131,1,114,148,124, - 0,160,16,124,10,124,1,124,12,124,8,103,1,124,2,161, - 5,2,0,1,0,83,0,113,148,116,17,124,8,131,1,125, - 3,124,0,106,14,68,0,93,112,92,2,125,9,125,10,122, - 20,116,13,124,0,106,2,124,4,124,9,23,0,131,2,125, - 12,87,0,110,24,4,0,116,18,144,1,121,18,1,0,1, - 0,1,0,89,0,1,0,100,6,83,0,48,0,116,19,106, - 20,100,7,124,12,100,3,100,8,141,3,1,0,124,7,124, - 9,23,0,124,6,118,0,114,222,116,15,124,12,131,1,114, - 222,124,0,160,16,124,10,124,1,124,12,100,6,124,2,161, - 5,2,0,1,0,83,0,113,222,124,3,144,1,114,122,116, - 19,160,20,100,9,124,8,161,2,1,0,116,19,160,21,124, - 1,100,6,161,2,125,13,124,8,103,1,124,13,95,22,124, - 13,83,0,100,6,83,0,41,10,122,111,84,114,121,32,116, - 111,32,102,105,110,100,32,97,32,115,112,101,99,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,10,10,32,32,32,32,32,32,32, - 32,82,101,116,117,114,110,115,32,116,104,101,32,109,97,116, - 99,104,105,110,103,32,115,112,101,99,44,32,111,114,32,78, - 111,110,101,32,105,102,32,110,111,116,32,102,111,117,110,100, - 46,10,32,32,32,32,32,32,32,32,70,114,96,0,0,0, - 114,45,0,0,0,114,129,0,0,0,114,232,0,0,0,78, - 122,9,116,114,121,105,110,103,32,123,125,41,1,90,9,118, - 101,114,98,111,115,105,116,121,122,25,112,111,115,115,105,98, - 108,101,32,110,97,109,101,115,112,97,99,101,32,102,111,114, - 32,123,125,41,23,114,103,0,0,0,114,75,0,0,0,114, - 65,0,0,0,114,24,0,0,0,114,81,0,0,0,114,33, - 1,0,0,114,76,0,0,0,114,89,1,0,0,218,11,95, - 102,105,108,108,95,99,97,99,104,101,114,27,0,0,0,114, - 92,1,0,0,114,130,0,0,0,114,91,1,0,0,114,67, - 0,0,0,114,88,1,0,0,114,80,0,0,0,114,83,1, - 0,0,114,82,0,0,0,114,110,0,0,0,114,158,0,0, - 0,114,173,0,0,0,114,207,0,0,0,114,202,0,0,0, - 41,14,114,142,0,0,0,114,163,0,0,0,114,225,0,0, - 0,90,12,105,115,95,110,97,109,101,115,112,97,99,101,90, - 11,116,97,105,108,95,109,111,100,117,108,101,114,193,0,0, - 0,90,5,99,97,99,104,101,90,12,99,97,99,104,101,95, - 109,111,100,117,108,101,90,9,98,97,115,101,95,112,97,116, - 104,114,41,1,0,0,114,211,0,0,0,90,13,105,110,105, - 116,95,102,105,108,101,110,97,109,101,90,9,102,117,108,108, - 95,112,97,116,104,114,210,0,0,0,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,114,226,0,0,0,234,5, - 0,0,115,78,0,0,0,0,5,4,1,14,1,2,1,24, - 1,12,1,10,1,10,1,8,1,6,2,6,1,6,1,10, - 2,6,1,4,2,8,1,12,1,14,1,8,1,10,1,8, - 1,26,4,8,2,14,1,2,1,20,1,14,1,10,1,16, - 1,12,1,8,1,10,1,4,255,10,2,6,1,12,1,12, - 1,8,1,4,1,122,20,70,105,108,101,70,105,110,100,101, - 114,46,102,105,110,100,95,115,112,101,99,99,1,0,0,0, - 0,0,0,0,0,0,0,0,9,0,0,0,10,0,0,0, - 67,0,0,0,115,188,0,0,0,124,0,106,0,125,1,122, - 22,116,1,160,2,124,1,112,22,116,1,160,3,161,0,161, - 1,125,2,87,0,110,28,4,0,116,4,116,5,116,6,102, - 3,121,56,1,0,1,0,1,0,103,0,125,2,89,0,110, - 2,48,0,116,7,106,8,160,9,100,1,161,1,115,82,116, - 10,124,2,131,1,124,0,95,11,110,74,116,10,131,0,125, - 3,124,2,68,0,93,56,125,4,124,4,160,12,100,2,161, - 1,92,3,125,5,125,6,125,7,124,6,114,134,100,3,160, - 13,124,5,124,7,160,14,161,0,161,2,125,8,110,4,124, - 5,125,8,124,3,160,15,124,8,161,1,1,0,113,92,124, - 3,124,0,95,11,116,7,106,8,160,9,116,16,161,1,114, - 184,100,4,100,5,132,0,124,2,68,0,131,1,124,0,95, - 17,100,6,83,0,41,7,122,68,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,114,20,0, - 0,0,114,96,0,0,0,114,87,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,4,0,0, - 0,83,0,0,0,115,20,0,0,0,104,0,124,0,93,12, - 125,1,124,1,160,0,161,0,146,2,113,4,83,0,114,10, - 0,0,0,41,1,114,130,0,0,0,41,2,114,8,0,0, - 0,90,2,102,110,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,114,19,0,0,0,58,6,0,0,114,13,0, - 0,0,122,41,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,115,101,116,99,111,109,112,62,78,41,18, - 114,65,0,0,0,114,24,0,0,0,114,30,1,0,0,114, - 81,0,0,0,114,26,1,0,0,218,15,80,101,114,109,105, - 115,115,105,111,110,69,114,114,111,114,218,18,78,111,116,65, - 68,105,114,101,99,116,111,114,121,69,114,114,111,114,114,21, - 0,0,0,114,28,0,0,0,114,29,0,0,0,114,90,1, - 0,0,114,91,1,0,0,114,125,0,0,0,114,88,0,0, - 0,114,130,0,0,0,218,3,97,100,100,114,30,0,0,0, - 114,92,1,0,0,41,9,114,142,0,0,0,114,65,0,0, - 0,114,31,1,0,0,90,21,108,111,119,101,114,95,115,117, - 102,102,105,120,95,99,111,110,116,101,110,116,115,114,66,1, - 0,0,114,140,0,0,0,114,54,1,0,0,114,41,1,0, - 0,90,8,110,101,119,95,110,97,109,101,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,114,94,1,0,0,29, - 6,0,0,115,34,0,0,0,0,2,6,1,2,1,22,1, - 18,3,10,3,12,1,12,7,6,1,8,1,16,1,4,1, - 18,2,4,1,12,1,6,1,12,1,122,22,70,105,108,101, - 70,105,110,100,101,114,46,95,102,105,108,108,95,99,97,99, - 104,101,99,1,0,0,0,0,0,0,0,0,0,0,0,3, - 0,0,0,3,0,0,0,7,0,0,0,115,18,0,0,0, - 135,0,135,1,102,2,100,1,100,2,132,8,125,2,124,2, - 83,0,41,3,97,20,1,0,0,65,32,99,108,97,115,115, - 32,109,101,116,104,111,100,32,119,104,105,99,104,32,114,101, - 116,117,114,110,115,32,97,32,99,108,111,115,117,114,101,32, - 116,111,32,117,115,101,32,111,110,32,115,121,115,46,112,97, - 116,104,95,104,111,111,107,10,32,32,32,32,32,32,32,32, - 119,104,105,99,104,32,119,105,108,108,32,114,101,116,117,114, - 110,32,97,110,32,105,110,115,116,97,110,99,101,32,117,115, - 105,110,103,32,116,104,101,32,115,112,101,99,105,102,105,101, - 100,32,108,111,97,100,101,114,115,32,97,110,100,32,116,104, - 101,32,112,97,116,104,10,32,32,32,32,32,32,32,32,99, - 97,108,108,101,100,32,111,110,32,116,104,101,32,99,108,111, - 115,117,114,101,46,10,10,32,32,32,32,32,32,32,32,73, - 102,32,116,104,101,32,112,97,116,104,32,99,97,108,108,101, - 100,32,111,110,32,116,104,101,32,99,108,111,115,117,114,101, - 32,105,115,32,110,111,116,32,97,32,100,105,114,101,99,116, - 111,114,121,44,32,73,109,112,111,114,116,69,114,114,111,114, - 32,105,115,10,32,32,32,32,32,32,32,32,114,97,105,115, - 101,100,46,10,10,32,32,32,32,32,32,32,32,99,1,0, - 0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0, - 0,0,19,0,0,0,115,36,0,0,0,116,0,124,0,131, - 1,115,20,116,1,100,1,124,0,100,2,141,2,130,1,136, - 0,124,0,103,1,136,1,162,1,82,0,142,0,83,0,41, - 3,122,45,80,97,116,104,32,104,111,111,107,32,102,111,114, - 32,105,109,112,111,114,116,108,105,98,46,109,97,99,104,105, - 110,101,114,121,46,70,105,108,101,70,105,110,100,101,114,46, - 122,30,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, - 114,71,0,0,0,41,2,114,82,0,0,0,114,141,0,0, - 0,114,71,0,0,0,169,2,114,216,0,0,0,114,93,1, - 0,0,114,10,0,0,0,114,11,0,0,0,218,24,112,97, - 116,104,95,104,111,111,107,95,102,111,114,95,70,105,108,101, - 70,105,110,100,101,114,70,6,0,0,115,6,0,0,0,0, - 2,8,1,12,1,122,54,70,105,108,101,70,105,110,100,101, - 114,46,112,97,116,104,95,104,111,111,107,46,60,108,111,99, - 97,108,115,62,46,112,97,116,104,95,104,111,111,107,95,102, - 111,114,95,70,105,108,101,70,105,110,100,101,114,114,10,0, - 0,0,41,3,114,216,0,0,0,114,93,1,0,0,114,99, - 1,0,0,114,10,0,0,0,114,98,1,0,0,114,11,0, - 0,0,218,9,112,97,116,104,95,104,111,111,107,60,6,0, - 0,115,4,0,0,0,0,10,14,6,122,20,70,105,108,101, - 70,105,110,100,101,114,46,112,97,116,104,95,104,111,111,107, - 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, - 0,3,0,0,0,67,0,0,0,115,12,0,0,0,100,1, - 160,0,124,0,106,1,161,1,83,0,41,2,78,122,16,70, - 105,108,101,70,105,110,100,101,114,40,123,33,114,125,41,41, - 2,114,88,0,0,0,114,65,0,0,0,114,13,1,0,0, - 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,114, - 64,1,0,0,78,6,0,0,115,2,0,0,0,0,1,122, - 19,70,105,108,101,70,105,110,100,101,114,46,95,95,114,101, - 112,114,95,95,41,1,78,41,15,114,149,0,0,0,114,148, - 0,0,0,114,150,0,0,0,114,151,0,0,0,114,232,0, - 0,0,114,71,1,0,0,114,167,0,0,0,114,229,0,0, - 0,114,161,0,0,0,114,83,1,0,0,114,226,0,0,0, - 114,94,1,0,0,114,230,0,0,0,114,100,1,0,0,114, - 64,1,0,0,114,10,0,0,0,114,10,0,0,0,114,10, - 0,0,0,114,11,0,0,0,114,86,1,0,0,186,5,0, - 0,115,22,0,0,0,8,2,4,7,8,16,8,4,4,2, - 8,12,8,5,10,51,8,31,2,1,10,17,114,86,1,0, - 0,99,4,0,0,0,0,0,0,0,0,0,0,0,6,0, - 0,0,8,0,0,0,67,0,0,0,115,144,0,0,0,124, - 0,160,0,100,1,161,1,125,4,124,0,160,0,100,2,161, - 1,125,5,124,4,115,66,124,5,114,36,124,5,106,1,125, - 4,110,30,124,2,124,3,107,2,114,56,116,2,124,1,124, - 2,131,2,125,4,110,10,116,3,124,1,124,2,131,2,125, - 4,124,5,115,84,116,4,124,1,124,2,124,4,100,3,141, - 3,125,5,122,36,124,5,124,0,100,2,60,0,124,4,124, - 0,100,1,60,0,124,2,124,0,100,4,60,0,124,3,124, - 0,100,5,60,0,87,0,110,18,4,0,116,5,121,138,1, - 0,1,0,1,0,89,0,110,2,48,0,100,0,83,0,41, - 6,78,218,10,95,95,108,111,97,100,101,114,95,95,218,8, - 95,95,115,112,101,99,95,95,114,87,1,0,0,90,8,95, - 95,102,105,108,101,95,95,90,10,95,95,99,97,99,104,101, - 100,95,95,41,6,218,3,103,101,116,114,164,0,0,0,114, - 39,1,0,0,114,32,1,0,0,114,213,0,0,0,218,9, + 100,3,132,0,90,4,100,7,100,5,100,6,132,1,90,5, + 100,4,83,0,41,8,218,20,65,112,112,108,101,70,114,97, + 109,101,119,111,114,107,70,105,110,100,101,114,122,167,65,32, + 102,105,110,100,101,114,32,102,111,114,32,109,111,100,117,108, + 101,115,32,116,104,97,116,32,104,97,118,101,32,98,101,101, + 110,32,112,97,99,107,97,103,101,100,32,97,115,32,65,112, + 112,108,101,32,70,114,97,109,101,119,111,114,107,115,10,32, + 32,32,32,102,111,114,32,99,111,109,112,97,116,105,98,105, + 108,105,116,121,32,119,105,116,104,32,65,112,112,108,101,39, + 115,32,65,112,112,32,83,116,111,114,101,32,112,111,108,105, + 99,105,101,115,46,10,10,32,32,32,32,83,101,101,32,65, + 112,112,108,101,70,114,97,109,101,119,111,114,107,76,111,97, + 100,101,114,32,102,111,114,32,100,101,116,97,105,108,115,46, + 10,32,32,32,32,99,2,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,2,0,0,0,67,0,0,0,115,10, + 0,0,0,124,1,124,0,95,0,100,0,83,0,114,72,0, + 0,0,41,1,218,15,102,114,97,109,101,119,111,114,107,115, + 95,112,97,116,104,114,249,0,0,0,114,10,0,0,0,114, + 10,0,0,0,114,11,0,0,0,114,236,0,0,0,120,6, + 0,0,115,2,0,0,0,0,1,122,29,65,112,112,108,101, + 70,114,97,109,101,119,111,114,107,70,105,110,100,101,114,46, + 95,95,105,110,105,116,95,95,78,99,4,0,0,0,0,0, + 0,0,0,0,0,0,8,0,0,0,6,0,0,0,67,0, + 0,0,115,104,0,0,0,124,1,160,0,100,1,161,1,100, + 2,25,0,125,4,116,1,68,0,93,80,125,5,116,2,124, + 0,106,3,124,1,155,0,100,3,157,2,124,4,155,0,124, + 5,155,0,157,2,131,3,125,6,116,4,160,5,100,4,124, + 6,161,2,1,0,116,6,124,6,131,1,114,18,116,7,124, + 1,124,6,124,2,131,3,125,7,116,4,160,8,124,1,124, + 7,161,2,2,0,1,0,83,0,113,18,100,0,83,0,41, + 5,78,114,99,0,0,0,114,132,0,0,0,122,10,46,102, + 114,97,109,101,119,111,114,107,122,36,76,111,111,107,105,110, + 103,32,102,111,114,32,65,112,112,108,101,32,70,114,97,109, + 101,119,111,114,107,32,100,121,108,105,98,32,123,125,41,9, + 218,5,115,112,108,105,116,114,49,1,0,0,114,70,0,0, + 0,114,112,1,0,0,114,162,0,0,0,114,177,0,0,0, + 114,83,0,0,0,114,107,1,0,0,114,228,0,0,0,41, + 8,114,146,0,0,0,114,167,0,0,0,114,68,0,0,0, + 114,229,0,0,0,114,144,0,0,0,114,136,0,0,0,114, + 109,1,0,0,114,168,0,0,0,114,10,0,0,0,114,10, + 0,0,0,114,11,0,0,0,114,230,0,0,0,123,6,0, + 0,115,16,0,0,0,0,1,14,2,8,1,28,1,12,1, + 8,1,12,1,18,2,122,30,65,112,112,108,101,70,114,97, + 109,101,119,111,114,107,70,105,110,100,101,114,46,102,105,110, + 100,95,115,112,101,99,41,1,78,41,6,114,153,0,0,0, + 114,152,0,0,0,114,154,0,0,0,114,155,0,0,0,114, + 236,0,0,0,114,230,0,0,0,114,10,0,0,0,114,10, + 0,0,0,114,10,0,0,0,114,11,0,0,0,114,111,1, + 0,0,114,6,0,0,115,6,0,0,0,8,1,4,5,8, + 3,114,111,1,0,0,99,4,0,0,0,0,0,0,0,0, + 0,0,0,6,0,0,0,8,0,0,0,67,0,0,0,115, + 144,0,0,0,124,0,160,0,100,1,161,1,125,4,124,0, + 160,0,100,2,161,1,125,5,124,4,115,66,124,5,114,36, + 124,5,106,1,125,4,110,30,124,2,124,3,107,2,114,56, + 116,2,124,1,124,2,131,2,125,4,110,10,116,3,124,1, + 124,2,131,2,125,4,124,5,115,84,116,4,124,1,124,2, + 124,4,100,3,141,3,125,5,122,36,124,5,124,0,100,2, + 60,0,124,4,124,0,100,1,60,0,124,2,124,0,100,4, + 60,0,124,3,124,0,100,5,60,0,87,0,110,18,4,0, + 116,5,121,138,1,0,1,0,1,0,89,0,110,2,48,0, + 100,0,83,0,41,6,78,218,10,95,95,108,111,97,100,101, + 114,95,95,218,8,95,95,115,112,101,99,95,95,114,93,1, + 0,0,114,110,1,0,0,90,10,95,95,99,97,99,104,101, + 100,95,95,41,6,218,3,103,101,116,114,168,0,0,0,114, + 44,1,0,0,114,37,1,0,0,114,217,0,0,0,218,9, 69,120,99,101,112,116,105,111,110,41,6,90,2,110,115,114, - 140,0,0,0,90,8,112,97,116,104,110,97,109,101,90,9, - 99,112,97,116,104,110,97,109,101,114,164,0,0,0,114,210, + 144,0,0,0,90,8,112,97,116,104,110,97,109,101,90,9, + 99,112,97,116,104,110,97,109,101,114,168,0,0,0,114,214, 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, 0,0,218,14,95,102,105,120,95,117,112,95,109,111,100,117, - 108,101,84,6,0,0,115,34,0,0,0,0,2,10,1,10, + 108,101,137,6,0,0,115,34,0,0,0,0,2,10,1,10, 1,4,1,4,1,8,1,8,1,12,2,10,1,4,1,14, - 1,2,1,8,1,8,1,8,1,12,1,12,2,114,105,1, + 1,2,1,8,1,8,1,8,1,12,1,12,2,114,118,1, 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,3, 0,0,0,3,0,0,0,67,0,0,0,115,38,0,0,0, 116,0,116,1,160,2,161,0,102,2,125,0,116,3,116,4, @@ -2672,15 +2828,15 @@ 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,41,46,10,32,32,32,32,41,7,114,19,1,0,0, - 114,187,0,0,0,218,18,101,120,116,101,110,115,105,111,110, - 95,115,117,102,102,105,120,101,115,114,32,1,0,0,114,126, - 0,0,0,114,39,1,0,0,114,112,0,0,0,41,3,90, + 101,115,41,46,10,32,32,32,32,41,7,114,23,1,0,0, + 114,191,0,0,0,218,18,101,120,116,101,110,115,105,111,110, + 95,115,117,102,102,105,120,101,115,114,37,1,0,0,114,129, + 0,0,0,114,44,1,0,0,114,115,0,0,0,41,3,90, 10,101,120,116,101,110,115,105,111,110,115,90,6,115,111,117, 114,99,101,90,8,98,121,116,101,99,111,100,101,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,114,208,0,0, - 0,107,6,0,0,115,8,0,0,0,0,5,12,1,8,1, - 8,1,114,208,0,0,0,99,1,0,0,0,0,0,0,0, + 0,0,114,10,0,0,0,114,11,0,0,0,114,212,0,0, + 0,160,6,0,0,115,8,0,0,0,0,5,12,1,8,1, + 8,1,114,212,0,0,0,99,1,0,0,0,0,0,0,0, 0,0,0,0,10,0,0,0,9,0,0,0,67,0,0,0, 115,132,1,0,0,124,0,97,0,116,0,106,1,97,1,116, 0,106,2,97,2,116,1,106,3,116,4,25,0,125,1,100, @@ -2726,12 +2882,12 @@ 18,125,1,116,0,124,1,131,1,100,0,107,2,86,0,1, 0,113,2,100,1,83,0,114,3,0,0,0,114,5,0,0, 0,114,7,0,0,0,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,114,12,0,0,0,136,6,0,0,114,13, + 114,11,0,0,0,114,12,0,0,0,189,6,0,0,114,13, 0,0,0,122,25,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,0, 0,0,0,122,30,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,24,0,0,0,114,59,0,0,0,114,50,0, + 32,110,116,114,27,0,0,0,114,62,0,0,0,114,53,0, 0,0,114,14,0,0,0,218,20,95,112,97,116,104,115,101, 112,115,95,119,105,116,104,95,99,111,108,111,110,99,1,0, 0,0,0,0,0,0,0,0,0,0,2,0,0,0,4,0, @@ -2739,94 +2895,107 @@ 14,125,1,100,0,124,1,155,0,157,2,146,2,113,4,83, 0,114,15,0,0,0,114,10,0,0,0,114,17,0,0,0, 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,114, - 19,0,0,0,153,6,0,0,114,13,0,0,0,122,25,95, + 19,0,0,0,206,6,0,0,114,13,0,0,0,122,25,95, 115,101,116,117,112,46,60,108,111,99,97,108,115,62,46,60, - 115,101,116,99,111,109,112,62,41,3,114,90,0,0,0,114, - 98,0,0,0,114,184,0,0,0,114,215,0,0,0,114,27, + 115,101,116,99,111,109,112,62,41,3,114,93,0,0,0,114, + 101,0,0,0,114,188,0,0,0,114,219,0,0,0,114,30, 0,0,0,122,4,46,112,121,119,122,6,95,100,46,112,121, - 100,84,78,41,18,114,158,0,0,0,114,21,0,0,0,114, - 187,0,0,0,114,56,1,0,0,114,149,0,0,0,218,3, + 100,84,78,41,18,114,162,0,0,0,114,24,0,0,0,114, + 191,0,0,0,114,61,1,0,0,114,153,0,0,0,218,3, 97,108,108,90,18,95,98,117,105,108,116,105,110,95,102,114, - 111,109,95,110,97,109,101,114,141,0,0,0,114,153,0,0, - 0,114,62,0,0,0,114,61,0,0,0,114,32,0,0,0, - 114,44,1,0,0,114,191,0,0,0,114,106,1,0,0,114, - 126,0,0,0,114,214,0,0,0,114,218,0,0,0,41,10, + 111,109,95,110,97,109,101,114,145,0,0,0,114,157,0,0, + 0,114,65,0,0,0,114,64,0,0,0,114,35,0,0,0, + 114,49,1,0,0,114,195,0,0,0,114,119,1,0,0,114, + 129,0,0,0,114,218,0,0,0,114,222,0,0,0,41,10, 218,17,95,98,111,111,116,115,116,114,97,112,95,109,111,100, 117,108,101,90,11,115,101,108,102,95,109,111,100,117,108,101, 90,10,111,115,95,100,101,116,97,105,108,115,90,10,98,117, - 105,108,116,105,110,95,111,115,114,50,0,0,0,114,59,0, + 105,108,116,105,110,95,111,115,114,53,0,0,0,114,62,0, 0,0,90,9,111,115,95,109,111,100,117,108,101,90,13,98, 117,105,108,116,105,110,95,110,97,109,101,115,90,12,98,117, 105,108,116,105,110,95,110,97,109,101,90,14,98,117,105,108, 116,105,110,95,109,111,100,117,108,101,114,10,0,0,0,114, 10,0,0,0,114,11,0,0,0,218,6,95,115,101,116,117, - 112,118,6,0,0,115,70,0,0,0,0,8,4,1,6,1, + 112,171,6,0,0,115,70,0,0,0,0,8,4,1,6,1, 6,2,10,3,22,1,12,2,22,1,8,1,10,1,10,1, 6,2,2,1,10,1,10,1,12,1,12,2,8,2,12,1, 12,1,18,1,22,3,8,1,10,1,10,1,8,1,12,1, 12,2,10,1,16,3,14,1,14,1,10,1,10,1,10,1, - 114,112,1,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,4,0,0,0,67,0,0,0,115,50, + 114,125,1,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,4,0,0,0,67,0,0,0,115,108, 0,0,0,116,0,124,0,131,1,1,0,116,1,131,0,125, 1,116,2,106,3,160,4,116,5,106,6,124,1,142,0,103, 1,161,1,1,0,116,2,106,7,160,8,116,9,161,1,1, - 0,100,1,83,0,41,2,122,41,73,110,115,116,97,108,108, - 32,116,104,101,32,112,97,116,104,45,98,97,115,101,100,32, - 105,109,112,111,114,116,32,99,111,109,112,111,110,101,110,116, - 115,46,78,41,10,114,112,1,0,0,114,208,0,0,0,114, - 21,0,0,0,114,76,1,0,0,114,191,0,0,0,114,86, - 1,0,0,114,100,1,0,0,218,9,109,101,116,97,95,112, - 97,116,104,114,61,0,0,0,114,70,1,0,0,41,2,114, - 111,1,0,0,90,17,115,117,112,112,111,114,116,101,100,95, - 108,111,97,100,101,114,115,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,218,8,95,105,110,115,116,97,108,108, - 175,6,0,0,115,8,0,0,0,0,2,8,1,6,1,20, - 1,114,114,1,0,0,41,1,114,86,0,0,0,41,1,78, - 41,3,78,78,78,41,2,114,0,0,0,0,114,0,0,0, - 0,41,1,84,41,1,78,41,1,78,41,81,114,151,0,0, - 0,114,187,0,0,0,114,90,0,0,0,114,21,0,0,0, - 114,98,0,0,0,114,184,0,0,0,114,28,0,0,0,90, - 11,95,77,83,95,87,73,78,68,79,87,83,114,108,1,0, - 0,114,24,0,0,0,114,215,0,0,0,114,107,1,0,0, - 114,50,0,0,0,114,110,1,0,0,114,59,0,0,0,114, - 135,0,0,0,114,57,0,0,0,114,62,0,0,0,114,109, - 1,0,0,114,31,0,0,0,90,37,95,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,95,66,89,84,69,83,95,75,69,89,114, - 30,0,0,0,114,32,0,0,0,114,39,0,0,0,114,44, - 0,0,0,114,46,0,0,0,114,67,0,0,0,114,74,0, - 0,0,114,75,0,0,0,114,79,0,0,0,114,80,0,0, - 0,114,82,0,0,0,114,85,0,0,0,114,94,0,0,0, - 218,4,116,121,112,101,218,8,95,95,99,111,100,101,95,95, - 114,186,0,0,0,114,37,0,0,0,114,172,0,0,0,114, - 36,0,0,0,114,41,0,0,0,114,3,1,0,0,114,115, - 0,0,0,114,111,0,0,0,114,126,0,0,0,114,112,0, - 0,0,90,23,68,69,66,85,71,95,66,89,84,69,67,79, - 68,69,95,83,85,70,70,73,88,69,83,90,27,79,80,84, - 73,77,73,90,69,68,95,66,89,84,69,67,79,68,69,95, - 83,85,70,70,73,88,69,83,114,120,0,0,0,114,127,0, - 0,0,114,134,0,0,0,114,136,0,0,0,114,138,0,0, - 0,114,160,0,0,0,114,167,0,0,0,114,176,0,0,0, - 114,180,0,0,0,114,182,0,0,0,114,189,0,0,0,114, - 194,0,0,0,114,195,0,0,0,114,200,0,0,0,218,6, - 111,98,106,101,99,116,114,209,0,0,0,114,213,0,0,0, - 114,214,0,0,0,114,231,0,0,0,114,244,0,0,0,114, - 6,1,0,0,114,32,1,0,0,114,39,1,0,0,114,44, - 1,0,0,114,19,1,0,0,114,45,1,0,0,114,68,1, - 0,0,114,70,1,0,0,114,86,1,0,0,114,105,1,0, - 0,114,208,0,0,0,114,112,1,0,0,114,114,1,0,0, - 114,10,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,218,8,60,109,111,100,117,108,101,62,1,0, - 0,0,115,170,0,0,0,4,22,8,1,8,1,8,1,8, - 1,8,3,10,1,4,1,8,1,10,2,8,3,4,1,10, - 2,6,2,22,1,8,1,8,1,10,1,14,4,4,1,4, - 1,2,1,2,255,4,4,8,17,8,5,8,5,8,6,4, - 1,10,30,8,6,8,8,8,10,8,9,8,5,8,7,6, - 1,10,8,8,5,10,22,10,127,0,20,16,1,12,2,4, - 1,4,2,6,2,6,2,8,2,16,71,8,40,8,19,8, - 12,8,12,8,28,8,17,8,33,8,28,8,24,10,13,10, - 10,10,11,8,14,6,3,4,1,2,255,12,68,14,64,14, - 29,16,127,0,17,14,72,18,45,18,26,4,3,18,58,14, - 69,14,42,14,127,0,23,14,127,0,27,10,23,8,11,8, - 57, + 0,116,2,106,10,100,1,118,0,114,104,116,11,116,12,116, + 2,106,13,131,1,100,2,25,0,100,3,131,2,125,2,116, + 14,160,15,100,4,124,2,161,2,1,0,116,2,106,7,160, + 8,116,16,124,2,131,1,161,1,1,0,100,5,83,0,41, + 6,122,41,73,110,115,116,97,108,108,32,116,104,101,32,112, + 97,116,104,45,98,97,115,101,100,32,105,109,112,111,114,116, + 32,99,111,109,112,111,110,101,110,116,115,46,62,3,0,0, + 0,114,23,0,0,0,114,22,0,0,0,114,21,0,0,0, + 114,0,0,0,0,90,10,70,114,97,109,101,119,111,114,107, + 115,122,41,65,100,100,105,110,103,32,65,112,112,108,101,32, + 70,114,97,109,101,119,111,114,107,32,100,121,108,105,98,32, + 102,105,110,100,101,114,32,97,116,32,123,125,78,41,17,114, + 125,1,0,0,114,212,0,0,0,114,24,0,0,0,114,82, + 1,0,0,114,195,0,0,0,114,92,1,0,0,114,106,1, + 0,0,218,9,109,101,116,97,95,112,97,116,104,114,64,0, + 0,0,114,76,1,0,0,114,31,0,0,0,114,70,0,0, + 0,114,77,0,0,0,90,10,101,120,101,99,117,116,97,98, + 108,101,114,162,0,0,0,114,177,0,0,0,114,111,1,0, + 0,41,3,114,124,1,0,0,90,17,115,117,112,112,111,114, + 116,101,100,95,108,111,97,100,101,114,115,90,17,102,114,97, + 109,101,119,111,114,107,115,95,102,111,108,100,101,114,114,10, + 0,0,0,114,10,0,0,0,114,11,0,0,0,218,8,95, + 105,110,115,116,97,108,108,228,6,0,0,115,16,0,0,0, + 0,2,8,1,6,1,20,1,12,1,10,1,20,1,12,1, + 114,127,1,0,0,41,1,114,89,0,0,0,41,1,78,41, + 3,78,78,78,41,2,114,0,0,0,0,114,0,0,0,0, + 41,1,84,41,1,78,41,1,78,41,83,114,155,0,0,0, + 114,191,0,0,0,114,93,0,0,0,114,24,0,0,0,114, + 101,0,0,0,114,188,0,0,0,114,31,0,0,0,90,11, + 95,77,83,95,87,73,78,68,79,87,83,114,121,1,0,0, + 114,27,0,0,0,114,219,0,0,0,114,120,1,0,0,114, + 53,0,0,0,114,123,1,0,0,114,62,0,0,0,114,139, + 0,0,0,114,60,0,0,0,114,65,0,0,0,114,122,1, + 0,0,114,34,0,0,0,90,37,95,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,95,66,89,84,69,83,95,75,69,89,114,33, + 0,0,0,114,35,0,0,0,114,42,0,0,0,114,47,0, + 0,0,114,49,0,0,0,114,70,0,0,0,114,77,0,0, + 0,114,78,0,0,0,114,82,0,0,0,114,83,0,0,0, + 114,85,0,0,0,114,88,0,0,0,114,97,0,0,0,218, + 4,116,121,112,101,218,8,95,95,99,111,100,101,95,95,114, + 190,0,0,0,114,40,0,0,0,114,176,0,0,0,114,39, + 0,0,0,114,44,0,0,0,114,7,1,0,0,114,118,0, + 0,0,114,114,0,0,0,114,129,0,0,0,114,115,0,0, + 0,90,23,68,69,66,85,71,95,66,89,84,69,67,79,68, + 69,95,83,85,70,70,73,88,69,83,90,27,79,80,84,73, + 77,73,90,69,68,95,66,89,84,69,67,79,68,69,95,83, + 85,70,70,73,88,69,83,114,123,0,0,0,114,130,0,0, + 0,114,138,0,0,0,114,140,0,0,0,114,142,0,0,0, + 114,164,0,0,0,114,171,0,0,0,114,180,0,0,0,114, + 184,0,0,0,114,186,0,0,0,114,193,0,0,0,114,198, + 0,0,0,114,199,0,0,0,114,204,0,0,0,218,6,111, + 98,106,101,99,116,114,213,0,0,0,114,217,0,0,0,114, + 218,0,0,0,114,235,0,0,0,114,248,0,0,0,114,10, + 1,0,0,114,37,1,0,0,114,44,1,0,0,114,49,1, + 0,0,114,23,1,0,0,114,50,1,0,0,114,74,1,0, + 0,114,76,1,0,0,114,92,1,0,0,114,107,1,0,0, + 114,111,1,0,0,114,118,1,0,0,114,212,0,0,0,114, + 125,1,0,0,114,127,1,0,0,114,10,0,0,0,114,10, + 0,0,0,114,10,0,0,0,114,11,0,0,0,218,8,60, + 109,111,100,117,108,101,62,1,0,0,0,115,174,0,0,0, + 4,22,8,1,8,1,8,1,8,1,8,3,10,1,4,1, + 8,1,10,2,8,3,4,1,10,2,6,2,22,1,8,1, + 8,1,10,1,14,4,4,1,4,1,2,1,2,255,4,4, + 8,17,8,5,8,5,8,6,4,1,10,30,8,6,8,8, + 8,10,8,9,8,5,8,7,6,1,10,8,8,5,10,22, + 10,127,0,20,16,1,12,2,4,1,4,2,6,2,6,2, + 8,2,16,71,8,40,8,19,8,12,8,12,8,28,8,17, + 8,33,8,28,8,24,10,13,10,10,10,11,8,14,6,3, + 4,1,2,255,12,68,14,64,14,29,16,127,0,17,14,72, + 18,45,18,26,4,3,18,58,14,69,14,42,14,127,0,23, + 14,127,0,25,16,32,14,23,10,23,8,11,8,57, }; diff --git a/Python/marshal.c b/Python/marshal.c index 651168da9f..201c2c2bca 100644 --- a/Python/marshal.c +++ b/Python/marshal.c @@ -14,6 +14,10 @@ #include "marshal.h" #include "pycore_hashtable.h" +#ifdef __APPLE__ +# include "TargetConditionals.h" +#endif /* __APPLE__ */ + /*[clinic input] module marshal [clinic start generated code]*/ @@ -33,9 +37,13 @@ * #if defined(MS_WINDOWS) && defined(_DEBUG) */ #if defined(MS_WINDOWS) -#define MAX_MARSHAL_STACK_DEPTH 1000 +# define MAX_MARSHAL_STACK_DEPTH 1000 #else -#define MAX_MARSHAL_STACK_DEPTH 2000 +# if TARGET_OS_IPHONE +# define MAX_MARSHAL_STACK_DEPTH 1500 +# else +# define MAX_MARSHAL_STACK_DEPTH 2000 +# endif #endif #define TYPE_NULL '0' diff --git a/Python/sysmodule.c b/Python/sysmodule.c index 67df01699c..6ca9d24bd7 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -43,6 +43,10 @@ extern const char *PyWin_DLLVersionString; #endif +#if defined(__APPLE__) +#include "TargetConditionals.h" +#endif + /*[clinic input] module sys [clinic start generated code]*/ @@ -2669,6 +2673,15 @@ goto error; #endif +#if TARGET_OS_IPHONE +# if TARGET_OS_SIMULATOR + res = PyDict_SetItemString(impl_info, "_simulator", Py_True); +# else + res = PyDict_SetItemString(impl_info, "_simulator", Py_False); +# endif + if (res < 0) + goto error; +#endif /* dict ready */ ns = _PyNamespace_New(impl_info); diff --git a/aclocal.m4 b/aclocal.m4 index e5e804276f..52102fe4bb 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.16.3 -*- Autoconf -*- +# generated automatically by aclocal 1.16.5 -*- Autoconf -*- -# Copyright (C) 1996-2020 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -130,7 +130,7 @@ # and this notice are preserved. This file is offered as-is, without any # warranty. -#serial 10 +#serial 11 AU_ALIAS([CHECK_SSL], [AX_CHECK_OPENSSL]) AC_DEFUN([AX_CHECK_OPENSSL], [ @@ -173,7 +173,7 @@ if ! $found; then OPENSSL_INCLUDES= for ssldir in $ssldirs; do - AC_MSG_CHECKING([for openssl/ssl.h in $ssldir]) + AC_MSG_CHECKING([for include/openssl/ssl.h in $ssldir]) if test -f "$ssldir/include/openssl/ssl.h"; then OPENSSL_INCLUDES="-I$ssldir/include" OPENSSL_LDFLAGS="-L$ssldir/lib" @@ -222,7 +222,7 @@ ]) # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -# serial 11 (pkg-config-0.29.1) +# serial 12 (pkg-config-0.29.2) dnl Copyright © 2004 Scott James Remnant . dnl Copyright © 2012-2015 Dan Nicholson @@ -264,7 +264,7 @@ dnl See the "Since" comment for each macro you use to see what version dnl of the macros you require. m4_defun([PKG_PREREQ], -[m4_define([PKG_MACROS_VERSION], [0.29.1]) +[m4_define([PKG_MACROS_VERSION], [0.29.2]) m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) ])dnl PKG_PREREQ @@ -365,7 +365,7 @@ AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no -AC_MSG_CHECKING([for $1]) +AC_MSG_CHECKING([for $2]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) @@ -375,11 +375,11 @@ See the pkg-config man page for more details.]) if test $pkg_failed = yes; then - AC_MSG_RESULT([no]) + AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` - else + else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs @@ -396,7 +396,7 @@ _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then - AC_MSG_RESULT([no]) + AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full @@ -497,71 +497,3 @@ AS_VAR_IF([$1], [""], [$5], [$4])dnl ])dnl PKG_CHECK_VAR -dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES, -dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND], -dnl [DESCRIPTION], [DEFAULT]) -dnl ------------------------------------------ -dnl -dnl Prepare a "--with-" configure option using the lowercase -dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and -dnl PKG_CHECK_MODULES in a single macro. -AC_DEFUN([PKG_WITH_MODULES], -[ -m4_pushdef([with_arg], m4_tolower([$1])) - -m4_pushdef([description], - [m4_default([$5], [build with ]with_arg[ support])]) - -m4_pushdef([def_arg], [m4_default([$6], [auto])]) -m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes]) -m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no]) - -m4_case(def_arg, - [yes],[m4_pushdef([with_without], [--without-]with_arg)], - [m4_pushdef([with_without],[--with-]with_arg)]) - -AC_ARG_WITH(with_arg, - AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),, - [AS_TR_SH([with_]with_arg)=def_arg]) - -AS_CASE([$AS_TR_SH([with_]with_arg)], - [yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)], - [auto],[PKG_CHECK_MODULES([$1],[$2], - [m4_n([def_action_if_found]) $3], - [m4_n([def_action_if_not_found]) $4])]) - -m4_popdef([with_arg]) -m4_popdef([description]) -m4_popdef([def_arg]) - -])dnl PKG_WITH_MODULES - -dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES, -dnl [DESCRIPTION], [DEFAULT]) -dnl ----------------------------------------------- -dnl -dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES -dnl check._[VARIABLE-PREFIX] is exported as make variable. -AC_DEFUN([PKG_HAVE_WITH_MODULES], -[ -PKG_WITH_MODULES([$1],[$2],,,[$3],[$4]) - -AM_CONDITIONAL([HAVE_][$1], - [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"]) -])dnl PKG_HAVE_WITH_MODULES - -dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES, -dnl [DESCRIPTION], [DEFAULT]) -dnl ------------------------------------------------------ -dnl -dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after -dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make -dnl and preprocessor variable. -AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES], -[ -PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4]) - -AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"], - [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])]) -])dnl PKG_HAVE_DEFINE_WITH_MODULES - diff --git a/config.sub b/config.sub index d74fb6deac..09ebc4287c 100755 --- a/config.sub +++ b/config.sub @@ -1121,7 +1121,7 @@ xscale-* | xscalee[bl]-*) cpu=`echo "$cpu" | sed 's/^xscale/arm/'` ;; - arm64-*) + arm64-* | arm64_32-*) cpu=aarch64 ;; @@ -1723,7 +1723,7 @@ | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ | hiux* | abug | nacl* | netware* | windows* \ - | os9* | macos* | osx* | ios* \ + | os9* | macos* | osx* | ios* | tvos* | watchos* \ | mpw* | magic* | mmixware* | mon960* | lnews* \ | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ | aos* | aros* | cloudabi* | sortix* | twizzler* \ @@ -1786,6 +1786,8 @@ ;; *-eabi* | *-gnueabi*) ;; + ios*-simulator | tvos*-simulator | watchos*-simulator) + ;; -*) # Blank kernel with real OS is always fine. ;; diff --git a/configure b/configure index b7be60eaa3..9790fe8ba6 100755 --- a/configure +++ b/configure @@ -655,6 +655,8 @@ DTRACE TCLTK_LIBS TCLTK_INCLUDES +LIBFFI_LIB +LIBFFI_LIBDIR LIBFFI_INCLUDEDIR PKG_CONFIG_LIBDIR PKG_CONFIG_PATH @@ -788,7 +790,6 @@ docdir oldincludedir includedir -runstatedir localstatedir sharedstatedir sysconfdir @@ -906,7 +907,6 @@ sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1159,15 +1159,6 @@ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; - -runstatedir | --runstatedir | --runstatedi | --runstated \ - | --runstate | --runstat | --runsta | --runst | --runs \ - | --run | --ru | --r) - ac_prev=runstatedir ;; - -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ - | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ - | --run=* | --ru=* | --r=*) - runstatedir=$ac_optarg ;; - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1305,7 +1296,7 @@ for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir runstatedir + libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1458,7 +1449,6 @@ --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -3316,6 +3306,15 @@ *-*-cygwin*) ac_sys_system=Cygwin ;; + *-apple-ios*) + ac_sys_system=iOS + ;; + *-apple-tvos*) + ac_sys_system=tvOS + ;; + *-apple-watchos*) + ac_sys_system=watchOS + ;; *-*-vxworks*) ac_sys_system=VxWorks ;; @@ -3357,24 +3356,93 @@ *-*-linux*) case "$host_cpu" in arm*) - _host_cpu=arm + _host_ident=arm ;; *) - _host_cpu=$host_cpu + _host_ident=$host_cpu esac ;; *-*-cygwin*) - _host_cpu= + _host_ident= + ;; + *-apple-ios*-simulator) + _host_os_min_version=`echo $host | cut -d '-' -f3` + case "$host_cpu" in + aarch64) + _host_ident=${_host_os_min_version:3}-iphonesimulator-arm64 + ;; + *) + _host_ident=${_host_os_min_version:3}-iphonesimulator-$host_cpu + esac + ;; + *-apple-ios*) + _host_os_min_version=`echo $host | cut -d '-' -f3` + case "$host_cpu" in + aarch64) + _host_ident=${_host_os_min_version:3}-iphoneos-arm64 + ;; + *) + _host_ident=${_host_os_min_version:3}-iphoneos-$host_cpu + esac + ;; + *-apple-tvos*-simulator) + _host_os_min_version=`echo $host | cut -d '-' -f3` + case "$host_cpu" in + aarch64) + _host_ident=${_host_os_min_version:3}-appletvsimulator-arm64 + ;; + *) + _host_ident=${_host_os_min_version:3}-appletvsimulator-$host_cpu + esac + ;; + *-apple-tvos*) + _host_os_min_version=`echo $host | cut -d '-' -f3` + case "$host_cpu" in + aarch64) + _host_ident=${_host_os_min_version:3}-appletvos-arm64 + ;; + *) + _host_ident=${_host_os_min_version:3}-appletvos-$host_cpu + esac + ;; + *-apple-watchos*-simulator) + _host_os_min_version=`echo $host | cut -d '-' -f3` + case "$host_cpu" in + aarch64) + _host_ident=${_host_os_min_version:3}-watchsimualtor-arm64 + ;; + *) + _host_ident=${_host_os_min_version:3}-watchsimualtor-$host_cpu + esac + ;; + *-apple-watchos*) + _host_os_min_version=`echo $host | cut -d '-' -f3` + case "$host_cpu" in + aarch64) + _host_ident=${_host_os_min_version:3}-watchosos-arm64_32 + ;; + *) + _host_ident=${_host_os_min_version:3}-watchosos-$host_cpu + esac + ;; + *-apple-*) + case "$host_cpu" in + arm*) + _host_ident=arm + ;; + *) + _host_ident=$host_cpu + esac ;; *-*-vxworks*) - _host_cpu=$host_cpu + _host_ident=$host_cpu ;; *) # for now, limit cross builds to known configurations MACHDEP="unknown" as_fn_error $? "cross build not supported for $host" "$LINENO" 5 esac - _PYTHON_HOST_PLATFORM="$MACHDEP${_host_cpu:+-$_host_cpu}" + _PYTHON_HOST_PLATFORM="$MACHDEP${_host_ident:+-$_host_ident}" fi # Some systems cannot stand _XOPEN_SOURCE being defined at all; they @@ -3441,6 +3509,13 @@ define_xopen_source=no;; Darwin/[12][0-9].*) define_xopen_source=no;; + # On iOS, defining _POSIX_C_SOURCE also disables platform specific features. + iOS/*) + define_xopen_source=no;; + tvOS/*) + define_xopen_source=no;; + watchOS/*) + define_xopen_source=no;; # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined # or has another value. By not (re)defining it, the defaults come in place. @@ -5347,7 +5422,42 @@ #elif defined(__gnu_hurd__) i386-gnu #elif defined(__APPLE__) - darwin +# include "TargetConditionals.h" +# if TARGET_OS_IOS +# if TARGET_OS_SIMULATOR +# if __x86_64__ + iphonesimulator-x86_64 +# else + iphonesimulator-arm64 +# endif +# else + iphoneos-arm64 +# endif +# elif TARGET_OS_TV +# if TARGET_OS_SIMULATOR +# if __x86_64__ + appletvsimulator-x86_64 +# else + appletvsimulator-arm64 +# endif +# else + appletvos-arm64 +# endif +# elif TARGET_OS_WATCH +# if TARGET_OS_SIMULATOR +# if __x86_64__ + watchsimulator-x86_64 +# else + watchsimulator-arm64 +# endif +# else + watchos-arm64_32 +# endif +# elif TARGET_OS_OSX + darwin +# else +# error unknown Apple platform +# endif #elif defined(__VXWORKS__) vxworks #else @@ -5371,6 +5481,12 @@ case $ac_sys_system in #( Darwin*) : MULTIARCH="" ;; #( + iOS) : + MULTIARCH="" ;; #( + tvOS) : + MULTIARCH="" ;; #( + watchOS) : + MULTIARCH="" ;; #( FreeBSD*) : MULTIARCH="" ;; #( *) : @@ -5378,8 +5494,6 @@ ;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MULTIARCH" >&5 -$as_echo "$MULTIARCH" >&6; } if test x$PLATFORM_TRIPLET != x && test x$MULTIARCH != x; then if test x$PLATFORM_TRIPLET != x$MULTIARCH; then @@ -5389,6 +5503,16 @@ MULTIARCH=$PLATFORM_TRIPLET fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MULTIARCH" >&5 +$as_echo "$MULTIARCH" >&6; } + +case $ac_sys_system in #( + iOS|tvOS|watchOS) : + SOABI_PLATFORM=`echo "$PLATFORM_TRIPLET" | cut -d '-' -f1` ;; #( + *) : + SOABI_PLATFORM=$PLATFORM_TRIPLET + ;; +esac if test x$MULTIARCH != x; then MULTIARCH_CPPFLAGS="-DMULTIARCH=\\\"$MULTIARCH\\\"" @@ -6234,11 +6358,23 @@ fi if test "$cross_compiling" = yes; then - case "$READELF" in - readelf|:) - as_fn_error $? "readelf for the host is required for cross builds" "$LINENO" 5 - ;; - esac + case "$host" in + *-apple-ios*) + # readelf not required for iOS cross builds. + ;; + *-apple-tvos*) + # readelf not required for tvOS cross builds. + ;; + *-apple-watchos*) + # readelf not required for watchOS cross builds. + ;; + *) + case "$READELF" in + readelf|:) + as_fn_error $? "readelf for the host is required for cross builds" "$LINENO" 5 + ;; + esac + esac fi @@ -9480,6 +9616,7 @@ esac ;; CYGWIN*) SHLIB_SUFFIX=.dll;; + iOS|tvOS|watchOS) SHLIB_SUFFIX=.dylib;; *) SHLIB_SUFFIX=.so;; esac fi @@ -9574,6 +9711,10 @@ BLDSHARED="$LDSHARED" fi ;; + iOS/*|tvOS/*|watchOS/*) + LDSHARED='$(CC) -dynamiclib -undefined dynamic_lookup' + LDCXXSHARED='$(CXX) -dynamiclib -undefined dynamic_lookup' + ;; Linux*|GNU*|QNX*|VxWorks*) LDSHARED='$(CC) -shared' LDCXXSHARED='$(CXX) -shared';; @@ -10642,23 +10783,35 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_system_ffi" >&5 $as_echo "$with_system_ffi" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - if test "$with_system_ffi" != "" + if test "$ac_sys_system" = "iOS" || test "$ac_sys_system" = "tvOS" || test "$ac_sys_system" = "watchOS" then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --with(out)-system-ffi is ignored on this platform" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Using user-provided libffi configuration" >&5 +$as_echo "$as_me: WARNING: Using user-provided libffi configuration" >&2;} + LIBFFI_LIBDIR="${LIBFFI_LIBDIR}" + LIBFFI_LIB="${LIBFFI_LIB}" + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + if test "$with_system_ffi" != "" + then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --with(out)-system-ffi is ignored on this platform" >&5 $as_echo "$as_me: WARNING: --with(out)-system-ffi is ignored on this platform" >&2;} + fi + with_system_ffi="yes" fi - with_system_ffi="yes" fi if test "$with_system_ffi" = "yes" && test -n "$PKG_CONFIG"; then LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`" else - LIBFFI_INCLUDEDIR="" + LIBFFI_INCLUDEDIR="${LIBFFI_INCLUDEDIR}" fi + + # Check for use of the system libmpdec library { $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-system-libmpdec" >&5 $as_echo_n "checking for --with-system-libmpdec... " >&6; } @@ -15431,7 +15584,7 @@ $as_echo "$ABIFLAGS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking SOABI" >&5 $as_echo_n "checking SOABI... " >&6; } -SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}${PLATFORM_TRIPLET:+-$PLATFORM_TRIPLET} +SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}${SOABI_PLATFORM:+-$SOABI_PLATFORM} { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SOABI" >&5 $as_echo "$SOABI" >&6; } @@ -15439,7 +15592,7 @@ if test "$Py_DEBUG" = 'true' -a "$with_trace_refs" != "yes"; then # Similar to SOABI but remove "d" flag from ABIFLAGS - ALT_SOABI='cpython-'`echo $VERSION | tr -d .``echo $ABIFLAGS | tr -d d`${PLATFORM_TRIPLET:+-$PLATFORM_TRIPLET} + ALT_SOABI='cpython-'`echo $VERSION | tr -d .``echo $ABIFLAGS | tr -d d`${SOABI_PLATFORM:+-$SOABI_PLATFORM} cat >>confdefs.h <<_ACEOF #define ALT_SOABI "${ALT_SOABI}" @@ -17516,8 +17669,8 @@ if ! $found; then OPENSSL_INCLUDES= for ssldir in $ssldirs; do - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for openssl/ssl.h in $ssldir" >&5 -$as_echo_n "checking for openssl/ssl.h in $ssldir... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for include/openssl/ssl.h in $ssldir" >&5 +$as_echo_n "checking for include/openssl/ssl.h in $ssldir... " >&6; } if test -f "$ssldir/include/openssl/ssl.h"; then OPENSSL_INCLUDES="-I$ssldir/include" OPENSSL_LDFLAGS="-L$ssldir/lib" diff --git a/configure.ac b/configure.ac index aa515da465..87037b9623 100644 --- a/configure.ac +++ b/configure.ac @@ -400,6 +400,15 @@ *-*-cygwin*) ac_sys_system=Cygwin ;; + *-apple-ios*) + ac_sys_system=iOS + ;; + *-apple-tvos*) + ac_sys_system=tvOS + ;; + *-apple-watchos*) + ac_sys_system=watchOS + ;; *-*-vxworks*) ac_sys_system=VxWorks ;; @@ -440,24 +449,93 @@ *-*-linux*) case "$host_cpu" in arm*) - _host_cpu=arm + _host_ident=arm ;; *) - _host_cpu=$host_cpu + _host_ident=$host_cpu esac ;; *-*-cygwin*) - _host_cpu= + _host_ident= + ;; + *-apple-ios*-simulator) + _host_os_min_version=`echo $host | cut -d '-' -f3` + case "$host_cpu" in + aarch64) + _host_ident=${_host_os_min_version:3}-iphonesimulator-arm64 + ;; + *) + _host_ident=${_host_os_min_version:3}-iphonesimulator-$host_cpu + esac + ;; + *-apple-ios*) + _host_os_min_version=`echo $host | cut -d '-' -f3` + case "$host_cpu" in + aarch64) + _host_ident=${_host_os_min_version:3}-iphoneos-arm64 + ;; + *) + _host_ident=${_host_os_min_version:3}-iphoneos-$host_cpu + esac + ;; + *-apple-tvos*-simulator) + _host_os_min_version=`echo $host | cut -d '-' -f3` + case "$host_cpu" in + aarch64) + _host_ident=${_host_os_min_version:3}-appletvsimulator-arm64 + ;; + *) + _host_ident=${_host_os_min_version:3}-appletvsimulator-$host_cpu + esac + ;; + *-apple-tvos*) + _host_os_min_version=`echo $host | cut -d '-' -f3` + case "$host_cpu" in + aarch64) + _host_ident=${_host_os_min_version:3}-appletvos-arm64 + ;; + *) + _host_ident=${_host_os_min_version:3}-appletvos-$host_cpu + esac + ;; + *-apple-watchos*-simulator) + _host_os_min_version=`echo $host | cut -d '-' -f3` + case "$host_cpu" in + aarch64) + _host_ident=${_host_os_min_version:3}-watchsimualtor-arm64 + ;; + *) + _host_ident=${_host_os_min_version:3}-watchsimualtor-$host_cpu + esac + ;; + *-apple-watchos*) + _host_os_min_version=`echo $host | cut -d '-' -f3` + case "$host_cpu" in + aarch64) + _host_ident=${_host_os_min_version:3}-watchosos-arm64_32 + ;; + *) + _host_ident=${_host_os_min_version:3}-watchosos-$host_cpu + esac + ;; + *-apple-*) + case "$host_cpu" in + arm*) + _host_ident=arm + ;; + *) + _host_ident=$host_cpu + esac ;; *-*-vxworks*) - _host_cpu=$host_cpu + _host_ident=$host_cpu ;; *) # for now, limit cross builds to known configurations MACHDEP="unknown" AC_MSG_ERROR([cross build not supported for $host]) esac - _PYTHON_HOST_PLATFORM="$MACHDEP${_host_cpu:+-$_host_cpu}" + _PYTHON_HOST_PLATFORM="$MACHDEP${_host_ident:+-$_host_ident}" fi # Some systems cannot stand _XOPEN_SOURCE being defined at all; they @@ -521,6 +599,13 @@ define_xopen_source=no;; Darwin/@<:@[12]@:>@@<:@0-9@:>@.*) define_xopen_source=no;; + # On iOS, defining _POSIX_C_SOURCE also disables platform specific features. + iOS/*) + define_xopen_source=no;; + tvOS/*) + define_xopen_source=no;; + watchOS/*) + define_xopen_source=no;; # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined # or has another value. By not (re)defining it, the defaults come in place. @@ -865,7 +950,42 @@ #elif defined(__gnu_hurd__) i386-gnu #elif defined(__APPLE__) - darwin +# include "TargetConditionals.h" +# if TARGET_OS_IOS +# if TARGET_OS_SIMULATOR +# if __x86_64__ + iphonesimulator-x86_64 +# else + iphonesimulator-arm64 +# endif +# else + iphoneos-arm64 +# endif +# elif TARGET_OS_TV +# if TARGET_OS_SIMULATOR +# if __x86_64__ + appletvsimulator-x86_64 +# else + appletvsimulator-arm64 +# endif +# else + appletvos-arm64 +# endif +# elif TARGET_OS_WATCH +# if TARGET_OS_SIMULATOR +# if __x86_64__ + watchsimulator-x86_64 +# else + watchsimulator-arm64 +# endif +# else + watchos-arm64_32 +# endif +# elif TARGET_OS_OSX + darwin +# else +# error unknown Apple platform +# endif #elif defined(__VXWORKS__) vxworks #else @@ -885,11 +1005,13 @@ AC_MSG_CHECKING([for multiarch]) AS_CASE([$ac_sys_system], [Darwin*], [MULTIARCH=""], + [iOS], [MULTIARCH=""], + [tvOS], [MULTIARCH=""], + [watchOS], [MULTIARCH=""], [FreeBSD*], [MULTIARCH=""], [MULTIARCH=$($CC --print-multiarch 2>/dev/null)] ) AC_SUBST([MULTIARCH]) -AC_MSG_RESULT([$MULTIARCH]) if test x$PLATFORM_TRIPLET != x && test x$MULTIARCH != x; then if test x$PLATFORM_TRIPLET != x$MULTIARCH; then @@ -899,6 +1021,12 @@ MULTIARCH=$PLATFORM_TRIPLET fi AC_SUBST(PLATFORM_TRIPLET) +AC_MSG_RESULT([$MULTIARCH]) + +AS_CASE([$ac_sys_system], + [iOS|tvOS|watchOS], [SOABI_PLATFORM=`echo "$PLATFORM_TRIPLET" | cut -d '-' -f1`], + [SOABI_PLATFORM=$PLATFORM_TRIPLET] +) if test x$MULTIARCH != x; then MULTIARCH_CPPFLAGS="-DMULTIARCH=\\\"$MULTIARCH\\\"" @@ -1223,11 +1351,23 @@ AC_CHECK_TOOLS([READELF], [readelf], [:]) if test "$cross_compiling" = yes; then - case "$READELF" in - readelf|:) - AC_MSG_ERROR([readelf for the host is required for cross builds]) - ;; - esac + case "$host" in + *-apple-ios*) + # readelf not required for iOS cross builds. + ;; + *-apple-tvos*) + # readelf not required for tvOS cross builds. + ;; + *-apple-watchos*) + # readelf not required for watchOS cross builds. + ;; + *) + case "$READELF" in + readelf|:) + AC_MSG_ERROR([readelf for the host is required for cross builds]) + ;; + esac + esac fi AC_SUBST(READELF) @@ -2589,6 +2729,7 @@ esac ;; CYGWIN*) SHLIB_SUFFIX=.dll;; + iOS|tvOS|watchOS) SHLIB_SUFFIX=.dylib;; *) SHLIB_SUFFIX=.so;; esac fi @@ -2681,6 +2822,10 @@ BLDSHARED="$LDSHARED" fi ;; + iOS/*|tvOS/*|watchOS/*) + LDSHARED='$(CC) -dynamiclib -undefined dynamic_lookup' + LDCXXSHARED='$(CXX) -dynamiclib -undefined dynamic_lookup' + ;; Linux*|GNU*|QNX*|VxWorks*) LDSHARED='$(CC) -shared' LDCXXSHARED='$(CXX) -shared';; @@ -3115,20 +3260,30 @@ esac AC_MSG_RESULT($with_system_ffi) else - AC_MSG_RESULT(yes) - if test "$with_system_ffi" != "" + if test "$ac_sys_system" = "iOS" || test "$ac_sys_system" = "tvOS" || test "$ac_sys_system" = "watchOS" then - AC_MSG_WARN([--with(out)-system-ffi is ignored on this platform]) + AC_MSG_RESULT(no) + AC_MSG_WARN([Using user-provided libffi configuration]) + LIBFFI_LIBDIR="${LIBFFI_LIBDIR}" + LIBFFI_LIB="${LIBFFI_LIB}" + else + AC_MSG_RESULT(yes) + if test "$with_system_ffi" != "" + then + AC_MSG_WARN([--with(out)-system-ffi is ignored on this platform]) + fi + with_system_ffi="yes" fi - with_system_ffi="yes" fi if test "$with_system_ffi" = "yes" && test -n "$PKG_CONFIG"; then LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`" else - LIBFFI_INCLUDEDIR="" + LIBFFI_INCLUDEDIR="${LIBFFI_INCLUDEDIR}" fi AC_SUBST(LIBFFI_INCLUDEDIR) +AC_SUBST(LIBFFI_LIBDIR) +AC_SUBST(LIBFFI_LIB) # Check for use of the system libmpdec library AC_MSG_CHECKING(for --with-system-libmpdec) @@ -4811,14 +4966,14 @@ AC_MSG_CHECKING(ABIFLAGS) AC_MSG_RESULT($ABIFLAGS) AC_MSG_CHECKING(SOABI) -SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}${PLATFORM_TRIPLET:+-$PLATFORM_TRIPLET} +SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}${SOABI_PLATFORM:+-$SOABI_PLATFORM} AC_MSG_RESULT($SOABI) # Release and debug (Py_DEBUG) ABI are compatible, but not Py_TRACE_REFS ABI if test "$Py_DEBUG" = 'true' -a "$with_trace_refs" != "yes"; then # Similar to SOABI but remove "d" flag from ABIFLAGS AC_SUBST(ALT_SOABI) - ALT_SOABI='cpython-'`echo $VERSION | tr -d .``echo $ABIFLAGS | tr -d d`${PLATFORM_TRIPLET:+-$PLATFORM_TRIPLET} + ALT_SOABI='cpython-'`echo $VERSION | tr -d .``echo $ABIFLAGS | tr -d d`${SOABI_PLATFORM:+-$SOABI_PLATFORM} AC_DEFINE_UNQUOTED(ALT_SOABI, "${ALT_SOABI}", [Alternative SOABI used in debug build to load C extensions built in release mode]) fi diff --git a/setup.py b/setup.py index 0bec170d3f..284eee3f51 100644 --- a/setup.py +++ b/setup.py @@ -63,6 +63,9 @@ MS_WINDOWS = (HOST_PLATFORM == 'win32') CYGWIN = (HOST_PLATFORM == 'cygwin') MACOS = (HOST_PLATFORM == 'darwin') +IOS = HOST_PLATFORM.startswith('ios-') +TVOS = HOST_PLATFORM.startswith('tvos-') +WATCHOS = HOST_PLATFORM.startswith('watchos-') AIX = (HOST_PLATFORM.startswith('aix')) VXWORKS = ('vxworks' in HOST_PLATFORM) CC = os.environ.get("CC") @@ -142,16 +145,20 @@ for var_name in make_vars: var = sysconfig.get_config_var(var_name) if var is not None: - m = re.search(r'--sysroot=([^"]\S*|"[^"]+")', var) - if m is not None: - sysroot = m.group(1).strip('"') - for subdir in subdirs: - if os.path.isabs(subdir): - subdir = subdir[1:] - path = os.path.join(sysroot, subdir) - if os.path.isdir(path): - dirs.append(path) - break + for pattern in [ + r'-isysroot\s*([^"]\S*|"[^"]+")', + r'--sysroot=([^"]\S*|"[^"]+")', + ]: + m = re.search(pattern, var) + if m is not None: + sysroot = m.group(1).strip('"') + for subdir in subdirs: + if os.path.isabs(subdir): + subdir = subdir[1:] + path = os.path.join(sysroot, subdir) + if os.path.isdir(path): + dirs.append(path) + break return dirs @@ -2122,6 +2129,11 @@ extra_compile_args.append('-DMACOSX') include_dirs.append('_ctypes/darwin') + if IOS or TVOS or WATCHOS: + sources.append('_ctypes/malloc_closure.c') + extra_compile_args.append('-DUSING_MALLOC_CLOSURE_DOT_C=1') + include_dirs.append('_ctypes/darwin') + elif HOST_PLATFORM == 'sunos5': # XXX This shouldn't be necessary; it appears that some # of the assembler code is non-PIC (i.e. it has relocations @@ -2151,7 +2163,8 @@ libraries=['m'])) ffi_inc = sysconfig.get_config_var("LIBFFI_INCLUDEDIR") - ffi_lib = None + ffi_lib_dir = sysconfig.get_config_var("LIBFFI_LIBDIR") + ffi_lib = sysconfig.get_config_var("LIBFFI_LIB") ffi_inc_dirs = self.inc_dirs.copy() if MACOS: @@ -2180,6 +2193,7 @@ for lib_name in ('ffi', 'ffi_pic'): if (self.compiler.find_library_file(self.lib_dirs, lib_name)): ffi_lib = lib_name + self.use_system_libffi = True break if ffi_inc and ffi_lib: @@ -2193,7 +2207,8 @@ ext.include_dirs.append(ffi_inc) ext.libraries.append(ffi_lib) - self.use_system_libffi = True + if ffi_lib_dir: + ext.library_dirs.append(ffi_lib_dir) if sysconfig.get_config_var('HAVE_LIBDL'): # for dlopen, see bpo-32647